- 締切済み
excelで重複データを1つにカウントしたいが、セルが結合されている場合
エクセルでの重複データをひとつにカウントする方法で、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1849830 式は上記の良回答より =COUNT(INDEX(1/(MATCH(A2:A100,A2:A100,0)=ROW(A1:A99)),0)) を使えばよいということはわかったのですが、 私の作っている表は、カウントしたいセルが結合してあり、うまくいきません。 具体的にはC,D,Eの結合のセルで、カウントしたい行は4行目~25行目まで。 空白のセルあり です。 =COUNT(INDEX(1/(MATCH(C4:E25,C4:E25,0)=ROW(C1:E21)),0)) としてみたのですが、 結果はすべて「0」となってしまいます。 このような場合どのようにすれば、よいかどなたか教えて下さい。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- onlyrom
- ベストアンサー率59% (228/384)
範囲の設定が間違ってます。 C、D、Eを結合しているとき値が入っているのは、C列のみです。 よって、範囲は、C4:E25 ではなくて、C4:C25 です。 =COUNT(INDEX(1/(MATCH(C4:C25,C4:C25,0)=ROW(C1:C22)),0)) ROW(C1:C22) は、行番号を求めているだけですから、 ROW(A1:A22)など、どの列を使ってもOKです。 また、上記は、Count,Index,Match,Rowと4つの関数を使ってますが =SUMPRODUCT((MATCH(C4:C25,C4:C25,0)=ROW(C1:C22))*1) とすれば、3つの関数ですむし、シンプルです。 ---------------------------------------------------- ここで、ちょと質問者に質問あり。 なぜ上記の式で上手くいくのか、 また、どのような計算をしているのか 分かっていますか? 理解しなままでは毎回質問することになりますので この機会に分からないところは徹底的に質問しておきましょう。 以上です。
- imogasi
- ベストアンサー率27% (4737/17069)
配列数式を使ってしまったが 例データ(セル結合ありの例) 1 2(A2:A4セル結合 ー ー 3 2 1 2 2 5(A10:A11セル結合) ー 2 空白 6 A21に =SUM(IF(A1:A20<>"",1/COUNTIF($A$1:$A$20,A1:A20),0)) と入れてShift、Ctrl,Enterの3つのキーを同時押し 結果 5 ーー VBAで同じようなことをやると Sub test01() d = Range("a20").End(xlUp).Row MsgBox d For i = 1 To d If Application.WorksheetFunction.CountIf(Range("A" & i & ":A9"), Cells(i, "A")) = 1 Then n = n + 1 Next i MsgBox n End Sub で実行結果 5 となるので結果は正しいかと。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
試行してみることは重要ですが、わからない数式を使わない方が良いと考えます。 =COUNT(INDEX(1/(MATCH(C4:C25,C4:C25,0)=ROW(C1:C21)),)) 作業列を使った場合で上記の似た考え方なら F4セルに =IF(MATCH(C4,$C$4:$C$25,0)=ROW()-3,1) 下へオートフィル そしてCOUNT 他にF4セルに =IF(C4="",F3,IF(MATCH(C4,$C$4:$C$25,0)=ROW()-3,SUM(F3,1),F3)) 下へオートフィル F25セルに解 参考まで
お礼
CoalTar さま ありがとうございました。 作業列を使った方法でなく、1箇所で完結する方法にしたくて、 上記の式を探し当てました。 でも式の意味を理解せず、使うのはやはりよくないですね。 理解できるようにがんばってみたいと思います。
お礼
imogasiさま ありがとうございました。