Excelを利用している人の中には、「入力で楽して、計算で困る」人が結構な数います。月ごとにシートを分けて、Excel方眼紙で表を作っちゃうような人はその部類に入るでしょう。
これは、とある人が入力したアンケート結果の記録です(実話)。
何かというと「問1は『1』、問2は『1』、問3は『3』、……問15は『3』」を1セルに入力したものです。1セルずつ分けて入力しておけばなんてことないのに、Enterキーを押すのを面倒がって、文字列の状態で1セルに入力してしまったわけです。計算できるなら別にそれでもいいんですが……
アンケートなんて後で集計すると分かっているのだから、「計算できるように入力する」のが鉄則だと思うんですが、後先考えずに入力するだけして「さて、集計どうやってやろう」となってしまったようです。
愚痴っても仕方がないので、ここから集計する方法を考えました。数式でやってもいいんですが、データ量が多かったのもあって(シートも分かれていました……)、今回はクエリでやってしまうことにしました。データ範囲のセル範囲は「アンケート結果」として名前定義しています。
[データ]→ [テーブルまたは範囲から]
これでクエリが作成されます。右ペインの「クエリの設定」の適用したステップ欄に、「変更された型」という、データ型を指定するステップが勝手に追加されてしまうので、これは削除してしまいましょう(もしくはデータ型をテキストに変えておきましょう)。でないと値が数値化されてしまいます。
次はカスタム列を挿入します。
[列の追加]→[カスタム列] 新しい列名:カスタム カスタム列の式:= Text.ToList([Column1]) →[OK]
これで、データを1文字ずつのリストに切り離すことができました。Text.ToList関数は文字列を分解する時によく使います。
後はカスタム列だけにしてリストを展開すればいいです。
カスタム列を右クリック[他の列の削除]
カスタム列の右横のアイコンをクリックし[新しい行に展開する]
これで入力したセルが複数行あっても、展開した時点で1列に並ぶことになります。
ここまでくれば通常運行。データ型を整数にしてからグループ化で集計するだけ。
カスタム列の左のアイコンをクリックして[整数]を選択
カスタム列を右クリックして[グループ化]
新しい列名:カウント 操作:行数のカウント →[OK]
これで完成です。「閉じて次に読み込む」で好きなところに読み込んでしまいましょう。
入力し終わってから集計について悩みだす人って、世の中からいなくならないでしょうかね……