見出し画像

Power Queryの「名前が変更された列」のM言語を、関数で生成してみたハナシ

絶賛 職場でPower Queryの輪を広げ中🙆‍♀️

今まではタイトル行のあるファイルしか扱ったことがなかったのですが、先日初めてタイトル行のないテキストファイルを扱いました。

そのときは29項目もあって、大変めんどくさかったのです…

Power Queryの生成する列名のルールは決まっているので、なんかいい方法ないかな~🤔
そうだ!M言語を関数で生成したらいいんじゃん🤩

という訳で、やってみました~😋

① 「名前が変更された列」のM言語

こんな感じで書かれています

= Table.RenameColumns(変更された型,{{"Column1", "項目1"}, {"Column2", "項目2"}})

「Column1」が元の列名、「項目1」が変更したい列名です。
(。 ・ω・))フムフム、{} の中にダブルクォーテーションで囲った元の列名と変更したい列名を入れればいいのか。
で、複数の列名を変更したいときは、カンマでつなげると。

書き方のルールはわかった!!

② 大枠?のM言語

文字列として、始めと終わりのM言語を入力。

この「M言語2」の部分に、「{"Column1", "項目1"}」の形をカンマで繋げて入れたい訳です。

③ 中身?のM言語

こんな感じで作業列を準備。

A列には、「Column」と連番を結合したものを入力したいので、
="Column"&ROW(A1)
と入れたものを、オートフィルしてます。

B列は新しい列名を入力する列。
んで、A列とB列を「{"Column1", "項目1"}」の形になるように結合する関数をC列に設定。

一行目(C8セル)には、
="{"""&A8&""", """&B8&"""}"
と入力。

ダブルクォーテーションを文字列として入力したいので、ダブルクォーテーションを2つ入れるのがポイントです😎

二行目(C9セル)以降は、頭にカンマを付けたい&B列がブランクならブランクにしたいので
=IF(B9="","",",{"""&A9&""", """&B9&"""}")
と入力します。

そしてオートフィル。

こんな感じになります!

④ 作業列を結合

「M言語2」のところに、③で作成したC列を結合したいものを入力します。

B2セルには、
=CONCAT(C8:C22)
と入力。

こんな感じになります。

最後に、M言語1~3を結合。

B5セルに、
=CONCAT(B1:B3)
と入力。

これでM言語完成です…!👏✨

⑤ 実際に設定してみる

では、やってみましょーー!✊

Power Queryエディタが開くとブックが触れなくなってしまうので、B5セルをコピーしておくのがポイントです。

新規ブックを開いて…

データメニューの「テキストまたはCSVから」。

テキストファイルを選択して、「インポート」。

無事取り込まれたのを確認して、「データの変換」。

とりあえずステップを追加したいので、ひとつ列名を適当に変更してみます。

列名をダブルクリックして、名前変更。

では!!

作成されたステップの = の後ろをコピーしておいたものに変更します…!!

ぺたっ!

からのEnter!!

じゃじゃーーーーん✨✨

無事に変更できました!!👏✨

⑥ 所感

よいわ😋 CONCAT関数も便利~🎵

列が多いと、手打ちもコピペも手間なので、Excelを活用するのは大変よいと思いました😍

手作業を減らすためのPower Queryなので、列名付けるのに苦労したくない!
一回作っておけば、列名が増えても行コピーするだけなので楽ちんです🥳


「クエリの追加」を活用する方法を知りましたので、別でnote書きました!


事務員が少しの背伸びでできる効率化を目指す🌈✨ 自分の好きなものを、楽しく発信していきたいです! いただいたサポートは学習費にあてさせていただきます🥰