今回は、パワークエリで「データの並べ替え」を行う方法を紹介していこう。基本的には「昇順」または「降順」を指定するだけなので、すぐに使い方を覚えられるだろう。ただし、Excelとは仕様が異なる部分もあるため、その相違点についてよく学んでおく必要がある。特に複数の列を基準にデータを並べ替えるときは注意が必要だ。
パワークエリの並べ替え機能
今回は、パワークエリで「データの並べ替え」を行うときの操作手順を紹介していこう。Excelに出力した後に「データの並べ替え」を行っても構わないが、毎回、同じような操作を繰り返すのであれば、クエリ(自動処理)の中に「並べ替え」の工程も組み込んでおいたほうが効率的だ。よって、パワークエリで「データの並べ替え」を行う方法も覚えておく必要がある。
さっそく、操作手順を紹介していこう。データを並べ替えるときは、基準とする列を選択して「昇順」または「降順」を指定する。「Power Query エディター」のリボンで操作するときは、以下の図に示したアイコンをクリックすればよい。
そのほか、各列の「フィルター」ボタンにも「昇順」または「降順」で並べ替える機能が用意されている。これらを選択してデータを並べ替えてもよい。
このように、「並べ替え」の操作そのものは何ら難しいものではない。ただし、通常のExcelとは仕様が異なる部分もあるので、その相違点をよく確認しておく必要がある。
データを50音順に並べ替え
まずは、データを「50音順」に並べ替える例から紹介していこう。以下の図は、「会員名簿」のデータを「Power Query エディター」に取得した例だ。このデータ表を「氏名カナ」の50音順に並べ替えるときは、「氏名カナ」の列を選択し、「昇順」のアイコンをクリックすればよい。
Excelに慣れている方なら、何の問題もない操作(処理)といえるはずだ。ただし、漢字を含むデータを並べ替えるときは注意が必要となる。今度は「氏名」の列を選択して「昇順」に並べ替えた例を示しておこう。
この場合は「文字コード順」にデータが並べ替えられるため、正しい50音順にはならない。これは、取得元のExcelファイルに“ふりがな”が記録されていた場合も同様だ。「Power Query エディター」には“ふりがな”の情報が取得されない仕様になっている。このため、漢字を含む文字列を正しい50音順に並べ替えるには、別途「氏名カナ」などの列を用意しておく必要がある。
ちなみに、パワークエリでは「Unicode」の文字コード順に漢字が並べ替えられる仕様になっている。一方、通常のExcelは「Shift-JIS」の文字コード順に漢字が並べ替えられる(※)。このため、同じ漢字であっても、パワークエリとExcelでデータを並べ替えたときの結果は異なる。
(※)漢字に“ふりがな”の情報が含まれていない場合。“ふりがな”の情報がある場合は、その50音順にデータが並べ替えられる。
データを数値順に並べ替え
続いては、データを「数値順」に並べ替える例を紹介していこう。以下の図は、これまでに何度も紹介している「4月の売上」のデータを「Power Query エディター」に取得し、データ表を整理した例だ。
「売上」の列を選択して「降順」をクリックすると、「売上」の数値が大きい順にデータを並べ替えることができる。
こちらは、単に数値の大きい順(または小さい順)にデータを並べ替えるだけなので、特に注意すべき点は見当たらない。
データを日時順に並べ替え
同様の手順で「日付」や「時刻」を基準にデータを並べ替えることも可能だ。以下の図は、「生年月日」の列を基準にデータを「降順」に並べ替えた例だ。
この場合、生年月日が新しい順、すなわち「年齢の若い順」にデータを並べ替えられることになる。
複数の列を基準に並べ替え
複数の列を基準にデータを並べ替えたい場合もあるだろう。今度は、「店内飲食」と「テイクアウト」に分けて、それぞれ「数量」の大きい順にデータを並べ替える場合を考えてみよう。
まずは、通常のExcelで操作した例を紹介する。「数量」の列にあるセルを選択し、「降順」でデータを並べ替える。すると、「数量の大きい順」にデータを並べ替えることができる。
続いて、「提供方法」の「降順」にデータを並べ替える。すると、以下の図のような結果が得られる。
このように、異なる列で「並べ替え」を繰り返すことで、グループ別の並べ替えを実現することも可能だ。この場合、“後から指定した並べ替え”ほど優先順位は高くなる。その結果、「提供方法」で分類し、その中で「数量」の大きい順に並べ替える、という処理を実現できたことになる。
同様の処理手順を「Power Query エディター」でも行ってみよう。まずは、「数量」の「降順」にデータを並べ替える。
続いて、「提供方法」の列を選択し、「降順」でデータを並べ替えるように操作する。
この結果は以下の図のようになる。残念ながら「提供方法」のグループ分けは上手くいかず、単純に「数量」の大きい順にデータを並べ替えた結果になってしまう。
このような結果になるのは、「通常のExcel」と「Power Query エディター」で並べ替えの仕様が異なることが原因だ。「Power Query エディター」の場合、“先に指定した並べ替え”ほど優先順位が高くなる、という仕様になっている。通常のExcelとは逆だ。
よって、通常のExcelとは“逆の順番”で並べ替えを指定しなければならない。ということで、データの並べ替えをもう一度やり直してみよう。「並べ替えられた行」のステップを削除して、先ほど指定した「並べ替え」の処理を削除する。
並べ替えのステップを削除できたら、もう一度「並べ替え」を指定していこう。まずは、「提供方法」の降順に並べ替える。
続いて、「数量」の列を選択し、「降順」でデータを並べ替えるように操作する。
今度は、以下の図のような結果を得ることができた。「提供方法」で分類し、その中で「数量」の大きい順に並べ替える、という処理を実現できていることを確認できるだろう。
このように、パワークエリで“複数の列”を基準にデータを並べ替えるときは、優先順位の高い順に「並べ替え」の処理を指定していく必要がある。通常のExcelとは操作手順が逆になることに注意しなければならない。
参考までに、「並べ替えられた行」のステップに記録されているM言語を確認しておこう。
「並べ替え」の処理を連続して指定した場合、それぞれの「並べ替え」がまとめられて“1つのステップ”として記録される仕組みになっている。
今回の例の場合、並べ替えを行うTable.Sort(……)の中に、"提供方法"と"数量"の両方の「列名」が記述されている。また、いずれも並べ替えの順番に「降順」(Order.Descending)が指定されている。
このように、「並べ替え」の処理を連続して指定した場合は、それらが1つのTable.Sort(……)に統合される仕組みになっている。このため、「並べ替え」を2回連続して指定しても、その処理に対応するステップは1つだけになる。このような仕組みについても、あわせて覚えておく必要があるだろう。