前回は「データの並べ替え」について解説した。これに関連する機能として「インデックス列」の使い方を紹介していこう。このコマンドは「1、2、3、4、5、……」などの連番を自動作成してくれる機能となる。並べ替えたデータを元の順番に戻したり、より厳密な並べ替えを指定したりするときに活用できるので、ぜひ使い方を学んでおくとよい。
並べ替えたデータを元の順番に戻すには?
今回は、「1、2、3、4、5、……」などの連番を自動作成してくれる「インデックス列」の使い方を紹介していこう。前回の連載で紹介した「データの並べ替え」に関連する機能となるので、その活用方法を学んでおくとよい。
ということで、「インデックス列」の具体的な使い方を紹介していこう。以下の図は、名簿のデータを「Power Query エディター」に取得した例だ。
このデータ表を「氏名カナ」の昇順に並べ替えると、以下の図のような結果が得られる。前回の連載を一読していれば、特に問題のない内容といえるだろう。
では、この「並べ替え」を取り消して、元の並び順に戻したい場合はどうすればよいだろうか?
まだ「Power Query エディター」で作業している状況であれば、「並べ替えられた行」のステップを削除することで「並べ替え」の処理を取り消すことが可能だ。
一方、すでにデータ表をExcelに出力している場合は、対処方法がなくなってしまう。というのも、元の並び順に戻すための列(並べ替えの基準となる列)が存在しないからだ。よって、「元の並び順に戻すことは不可能……」という状況に陥ってしまう。
「元の並び順に戻す必要はない」というのであれば、このままでも特に問題はないだろう。しかし、そうでない場合は何らかの対策を施しておく必要がある。
インデックス列の追加
このように「元の並び順」に戻したいときに活用できるのが、「インデックス列」という機能だ。この機能を使うと、「1、2、3、4、5、……」などの連番を自動作成することが可能となる。
具体的な操作手順を解説して行こう。「列の追加」タブを選択し、「インデックス列」の▼をクリックする。続いて、連番の作成方法を選択する、連番を1から始める場合は「1から」を選択すればよい。当たり前の話であるが、この作業は“データを並べ替える前”に行っておくのが基本となる。
表の右端にインテックス列が追加され、各行に「1、2、3、4、5、……」の連番が自動入力される。
インテックス列が右端にあるのは少し変な気もするので、表の左端へ移動しておこう。この操作は「列名」のドラッグで実行できる。とはいえ、列数が多いと少しだけ面倒な作業になってしまうかもしれない。そこで、右クリックメニューを使った「列の移動」も覚えておくとよい。「列名」を右クリックし、「移動」→「先頭に移動」を選択する。
インデックス列が表の左端に移動される。あとは、列名を「No.」や「ID」などに変更するだけ。これで準備は完了となる。
以降は、目的にあわせて自由に「データの並べ替え」などの処理を指定していけばよい。ここでは、「氏名カナ」の昇順に並べ替えた場合を例に話を進めていこう。「閉じて読み込む」をクリックすると……、
先ほどのデータ表がExcelに出力される。現時点では「氏名カナ」の昇順にデータが並べ替えられているため、氏名の50音順にデータが並んでいることになる。
これを“元の並び順”に戻したいときは、インデックス列の「昇順」にデータを並べ替えればよい。
このように、インデックス列を作成しておくと、データをいつでも“元の並び順”に戻すことが可能となる。通常のExcelでもよく利用されているテクニックなので、Excelに慣れている方なら「すでに知っているよ!」という方も多いだろう。
ということで、続いては、パワークエリならではの「インデックス列」の活用方法を紹介していこう。
インデックス列を応用した並べ替え
今度は、3月の売上データを「Power Query エディター」に取得した例を使って解説を進めていこう。以下の図は「3月の売上」フォルダーに保存されている31個のExcelファイルを結合して取得した例となる。
第5回の連載でも紹介したように、フォルダー内にあるファイルを結合して取得するときは、「ファイル名の文字コード順」にデータが読み込まれる仕組みになっている。このため、現時点では3月の「10日」→「11日」→「12日」→ …… →「19日」→「1日」→「20日」→「21日」→ ……、という順番でデータが取得されている。
このままでは使いづらいので、「日付」の昇順にデータを並べ替えてみよう。すると、以下の図のような結果が得られた。正しく日付順にデータが並べ替えられているが、よく見ると少し不具合が発生しているようだ。
日付順に並べ替える前は「店内飲食のデータ4件」→「テイクアウトのデータ3件」という順番で各日のデータが並んでいた。これを日付順に並べ替えると、「同じ日付」の中でデータの並び順が変化していることに気付くと思う。
通常のExcelの場合、データを日付順に並べ替えても「同じ日付」の中でデータの並び順が変化することはない。一方、パワークエリでは、上図のように予想外の結果になってしまうケースがある。
このような場合にもインデックス列が活用できる。その具体的な例を紹介しておこう。データを日付順に並べ替える前の状態に戻し、インデックス列を追加する。続いて、インデックス列を表の左端へ移動し、列名を「No.」などに変更する。
これで準備は完了。日付順に並べ替える作業を行っていこう。「日付」の列を選択し、「昇順」コマンドをクリックする。
データが「日付」の昇順に並べ替えられる。続いて、「No.」の列(インデックス列)を選択し、「昇順」コマンドをクリックする。
前回の連載で紹介したように、「並べ替え」の処理を連続して指定すると「複数の列を基準にした並べ替え」として扱われる。上図のように操作した場合、「日付」→「No.」の優先順位で並べ替えが行われる。つまり、
(1)「日付」の昇順にデータを並べ替える
(2)「日付」が同じ場合は「No.」の昇順にデータを並べ替える
という処理になる。その結果、「同じ日付」のときは“元の並び順”を維持することが可能となる。
上図を見ると、「同じ日付」の中では「店内飲食のデータ4件」→「テイクアウトのデータ3件」という順番でデータが並んでいることを確認できるだろう。
このように、同じグループ内で“元の並び順”を維持したままデータを並べ替えたいときにもインデックス列が活用できる。並べ替え後にインデックス列が不要になったら、その時点でインデックス列を削除してしまっても構わない。より厳密に並べ替えを指定したいときのテクニックとして、覚えておくと役に立つだろう。
カスタムのインデックス列
最後に、カスタムのインデックス列について紹介しておこう。「インデックス列」の▼から「カスタム」を選択すると、開始番号と増分を指定した連番を作成することが可能となる。たとえば、「開始インデックス」に10000、「増分」に10を指定すると、「10000、10010、10020、10030、10040、……」という形式の連番を作成できる。
あまり使用頻度は高くないが、こういったカスタムの連番を作成することも可能である。あわせて覚えておくとよいだろう。