EXCELで特定の範囲に存在する文字列をカウントする関数

解決済みの質問

EXCELで特定の範囲に存在する文字列をカウントする関数

EXCELで特定の範囲に存在する文字列をカウントする関数は=COUNTA()で良いのですが、佐藤、鈴木、鈴木、佐藤、遠藤 と存在した場合に 5ではなく、3とカウントする関数はご存知ないでしょうか?

投稿日時 - 2002-09-10 20:10:51

連想キーワード:

QNo.355487

困ってます

質問者が選んだベストアンサー

A1~A5に、佐藤、鈴木、鈴木、佐藤、遠藤と入力されているとします。

 =SUMPRODUCT(1/COUNTIF(A1:A5,A1:A5))

で重複を除いた件数が計算できます。

投稿日時 - 2002-09-10 21:27:51

補足

理想的ご回答と期待したのですが・・・
COUNTIF(A1:A5,A1:A5)の段階で演算結果が0となってしまい。
=SUMRODUCT(1/0) で エラーとなってしまいます。 
何か違っていますでしょうか? 

投稿日時 - 2002-09-11 08:17:54

ANo.4

0人が「このQ&Aが役に立った」と投票しています

[  前へ  |  ]

ベストアンサー以外の回答(6件中 1~5件目)

ANo.7

# 5の解答者です。お礼を頂き有難うございます。私も相当苦労しましたので、意味が難しいとおっしゃっているので、少し
補足します。B列とC列についてです。
(1)DCOUNTA(範囲)は範囲セル内で佐藤が何人いるか数えます。3人いるからB列3です。A2の佐藤(自分)以外は3-2
=2人下行にいる=ダブりあり、と言うことです。C列で-1
しているのは自分の分を引いているわけです。A3の鈴木では
佐藤+鈴木(探索する苗字にプラス=加わることがミソ)が範囲内に6人いると出ているわけです。B2より
3増えたのですが、それは鈴木が3人いるということで、A3の
鈴木を除くと、あと3-2=2人下行にいると言うことになります。数が変化しない行がありますが(例A5の佐藤)、これは
既に前行で佐藤が出てきて(A2に)、自分の名前(A5の佐藤)
が増えても、表の中の佐藤+鈴木+山内の数は変わらないことを意味します。こう言う風にして、ダブリ数をD列に出し、最後にD13で合計しています。後は全行数からダブリで増えた行数(D13)を引けば、ダブリ除きの行数が出ます。

投稿日時 - 2002-09-11 10:21:31

お礼

ありがとうございます。
すごい力作と思います。今回はシートがいくつもあって、ちょっと大変な作業になりそうなので別な方法にしました。この関数も非常に参考になり有用と思います。また何かの機会に=DCOUNTA()も利用させて頂きます。ご協力ありがとうございます。

投稿日時 - 2002-09-11 11:55:28

ANo.6

>COUNTIF(A1:A5,A1:A5)の段階で演算結果が0となってしまい。
>=SUMRODUCT(1/0) で エラーとなってしまいます。 
>何か違っていますでしょうか? 

=SUMPRODUCT(1/COUNTIF(A1:A5,A1:A5))
は1つの式です。2つのセルに分解すると、機能しません。

投稿日時 - 2002-09-11 10:12:32

お礼

失礼しました。
ただ、範囲内に文字列がすべて埋まっているとよいのですが、途中で空白のセルがあると#DIV/0 のエラーになるようです。でも、これはすごいですね。セル選択で一度空白セルのみ選択してからスペースでも代入しておけば何とかなりそうです。配列をつかっていると思うのですが、これも理解を超えてしまいました。でもすぐに使えそうです。ありがとうございます。

投稿日時 - 2002-09-11 11:46:31

ANo.5

(1)データとしてA2からA12まで名前を入れる。A1名前、B1に0を入れる。
(2)B2に式=DCOUNTA($A$1:$A$12,$A$1,$A$1:A2)をいれる。
最下行が$A$12のところに来る。最下行まで複写する。
(3)C2に式=IF(B2>B1,B2-B1-1,0)をいれる。最下行まで複写
する。
(4)結果は下記の通りとなる。
(5)C13に=SUM(C2:C12)をいれる。
(6)B13に最終行-1をいれる。
(7)D13に=B13-C13をいれる。D13の6が求めるものである。
佐藤、鈴木、山内、山田、大木、大久保の6名。
C列には重複いている名前の数を求めている。
氏名0
佐藤32
鈴木62
山内81
佐藤80
鈴木80
佐藤80
山田90
大木100
山内100
鈴木100
大久保110

投稿日時 - 2002-09-11 00:26:41

お礼

B13に最終行の11を参照しD13の5を引くと6となり、重複を除いたカウントができるようです。計算式が複雑で小生の理解を超えてますが、これでなんとか行けそうです。ありがとうございます。

投稿日時 - 2002-09-11 09:34:53

ANo.3

再びこんにちは。

もうひとつ。
先頭にタイトル行を入れ、フィルタと =SUBTOTAL を使う。

例)
タイトル行を含み、A1~A6にデータがあるとして、

=SUBTOTAL(3,A2:A6)

とA7にでも入れ、データ-フィルタ-フィルタオプションで「重複するレコードは無視」でフィルタを掛ける。

投稿日時 - 2002-09-10 21:11:31

お礼

subtotal(3,___)は知ってましたが、フィルタオプションで「重複するレコードは無視」は知りませんでした。非常に便利ですね。これも使えます。ありがとうございます。

投稿日時 - 2002-09-11 10:40:36

ANo.2

こんにちは。

A1からデータがあるとして、ソートして良いなら、隣りのセルにでも

=IF(A1<>A2,1,0)

といれて、データ範囲までコピー、それを集計する。

ソートしたくないなら、予めインデックスを振っておいて、上記関数をいれ、結果を値に変えてからインデックスでソートし直すとか。。

投稿日時 - 2002-09-10 20:57:11

あわせてチェックしたい
  • Excel COUNTA関数について ...
  • Excel関数のCOUNTAについて ...
  • COUNTA関数について ...
PR

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら