プロが教えるわが家の防犯対策術!

エクセルでの重複データをひとつにカウントする方法で、
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」となってしまいます。

このような場合どのようにすれば、よいかどなたか教えて下さい。

A 回答 (3件)

 


範囲の設定が間違ってます。

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つの関数ですむし、シンプルです。

----------------------------------------------------
ここで、ちょと質問者に質問あり。

なぜ上記の式で上手くいくのか、
また、どのような計算をしているのか
分かっていますか?

理解しなままでは毎回質問することになりますので
この機会に分からないところは徹底的に質問しておきましょう。
以上です。


 
    • good
    • 0

配列数式を使ってしまったが


例データ(セル結合ありの例)
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つのキーを同時押し
結果

ーー
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
で実行結果

となるので結果は正しいかと。
    • good
    • 0
この回答へのお礼

imogasiさま
ありがとうございました。

お礼日時:2009/02/14 14:08

試行してみることは重要ですが、わからない数式を使わない方が良いと考えます。


=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セルに解
参考まで
    • good
    • 0
この回答へのお礼

CoalTar さま
ありがとうございました。
作業列を使った方法でなく、1箇所で完結する方法にしたくて、
上記の式を探し当てました。
でも式の意味を理解せず、使うのはやはりよくないですね。
理解できるようにがんばってみたいと思います。

お礼日時:2009/02/14 13:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています