• ベストアンサー

【エクセル】重複を除いたカウント

例えば以下のようなリストのなかで、BがZである列の 数をカウントしたいのですが、 Aの値が等しい列はダブルカウントしないように集計 したいと考えています。 以下の例ではBがZの列の内、Aが3、6、8の3種類が あるので、答えとしては「3」となります。 A  B ------- 1  X 2  Y 3  Z 3  Z 3  Z 4  Y 5  Y 6  Z 6  Z 7  X 8  Z 9  Y このような場合、どのような計算式(関数)を使えば良いでしょうか?

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

  • ベストアンサー
  • jindon
  • ベストアンサー率43% (50/116)
回答No.4

jindonです(#1) 問題をよく読んでいませんでした。 作業列(C列)に =CONCATENATE(A1,B1) もしくは単純に =A1&B1 として、C9までコピー =SUM(IF(RIGHT(C1:C9,1)="z",1/COUNTIF(C1:C9,C1:C9))) です。

higuchi_100
質問者

お礼

ご回答頂きありがとうございます。 #2様の解法をさらに進めた感じの解法で、 便利さが更にUP!していて感動です(^^) おかげさまで目的の集計作業を完了できました!! で、厚かましいようですが今後の勉強のために、 もしよろしければご教授ください。 今回の解法では一旦C列という作業のための列を 使いますが、これを使わずに1つの式だけに まとめてしまう事はできるのでしょうか? そうするためには#3様のご回答にあるように SQLを使う以外にはないのでしょうか?

その他の回答 (6)

  • jindon
  • ベストアンサー率43% (50/116)
回答No.7

jindonです 下記のいずれの配列式も用を成さないようです。 これは、作業列なしでは無理なようですね。

higuchi_100
質問者

お礼

なんども回答を頂き、ありがとうございました。 Exelの奥深さと楽しさを改めて認識する事が できました。 これからもっとExelの勉強をしようと思います。

  • jindon
  • ベストアンサー率43% (50/116)
回答No.6

jindonです ROUNDUP(SUM(IF(B1:B12="z",1/COUNTIF(A1:A12,A1:A12))),0) でしょうか?

  • jindon
  • ベストアンサー率43% (50/116)
回答No.5

jindonです =SUM(IF(B1:B12="z",1/COUNTIF(A1:A12,A1:A12))) でも良さそうな感じですが、深く検証はしていません。 エクセルでSQLが関数内で使用できるとは知りませんでした。 その他の解決策としては、やはりVBAだと思います。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

特殊なやり方として、 SQL.REQUESTワークシート関数を使う方法があります。 アドインをMicrosoftからダウンロードすることで、SQLリクエストをワークシート関数から行えます。 表の範囲を例えばtableと名前を付けてファイルを集計と名前を付けて保存したとします。 適当なセルで =COUNT(SQL.REQUEST("DSN=Excel Files;DBQ=集計.xls",,3,"SELECT DISTINCT A FROM 集計.table WHERE B='Z'")) でレコード数3が求められます。

higuchi_100
質問者

お礼

ご回答頂きありがとうございます。 SQLを使えれば相当色々な事ができそうですね。 素晴らしいです。 ただ、今現在の私にSQLの知識が殆ど無いので、これを機会に勉強しようかと思います。

回答No.2

A列の数字がどんな範囲で変化するのかわかりませんが、 仮に1~9の間だとすれば、 C列に「=A1&B1」と計算式を入れれば、 C列は「1X,2Y,3Z.....9Y」となります。 で、D列1行目に「=COUNTIF(C$1:C$12,"1Z")」   D列2行目に「=COUNTIF(C$1:C$12,"2Z")」 ......   D列9行目に「=COUNTIF(C$1:C$12,"9Z")」 と計算式を入れ、 D列12行目に「=9-COUNTIF(D1:D9,0)」 としたらいかがでしょう?

higuchi_100
質問者

お礼

ご回答頂きありがとうございます。 =A1&B1というやり方で2つの列をくっつけてしまうと言う 技があったのですね。大変参考になりました。

  • jindon
  • ベストアンサー率43% (50/116)
回答No.1

=SUM(1/COUNTIF(B1:B9,B1:B9)) として、Ctrl+Shit+Enter で確定