アンケートの複数回答(カンマ区切り)をCOUNTIFで集計する方法

1つのセルに「iPhone,Android」のようにカンマ区切りで複数の回答が入力されたアンケートを、選択肢ごとに何人が選んだか集計したい。COUNTIF関数でワイルドカード(*)を使う方法がよく紹介されますが、選択肢の中に別の選択肢を含む文字列(「iPhone」と「iPhoneSE」など)があると、気づかないまま数を数え間違えるという落とし穴があります。この記事では、その落とし穴の中身と、正しく数えるための数式を解説します。

目次

カンマ区切りの複数回答データの例

「普段使っているスマートフォンを教えてください(複数回答可)」というアンケートの回答が、B列にカンマ区切りで入力されているとします。

A(回答者) B(回答、複数選択はカンマ区切り)
2 佐藤 iPhone,Android
3 鈴木 iPhoneSE
4 田中 iPhone,iPad
5 山本 Android

ワイルドカードのCOUNTIFだけでは数え間違える

「iPhoneを選んだ人数」を数えたいとき、次のような数式がよく使われます。

=COUNTIF(B2:B5,"*iPhone*")

この数式は「iPhone」という文字列を含むセルすべてを1件として数えます。ところが3行目の鈴木さんの回答は「iPhoneSE」であり、iPhone(無印)は選んでいません。それでも「iPhoneSE」の中に「iPhone」という文字が含まれているため、この数式では鈴木さんも「iPhoneを選んだ人」としてカウントされてしまいます。

選択肢 誤った集計
(COUNTIF(範囲,”*iPhone*”))
正しい集計
iPhone 3(鈴木のiPhoneSEを誤って含む) 2(佐藤・田中)
iPhoneSE 1 1(鈴木)
Android 2 2(佐藤・山本)

結果、正しくは2人(佐藤・田中)のはずが3人と集計され、実際より1人多く数えてしまいます。選択肢の文字列同士が「一部を含む・含まれる」関係にあるアンケートでは、この誤差が毎回起こります。

正しく数える数式: カンマで挟んで完全一致させる

この問題は、「回答の前後にカンマを補って、選択肢の前後にもカンマを補ってから、その文字列がそのまま含まれるかどうか」を調べることで解決できます。F2セルに数えたい選択肢(例: iPhone)が入っているとして、集計用のセルに次の数式を入力します。

=SUMPRODUCT(--ISNUMBER(FIND(","&F2&",",","&B2:B5&",")))

B2:B5(回答)の前後に ,(カンマ)を1つずつ補って「,iPhone,Android,」のような文字列にし、F2(選択肢)の前後にもカンマを補って「,iPhone,」という検索文字列を作ります。FIND関数はこの「,iPhone,」がどこにあるかを探し、見つかればその位置(数値)を、見つからなければエラーを返します。ISNUMBER関数でそれが数値かどうかを判定し、TRUE(1)・FALSE(0)の配列にしたうえでSUMPRODUCTで合計しています。

「,iPhoneSE,」という文字列の中には「,iPhone,」という並び(カンマ・iPhone・カンマ)は存在しないため、鈴木さんの行は正しく除外されます。この数式をコピーしてF列の選択肢を変えれば、iPhoneSE・Androidなど他の選択肢も同じ考え方で正確に数えられます。

よくあるつまずきポイント

  • 回答の区切り文字がカンマ以外(セミコロン・読点など)の場合: 数式中の","を実際の区切り文字に置き換えれば同じ考え方がそのまま使えます。
  • 回答の前後や区切りに余計な空白が入っている場合: 「iPhone, Android」のようにカンマの後ろに半角スペースが入っていると、区切り文字が完全に一致せず数え漏れが起こります。TRIM関数やSUBSTITUTE関数で事前に空白を除去しておくと安全です。
  • 選択肢が数値コード(1、2、3…)の場合も同じ問題が起きる: 選択肢が「1」「10」のような数値コードで、回答が「1,10」のように入力されていると、単純なワイルドカードのCOUNTIFでは「1」を選んだ人数に「10」を選んだ人だけの行まで混ざります。数値コードでも同じくカンマで挟む数式が有効です。

まとめ

カンマ区切りの複数回答をCOUNTIFのワイルドカードだけで集計すると、選択肢同士が文字列として重なる場合に数え間違える落とし穴があります。回答と選択肢の前後にカンマを補ってFIND関数で完全一致を判定するSUMPRODUCTの数式を使えば、この誤差を防げます。単一条件の集計はCOUNTIFSで複数条件を満たすセルの個数を数える方法、複数条件のOR集計はSUMIFS関数でOR条件の集計をする方法でも扱っているので、あわせて確認してみてください。重複データから最新のものだけを抽出したい場合は重複データの中から「最新の日付」のものだけを抽出する方法、部署などグループごとに順位を出したい場合はグループごとの順位付け(RANKIFの代用)をCOUNTIFSで行う方法も参考にしてください。

目次