なんでもエクセル(Nandemo Excel)

何でもエクセルでやってしまう そこのあなた。ようこそ

Power Query:1セルに入力したアンケート結果から集計する

Excelを利用している人の中には、「入力で楽して、計算で困る」人が結構な数いる。月ごとにシートを分けて、Excel方眼紙で表を作っちゃうような人はその部類である。

これは、とある人が入力したアンケート結果の記録である。

何かというと「問1は『1』、問2は『1』、問3は『3』、……問15は『3』」を1セルに入力したものだ。1セルずつ分けて入力しておけばなんてことないのに、Enterキーを押すのを面倒がって、文字列の状態で1セルに入力してしまったのである。計算できるなら別にそれでもいいけど。

アンケートなんて後で集計すると分かっているのだから、「計算できるように入力する」のが鉄則だと思うのだが、後先考えずに入力するだけして「さて、集計どうやってやろう」となってしまったらしい。

愚痴っても仕方がないので、ここから集計する方法を考える。数式でやってもいいけど今回はクエリでやってしまおう。データ範囲のセル範囲は「アンケート結果」として名前定義しているものとする。


[データ]→ [テーブルまたは範囲から]

これでクエリが作成される。右ペインの「クエリの設定」の適用したステップ欄に、「変更された型」というデータ型を指定するステップが勝手に追加されてしまうので、これは削除してしまおう(もしくはデータ型をテキストに変えておく)。でないと値が数値化されてしまう。

次はカスタム列を挿入する。


[列の追加]→[カスタム列] 新しい列名:カスタム カスタム列の式:= Text.ToList([Column1]) →[OK]

これで、データを1文字ずつのリストに切り離すことができた。Text.ToList関数は文字列を分解する時によく使うので、覚えておくと便利だと思う。

learn.microsoft.com

後はカスタム列だけにしてリストを展開すればいい。


カスタム列を右クリック[他の列の削除]

カスタム列の右横のアイコンをクリックし[新しい行に展開する]

これで入力したセルが複数行あっても、展開した時点で1列に並ぶことになる。

ここまでくれば通常運行。データ型を整数にしてからグループ化で集計するだけ。


カスタム列の左のアイコンをクリックして[整数]を選択

カスタム列を右クリックして[グループ化]

新しい列名:カウント 操作:行数のカウント →[OK]

これで完成。「閉じて次に読み込む」で好きなところに読み込めばおしまい。

クエリが使えるようになると、後先考えずに入力してから何とかしようとする人が更に増えるかもしれないな……