電子書籍の厳選無料作品が豊富!

空白を除いて、重複を避けて・・・っていう数え方は出来ますか?
例えば、4月12日 4月13日 4月13日 4月14日 4月15日 →4件
できれば数式で、マクロでもかまいません
よろしくお願いします

A 回答 (7件)

NO3さんをヒントに次の方法は如何でしょうか。


=COUNT(FREQUENCY(A1:A10,A1:A10)^0)
    • good
    • 1

   A    B    C    D    E    F


1 4月12日 4月13日 4月13日 4月14日 4月15日 無重複数
2    1   0.5   0.5    1    1    4

セル A2 に式 =1/COUNTIF($A1:$E1,A1) を入力して、此れを範囲 A2:E2 に複写。
セル F2 に式 =SUM(A2:E2) を入力。
    • good
    • 0

配列数式でもできます。


例データA2:A13 (B列数字は下記解説の参考のために出しているもの)
a1
b1
c1
a2
s1
b2
0
a3
a4
c2
d1
f1
上記以外の、どこでも良いが、セルに
=SUM(IF(COUNTIF(OFFSET($A$2,0,0,ROW(A2:A13)-1),A2:A13)=1,1,0))
と入れて、SHIFT+CTRL+ENTER(3つのキーを同時押し)
結果 6
ーーー
考え方の仕組みについて
上記例の右側の数は、第2行からその行まで、その行の値と同じ行数がいくらあるかの数字を出したもの。
このうちの1の行の数を加えたのが、結果の6です。
そのB列の数は
=COUNTIF(OFFSET($A$2,0,0,ROW(A2:A13)-1),A2:A13)
と入れて、SHIFT+CTRL+ENTER(3つのキーを同時押し)
で出しており、回答の式の中の一部で使っている。
=SUM(IF(・・・))の・・・部分です.
なお日付の質問に、文字列の例ですが、日付もエクセルでは正数整数値ですので同じです。
空白行の存在をカウントしないも影響を受けません。
    • good
    • 0

=SUMPRODUCT(1/COUNTIF($A$1:$A$99,$A$1:$A$99&""))-(COUNTBLANK($A$1:$A$99)>0)


で計算可能です。
    • good
    • 0

日付のような数値データの場合


=SUMPRODUCT((FREQUENCY(A1:A10,A1:A10)<>0)*1)
のような感じで(空白が間に有っても大丈夫)いけると思います。
マクロでは、
Public Function kind(r As Range) '指定された範囲のデータの種類を数える
Dim x As Range
Dim aDic
Set aDic = CreateObject("Scripting.Dictionary")
For Each x In r
If (Not x.Value = Empty) And (Not aDic.Exists(x.Value)) Then '中身がない、重複する時は登録しない
aDic.Add x.Value, x.Value
End If
Next
kind = aDic.Count
End Function
みたいなもので、
=kind(A1:A10)
でいけると思います。(この場合はAとaを区別する)
    • good
    • 0

NO1です。


回答の関数では、空白を考慮できませんので読み飛ばして下さい。
    • good
    • 0

(例)データ範囲がA1:A10


 =SUMPRODUCT(1/COUNTIF(A1:A10,A1:A10))
    • good
    • 1

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