「今月来てくれたお客さんって、結局何人?」「取引先って全部で何社あるんだっけ?」…同じ名前が何度も出てくる一覧から、重複を除いた数を出したいとき、ありますよね。
結論から書くと、この式で数えられます!
=COUNTA(UNIQUE(FILTER(範囲,範囲<>"")))
「=COUNTA(UNIQUE(範囲)) だけでいいのでは?」と思いますよね。私も最初はそう思ったんですが、実際に試してみたら、範囲に空白のセルが1つでもあると、答えが1つ多くなりました(^^;
この記事では、来店記録から「お客さんが何人いるか」を数える例で、空白で数がずれるしくみ、担当ごとの人数、1回しか来ていない人の出し方を紹介します。それから、試してみてわかった「表記ゆれ」の意外な扱いについても書いています✨
🎬 実際の Excel 画面で、式を入れるところから動かしている動画もあります(3分くらい)。空白で1つ多くなるところも映しているので、こちらからどうぞ♪
できあがり:15件の来店記録から「6人」
来店記録は15行ありますが、同じ人が何度も来ているので、お客さんは6人です。11/9 の行は、顧客名が入っていません。

=COUNTA(UNIQUE(FILTER(C2:C16,C2:C16<>"")))
中でやっていることは3つだけです。
FILTER(C2:C16,C2:C16<>""):顧客名の列から、空白じゃないセルだけを取り出すUNIQUE(…):同じ名前を1つにまとめるCOUNTA(…):残った名前を数える
空白を除かないと「7」になってしまう理由
FILTER を入れずに =COUNTA(UNIQUE(C2:C16)) にすると、答えは 7 になりました。UNIQUE の中身をそのまま表示してみると、6人の名前のあいだに 0 がひとつ混ざっていたんです。

空白のセルも「1種類」としてまとめられて、0 として返ってきます。COUNTA はその 0 も1件と数えるので、1つ多くなるというわけです。
担当ごとに、重複を除いた人数を出す
「担当ごとに何人のお客さんを持っているか」も、式2つで出せます。F4 に担当の一覧、G4 に担当ごとの人数です。担当が増えても、行は勝手に増えてくれます♪
F4: =UNIQUE(B2:B16)
G4: =MAP(F4#,LAMBDA(n,COUNTA(UNIQUE(FILTER(C2:C16,(B2:B16=n)*(C2:C16<>""))))))

F4# は「F4 から広がった範囲ぜんぶ」という意味です。MAP と LAMBDA は、F4# の名前を1つずつ n に入れて、同じ計算をくり返してくれます。鈴木さんは遠藤さんを2回担当していますが、ちゃんと1人として数えられて4人になりました。
MAP はちょっと難しい…という場合は、G4 にこの式を入れて、担当の数だけ下にコピーしても大丈夫です。同じ結果(3・4・3)になりました。
=COUNTA(UNIQUE(FILTER($C$2:$C$16,($B$2:$B$16=F4)*($C$2:$C$16<>""))))
「1回だけ来た人」と「何回来たか」
UNIQUE の3つ目の引数を TRUE にすると、「重複を除く」ではなく「1回しか出てこないものだけ」になります。
1回だけ来た顧客: =UNIQUE(FILTER(C2:C16,C2:C16<>""),,TRUE)
顧客の一覧: =UNIQUE(FILTER(C2:C16,C2:C16<>""))
来店回数: =COUNTIF(C2:C16,F12#)

来店回数は、顧客の一覧(F12 から広がった範囲)を COUNTIF の条件に入れると、1つの式で全員分が出ます。青木さん4回、石井さん3回…と、元の表を手で数えた回数とぴったり合いました✅
表記ゆれ:UNIQUE が「同じ」と見なすもの・見なさないもの
ここからが、この記事でいちばん伝えたいところです!
人の手で入力した表だと、同じ取引先が少しずつ違う書き方で入っていること、よくありますよね。そこで次の7件を UNIQUE でまとめて、どれが「同じ」と見なされるかを試してみました。

| 違い | 例 | UNIQUE の扱い |
|---|---|---|
| 大文字・小文字 | ABC商事 / abc商事 | 同じ(1つにまとまった) |
| 全角・半角の英字 | ABC商事 / ABC商事 | 同じ(1つにまとまった) |
| 途中の空白の全角・半角 | みなと 物産 / みなと 物産 | 同じ(1つにまとまった) |
| 後ろの空白 | ABC商事 / ABC商事(後ろに空白) | 別のもの |
| 空白があるか、ないか | みなと 物産 / みなと物産 | 別のもの |
大文字・小文字や、全角・半角の違いは、UNIQUE が自動で同じものとして扱ってくれました(EXACT 関数で比べると「違う」と出るものでも、UNIQUE では1つになるんです)。数がずれる原因になるのは「空白」のほうで、7件をそのまま数えると 4 になりました。
空白を全部取り除いてから数えると、ちゃんと2社になりました🙌 半角の空白と全角の空白の両方を SUBSTITUTE で消して、ASC で英数字を半角にそろえています。
=COUNTA(UNIQUE(ASC(SUBSTITUTE(SUBSTITUTE(A2:A8," ","")," ",""))))
UNIQUE や FILTER がない Excel の場合
UNIQUE と FILTER は Microsoft 365 と Excel 2021 以降の関数です。それより前の Excel では、SUMPRODUCT と COUNTIF を使う式がよく紹介されています。ただ、これが空白があると答えが出ないんです(>_<)

空白があると #DIV/0! になる式: =SUMPRODUCT(1/COUNTIF(C2:C16,C2:C16))
空白があっても数えられる式: =SUMPRODUCT((C2:C16<>"")/COUNTIF(C2:C16,C2:C16&""))
1つ目の式は、空白のセルについて COUNTIF が 0 を返して 1÷0 になるので、#DIV/0! になりました。2つ目の式は、C2:C16&"" で空白も「空の文字」として数えさせて、さらに (C2:C16<>"") で空白の分を 0 にしています。
Microsoft 365 の Excel で、答えが 6 になることを確かめました(古い版の Excel そのものでは試せていません m(_ _)m)。
サンプルファイルはこちら
「来店記録」シートに、この記事の式がすべて入っています。「表記ゆれ」シートは、上の7件の比べ方を試せるようにしたものです。データはすべて架空です。
マクロは入っていません。ダウンロードしたファイルが「保護ビュー」で開いたら、「編集を有効にする」を押すと式が動きます。
「数えたはずなのに1つ多い…」のモヤモヤが、これで解消できたらうれしいです(*^^*)
この記事の式は、Microsoft 365 の Excel(ビルド 16.0.20527.20150、Windows 11)で、2026年11月8日にすべて試しました。
毎月の集計表づくりをまとめて自動化したい場合は、ココナラで Excel の自動化のご依頼も受けています。


