• 締切済み

重複した項目のカウント(条件がもう一つあります)

A   あ B   あ A   い B   う C   あ B   い B   あ C   あ A   い ↑のようなセルがあったとします。 これを、左側の項目ごとに、重複を無視して右側の項目の数を数えたいです。 例えば、 Aについては"あ"と"い"の2つだから2、 Bについては"あ"と"い"と"う"で3、 Cについては"あ"だけなので1 という具合です。 補助列を使ったりマクロで数えたりすればできるのですが、 関数のみを使ったやり方はないでしょうか。 ※ある範囲内で重複を無視してカウントするだけなら  =SUMPRODUCT(1/SUBSTITUTE(COUNTIF(範囲,範囲),0,0))  でできました。    これを使って、Aについて、Bについて、Cについての条件も  加えようとしましたが、  やり方がわかりません。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

例データ A2:A12(第1行は空白とする) 1セルに「A   あ」のように値が入っているとする。A,B列に分かれて入っているのではないということ) A   あ B   あ A   い B   う C   あ B   い B   あ C   あ A   い A   う B   え Aの行について =SUM((LEFT(A2:A12,1)="A")*(COUNTIF(OFFSET($A$2,0,0,ROW(A2:A12)-1),A2:A12)=1)*1) と入れてSHIFT,CTRL,ENTERの3つのキーを同時押しする。 配列数式。 結果 3 ーー Bの列については、同じく =SUM((LEFT(A2:A12,1)="B")*(COUNTIF(OFFSET($A$2,0,0,ROW(A2:A12)-1),A2:A12)=1)*1) と入れてSHIFT,CTRL,ENTERの3つのキーを同時押しする。 結果  4 配列数式に関心があるものなので、やってみた。 配列数式はSUMPRODUCT関数と双対的のようなので、そちらで出来るかも。 多数例で正しいかチェックして無いのでよろしく。

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.4

◆こんな方法はいかがでしょう E1=COUNT(INDEX(1/(MATCH(D1&$B$1:$B$10,$A$1:$A$10&$B$1:$B$10,0)=ROW($1:$10)),0)) ★下にコピー ★「A」限定ならば、 =COUNT(INDEX(1/(MATCH("A"&$B$1:$B$10,$A$1:$A$10&$B$1:$B$10,0)=ROW($1:$10)),0))

hgkr02
質問者

お礼

SUMPRODUCTを使わなくてもできるんですね! 大変参考になります。 ありがとうございます。

  • sige1701
  • ベストアンサー率28% (74/260)
回答No.3

こんな感じでは =SUMPRODUCT((MATCH(A1:A9&B1:B9,INDEX(A1:A9&B1:B9,),0)=ROW(A1:A9))*(A1:A9="A"))

hgkr02
質問者

お礼

ありがとうございます。 まさに求めていた回答です。 ちょっとまだ私の知識ではその式の意味までは理解できないですが、 各関数について調べて理解しようと思います。 SEか何かをされているのでしょうか?

noname#204879
noname#204879
回答No.2

   A   B   C   D  E  F     G 1  fld1 fld2 fld3 fld4   fld1  fld4 2  A   あ  A_あ 1    A       2 3  B   あ  B_あ 0.5   B       3 4  A   い  A_い 0.5   C       1 5  B   う  B_う 1 6  C   あ  C_あ 0.5   合計/fld4 7  B   い  B_い 1    fld1    合計 8  B   あ  B_あ 0.5   A       2 9  C   あ  C_あ 0.5   B       3 10 A   い  A_い 0.5   C       1 C2: =A2&"_"&B2 D2: =1/COUNTIF(C$2:C$10,C2) G2: =SUMPRODUCT((A$2:A$10=F2)*(D$2:D$10)) 参考までに、範囲 F6:G10 には範囲 A1:D10 を[データ範囲]とする[ピボットテーブルレポート]による結果を示しておきました。

hgkr02
質問者

お礼

補助列を使わないやり方はsige1701さんのやり方でできました。 mike_gさんのやり方もとても参考になりました。 ありがとうございました。

hgkr02
質問者

補足

ありがとうございます! 教えていただいた上記の方法でできました。 C2、D2の補助列を使わずに、 一気に一行だけで関数を組み合わせてやることは 可能でしょうか?

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 参考になるかどうか判りませんが・・・ ↓の画像のように表を作ってみました。 作業列としてA列を3回挿入しています。 A2セルは =IF(COUNTIF($D$2:D2,D2)=1,ROW(A1),"") B2セルは =IF(C2="","",IF(COUNTIF($C$2:C2,C2)=1,ROW(A1),"")) C2セルは =D2&E2 として、A2~C2セルを範囲指定した後に、オートフィルで下へコピーします。 (数式は1000行目まで対応できるようにしていますので、1000行くらいまでコピーしても構いません) そして、G2セルに =IF(COUNT($A$2:$A$1000)>=ROW(A1),INDEX($D$2:$D$1000,SMALL($A$2:$A$1000,ROW(A1))),"") H2セルに =IF(G2="","",SUMPRODUCT(($D$2:$D$1000=G2)*($B$2:$B$1000<>""))) という数式を入れ、G2・H2セルを範囲指定の後、これもオートフィルで下へずぃ~~~!とコピーすると 画像のような感じになります。 (新しくデータが増えても対応できるようにしています) 作業列が多すぎて目障りであれば作業列を「表示しない」にしてもOKかと思います。 以上、参考になれば幸いですが、 少し手間がかかりますので 他に良い方法があれば読み流してくださいね。m(__)m

hgkr02
質問者

お礼

とても丁寧に答えていただきありがとうございました。 分かりやすかったです。

関連するQ&A

  • [Excel]グループごとに任意の項目の重複を外したカウント

    質問させていただきます、よろしくお願いいたします。 一度同じ内容で別のカテゴリーで質問させていただいたのですが、カテゴリーが違うことに気づきましたので、改めて質問させていただきます。ちなみに、一度投稿した質問は消せないのですね・・・。 エクセルで、とあるグループでの重複を外したカウントをしたいのですが、どうもうまくいきません。カウントしたい項目が決まっているわけではなく、グループごとに項目をカウントしたいのです。例えば、以下のような表があったとします。 A     B 地域1  XXX 地域1  YYY 地域1  YYY 地域2  ZZZ 地域2  XYZ 地域2  ZXY 地域2  XXX 地域3  YYY 地域3  YYY 上記の場合に、AのグループごとのBの重複しない個数を数えたいのです。よって、求めたい値は・・・ 地域1 2 地域2 4 地域3 1 となります。色々な質問ページやCOUNTIFやSUMPRODUCT等を駆使しているのですが、導き出せません。どなかた教えていただけないでしょうか。 どうぞ、よろしくお願いいたします。

  • エクセルで重複を除いた日付のカウント(条件付き)

    過去の記録にもなく、困っています。 エクセルで(A列の)日付をカウントしたいのですが、重複して困っています。 「C1」に任意の日付(○月○日)を入れると、「D1」に○月○日以下の日付がカウントされるようにしたいのです。      A     B    C     D 1  4月5日         2  4月6日 3  4月6日 4  4月6日 5  4月7日 6  4月7日 7  4月8日 D1に =COUNTIF(A:A,"<="&C1) といれてみると、重複してカウントされてしまうのですが、重複を除いてカウントがしたいのです。 ちなみに(C1)に「4月7日」を入れると、(D1)に「3」になるようにしたいのに、重複して「6」となってしまいます。 おいそがしいと思いますが、どうかご教授をお願いいたします。

  • Excel、重複セルを1とカウントする

    jcb3092で御座います。 標記の件で教えて下さい。 以下の文字列をカウントするのですが f5:f154 前に教えて頂いたこの関数に範囲を置き換えて =INT(SUMPRODUCT(1/SUBSTITUTE(COUNTIF(F5:F154,F5:F154),0,100))) としました。 教えて頂きたいのはこの関数の終わりの部分(セル範囲の後)の 0,100は何を指しているのかで御座います。 これを理解していないと安心できません。 よろしくお願い申し上げます。

  • 重複があるデータが何種類あるか、を条件付でカウント

    EXCEL2003で質問です。 http://okwave.jp/kotaeru.php3?q=1827923 の応用編です。 次のようなリストをつくりました。 A  |B  |C   小泉 重複  1月 竹中     1月 小池     3月 小泉 重複  1月 竹中     2月 竹中     2月 Cが「1月」の場合のみ、Aの項目が複数存在した場合に 「重複」と表示させる関数を、B列に埋め込むことが無事できました。 =IF(AND(C1="1月",SUMPRODUCT(($A$1:$A$6=A1)*($C$1:$C$6="1月"))>1),"重複","") anserwd:shiotan99さま さて、この応用です。 ■課題  「重複」の出たuserが何人いるか?を集計。  重複データのカウント方法は過去の質問を参照しましたが、この場合にあてはめる力が私にはまだありませんでした。  お力貸していただくとありがたいです。  よろしくおねがいします。

  • 二つの条件でカウントしたい

    二つの条件でカウントしたい ひとつ目の条件がB2:B9の範囲内で"○"であること 二つ目の条件はC2:C9の範囲内で空白のセルであること 上記の二つの条件を満たす個数をD1で求めたい。 SUMPRODUCTかと思うのですが、式をアドバイス願います。

  • 【Excel】複数条件でのカウント

    お世話になります。  列 A    B 行  項目X    項目Y 1 あ     aaa 2 あ     bbb 3 い     aaa 4 い     bbb 項目X = "あ" & 項目Y = "aaa" のカウントをしたいのですがどのような関数になりますか? それぞれ単独の場合は、 (1)countif(A1:A4,"あ") → 2 (2)countif(B1:B4,"aaa") → 2 になるのはわかるのですが、ひとつのセルにこの二つの条件をand条件でカウントするやり方がわかりません。 よろしくお願いします。

  • 2つの条件に合ったものをカウントし、かつその合計を求める

    A   B  C ○  *  5 ×  *  0 ○     5 ○  *  5 ×  *  5 のような表があります。 ○かつ*のものをカウントするには、 =SUMPRODUCT((A1:A5="○")*(B1:B11="*")) で「2」と出てきますが、 さらにそれで該当したデータの合計を求めたいです。 この場合は、「10」という数値が出したいです。 どうしたらよいのでしょう??

  • EXCELでの重複データカウント方法について(過去問読みましたがわかりません)

    いつもお世話になっております。excel97の関数に関してです。 過去問を検索し、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=118918において、 質問:会社名のデータが1万件あります。 その中には、同じ会社名が重複しているものがあります。 そこで、重複しているデータは1つのものとしてカウントし、全部で何件の会社が存在するかカウントする方法はあるでしょうか? 回答:関数でやるとすると。。。。 データが、A1~A10に入っているとします。 =SUMPRODUCT(1/COUNTIF(A1:A10,A1:A10)) とA11に数式を入力します。 これではいかがでしょうか?? 解説 COUNTIF関数でそれぞれの会社の数をカウントし、 SUMPRODUCT関数で配列の積をもとめます。 というのがあり、未熟者の私は理屈はよく分からないまま、この式でやってみたあと実際に数えてみたのですが、いつも正解数より1多くなってしまうのですが、この式の最後に-1を付ければいいのかな? と思ったのですが、いかがでしょうか?

  • Excel 重複データーのカウント

    Excelの関数に対する質問です。   =COUNTIF(A1:E1,A1) はA1と重複するデータを求めますが、この方法ではなく A B C D E 0 A A B C D 1 A A B C C 2 このように 行に重複するデータのデータ件数をいっきに求められる関数があるのでしょうか? それともそれぞれのデータを=COUNTIF(A1:E1,A1)~でそれぞれもとめた後、それを合計しなければならないのでしょうか? よろしくお願いします。

  • 文字列AかBを含むセル数をSUMPRODUCT関数で求める場合

    文字列AかBを含むセル数をSUMPRODUCT関数で求める場合 エクセル2000です。 A1:A10のセル範囲だとして =SUMPRODUCT(ISNUMBER(FIND({"A","B"},A1:A10))*1) とすると、同一セルにA、Bの両方があった場合、重複してカウントされてしまいます。 重複を除外するために、 =SUMPRODUCT(ISNUMBER(FIND({"A","B"},A1:A10))*1)-SUMPRODUCT(ISNUMBER(FIND("A",A1:A10))*ISNUMBER(FIND("B",A1:A10))) と、重複してカウントされた数から両方が存在するセルの数を減じて求めましたが、以下のようなより簡素な式でも求められことがわかりました。 =SUMPRODUCT((ISNUMBER(FIND("A",A1:A10))+ISNUMBER(FIND("B",A1:A10))>=1)*1) この式でなぜAB両方があるセルが重複カウントされないのかどうもわかりません。 ご教示いただければ幸いです。 なお、SUMPRODUCTではなく =SUM(COUNTIF(A1:A10,{"*A*","*B*"}))-SUM(COUNTIF(A1:A10,{"*A*B*","*B*A*"})) でもできることは存じておりますが、今回はSUMPRODUCTの疑問として質問いたしました。

専門家に質問してみよう