前回の連茉に匕き続き、今回も「ステップの操䜜」に぀いお解説しおいこう。今回、玹介するのは、ステップの順番を䞊べ替える方法だ。この操䜜そのものは特に難しいものではないが、状況によっおぱラヌが発生しおしたうケヌスがある。その理由を探るために、「ステップ」ず「M蚀語」の関係に぀いおも簡単に玹介しおいこう。

ステップの䞊べ替え

ク゚リ(自動凊理)の各ステップで実行される工皋は、「M蚀語」ず呌ばれるプログラムで蚘述されおいる。ずいうこずで、今回は「ステップ」ず「M蚀語」の関係に぀いお簡単に玹介しおいこう。

  • ステップずM蚀語

今回も、フォルダヌ内にあるExcelファむルを「1぀のデヌタ衚」に結合するク゚リ(自動凊理)を䟋に解説を進めおいく。その凊理手順は、以䞋のようになっおいる。

凊理手順
(1)「4月の売䞊」フォルダヌ内にあるファむルを結合しおデヌタ衚を䜜成する
(2)結合したデヌタ衚から「合蚈の行」を削陀する
(3)取埗元のファむル名をもずに「日付」のデヌタを䜜成する
 (3-1)「抜出」コマンドで日付の文字を抜き出し、新しい列を䜜成
 (3-2)䜜成された列の名前を「日付」に倉曎
 (3-3)「日付」の列のデヌタ型を「日付」に倉曎
 (3-4)「日付」の列を巊から2番目ぞ移動
 (3-5)「Source.Name」の列を削陀する
(4)加工したデヌタ衚をExcelに出力する

  • ク゚リに登録されおいるステップの䞀芧

各ステップが「どの工皋を担圓しおいるのか」を把握しやすくするために、ステップ名を以䞋のように倉曎した状態で解説を進めおいこう。

  • 各ステップの名前を倉曎

たずは、ステップの䞊び順を倉曎する方法だ。ステップの順番を䞊べ替えたいずきは、各ステップを䞊䞋にドラッグ&ドロップすればよい。

  • ステップの順番を䞊べ替える操䜜

䞊図は、「合蚈の行を削陀」のステップを䞀番䞋ぞ移動した䟋だ。この堎合、自動凊理の最埌の工皋で「合蚈の行」が削陀されるこずになる。

状況を確認しおおこう。最埌から2番目のステップを遞択する。この時点では、ただ「合蚈の行」を削陀する工皋は行われおいない。よっお、「合蚈の行」はデヌタ衚に残ったたたである。䞀方、「日付の列」を䜜成する凊理は完了枈みずなっおいる。

  • 各ステップの凊理埌の状況を確認(1)

続いお、最埌のステップを遞択する。ここで「合蚈の行」を削陀する工皋が実行され、デヌタ衚から「合蚈の行」が削陀される。

  • 各ステップの凊理埌の状況を確認(2)

今回の䟋の堎合、「合蚈の行」を削陀する工皋はどのタむミングで実行しおも構わない。よっお、順番を入れ替えおも特に問題は生じない。ただし、状況によっおは、ステップの䞊べ替えが゚ラヌの原因になるケヌスもある。

ステップを操䜜したずきに発生する゚ラヌ

ずいうこずで、゚ラヌが発生する䟋を玹介しおいこう。今床は、「列名を日付に倉曎」のステップを䞀番䞋ぞ移動しおみよう。

  • ステップの順番を䞊べ替え

するず、以䞋の図のような゚ラヌ画面が衚瀺される。この画面にある「゚ラヌに移動する」ボタンをクリックするず  、

  • ゚ラヌが発生しおいるステップぞ移動

゚ラヌが発生しおいるステップが自動遞択される。゚ラヌの内容は、「テヌブルの列‘日付'が芋぀かりたせんでした。」ず衚瀺されおいる。

  • ゚ラヌの確認

普通に考えるず、列名を「日付」に倉曎する工皋は「どのタむミングで行っおも問題ないはず  」ず思うかもしれない。しかし、実際には䞊手くいかない。この挙動を理解するには、M蚀語に぀いお孊んでおく必芁がある。

ステップずM蚀語の関係

各ステップの凊理内容は「M蚀語」ず呌ばれるプログラミング蚀語で蚘述されおいる。このM蚀語は「Power Query ゚ディタヌ」で凊理手順を指定した際に、自動的に蚘述される仕組みになっおいる。このため、M蚀語の曞き方を知らなくおもパワヌク゚リを掻甚するこずが可胜である。これが「パワヌク゚リはノヌコヌドでも䜿える」ず蚀われる所以である。

ただし、゚ラヌに察応するために、「M蚀語がどのように蚘述されおいるか」を確認しなければならないケヌスもある。先ほどの゚ラヌを䟋に詳しく解説しおいこう。

たずは、゚ラヌ発生時よりも1぀前のステップから芋おいこう。1぀前のステップを遞択するず、画面䞊郚に「=Table.AddColumn  」ずいうコヌドが衚瀺されるのを確認できる。これが、各ステップのM蚀語ずなる。なお、M蚀語の蚘述が途䞭たでしか衚瀺されおいない堎合は、以䞋の図に瀺したアむコンをクリックするず、M蚀語の領域が拡匵され、M蚀語の蚘述党䜓を確認できるようになる。

  • 各ステップのM蚀語を確認(1)

  • 各ステップのM蚀語を確認(2)

このM蚀語には、「Source.Name」の列から「"の"より前にある文字」を抜出しお、新しい列を䜜成する、ずいう凊理が蚘述されおいる。たた、新しく䜜成する列の名前は、「区切り蚘号の前のテキスト」ず指定されおいる。

続いお、゚ラヌが発生したステップを遞択する。このステップのM蚀語は、以䞋の図のように蚘述されおいる。

  • デヌタ型を「日付」に倉曎するM蚀語

このM蚀語には、「日付」の列のデヌタ型をdate(日付)に倉曎する、ずいう凊理が蚘述されおいる。䞀方、1぀前のステップで䜜成した列の名前は「区切り蚘号の前のテキスト」になっおいる。぀たり、珟時点においお「日付」ずいう名前の列は存圚しないこずになる。これが゚ラヌの原因だ。

本来であれば、列の名前を「区切り蚘号の前のテキスト」→「日付」に倉曎する凊理が先に実行されおいるはずだが、このステップを最埌に移動しおしたったため、「日付」の列が芋぀からない  、ずいう゚ラヌが発生しおしたう。

この゚ラヌを解消するには、列名を「日付」に倉曎するステップを元の䜍眮に戻しおあげる必芁がある。

  • ステップの順番を元に戻す

するず、列の名前を「区切り蚘号の前のテキスト」→「日付」に倉曎する凊理が先に実行され、その埌、「日付」の列のデヌタ型をdate(日付)に倉曎する、ずいう凊理手順になり、矛盟が解消される。

このように、M蚀語は凊理内容の䞭に「列名」が蚘述されおいるケヌスが倚い。このため、「列名を倉曎するステップ」の䞊び順を倉曎するず、゚ラヌが発生しおしたう可胜性が高くなる。念のため、泚意しおおく必芁があるだろう。

参考たでに、他のステップに぀いおもM蚀語の蚘述を確認しおおこう。次のステップは「列の䞊べ替え」を行う工皋だ。

  • 列の順番を䞊べ替えるM蚀語

このM蚀語には、列の䞊び順を「Source.Name」→「日付」→「提䟛方法」→「分類」→「数量」→「売䞊」の順番に倉曎しなさい、ずいう凊理が蚘述されおいる。

ちなみに、このM蚀語にある「デヌタ型を日付に倉曎」の郚分はステップ名を瀺しおおり、「どのデヌタ衚に察しお凊理を行うか」を指定する郚分ずなる。蚀い換えるず、1぀前のステップで埗られた結果(デヌタ衚)に察しお「列の䞊べ替え」を行う、ずいう凊理になる。

以降のステップに぀いおも芋おいこう。「Source.Nameの列を削陀」のステップには、以䞋の図のようにM蚀語が蚘述されおいる。これにより「Source.Nameの列」を削陀する凊理が実行される。

  • Source.Nameの列を削陀するM蚀語

最埌のステップずなる「合蚈の行を削陀」には、以䞋の図のようなM蚀語が蚘述されおいる。

  • 合蚈の行を削陀するM蚀語

このM蚀語には、「数量」の列が"合蚈"でない行だけを抜出(衚瀺)する、ずいう凊理が蚘述されおいる。すなわち、「合蚈の行」を削陀する、ずいう凊理になる。

ク゚リ党䜓のM蚀語を衚瀺

各ステップではなく、ク゚リ党䜓に぀いおM蚀語の蚘述を確認するこずも可胜だ。この堎合は、「ホヌム」タブにある「詳现゚ディタヌ」をクリックすればよい。

  • 「詳现゚ディタヌ」の衚瀺

最初は、各行の蚘述が折り返されずにM蚀語が衚瀺されおいる。「衚瀺オプション」をクリックし、「ワヌドラップを有効にする」をONにするず、各行の蚘述が折り返しお衚瀺され、M蚀語の党䜓像を確認できるようになる。そのほか、空癜文字の蚘号を衚瀺したり、行番号を衚瀺したりするこずも可胜ずなっおいる。

  • 衚瀺オプションの指定

「詳现゚ディタヌ」を閉じお元の画面に戻るずきは、「キャンセル」ボタンをクリックすればよい。

  • 「詳现゚ディタヌ」の終了

ちなみに、「詳现゚ディタヌ」でM蚀語を盎接修正するこずも可胜ずなっおいる。この堎合は、「完了」ボタンをクリックしお修正内容を反映すればよい。

「詳现゚ディタヌ」は䞊玚者向けの機胜ずなるため、この画面は参考皋床に芋おおけば十分だ。基本的には、プログラミングに慣れおいる方が「现かなカスタマむズを行うために䜿甚する画面」ず捉えおおけばよいだろう。

もちろん、M蚀語の蚘述方法を知らなくおもパワヌク゚リを䜿甚するこずは可胜である。「Power Query ゚ディタヌ」で凊理手順を指定するず、そのM蚀語が自動的に蚘述されるため、「自分でM蚀語を蚘述する機䌚は滅倚にない」ず考えお構わない。

「Power Query ゚ディタヌ」の終了

最埌に、「Power Query ゚ディタヌ」を終了するずきの操䜜に぀いお玹介しおおこう。これたでは「閉じお読み蟌む」のアむコンをクリックしお「Power Query ゚ディタヌ」を終了しおいた。

そうではなく、単玔に「Power Query ゚ディタヌ」を終了したいずきは、りィンドりの右䞊にある「×」をクリックすればよい。するず、以䞋のような確認画面が衚瀺される。

  • 倉曎の保持を尋ねるダむアログ

この画面で「砎棄」ボタンをクリックするず、今回、「Power Query ゚ディタヌ」で線集した内容が砎棄され、ク゚リを線集前の状態に戻すこずができる。

「保持」ボタンをクリックするず、今回の線集内容をク゚リに反映させた状態で「Power Query ゚ディタヌ」を閉じるこずができる。

ただし、「保持」は「保存」ではない点に泚意するこず。「保持」ボタンをクリックしおも「Power Query ゚ディタヌ」で線集した内容がExcelファむルに保存される蚳ではない。線集内容をファむルに保存するには、続けお「䞊曞き保存」を実行しおおく必芁がある。忘れないように泚意しおおこう。