アプリ版:「スタンプのみでお礼する」機能のリリースについて

過去の記録にもなく、困っています。

エクセルで(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」となってしまいます。


おいそがしいと思いますが、どうかご教授をお願いいたします。

A 回答 (7件)

日付データがA1セルから入力されているなら以下の式でC1セル以下の日付の数が求められます。



=COUNT(INDEX(1/(MATCH(A1:A10,A1:A10,0)=ROW(A1:A10)*(A1:A10<=C1)),))

A2セルからのデータの場合は、ROW(A1:A10)の部分を以下のように変更します

=COUNT(INDEX(1/(MATCH(A2:A10,A2:A10,0)=(ROW(A2:A10)-1)*(A2:A10<=C1)),))
    • good
    • 1
この回答へのお礼

こんな素晴らしい関数ができるなんて、素晴らしいです。

感激しました。

お礼日時:2012/04/15 03:35

最も分かり易い方法は作業列を作って対応することです。


計算にも負担のかからない方法です。
例えばE1セルには次の式を入力して下方にドラッグコピーします。

=IF(COUNTIF(A$1:A1,A1)=1,A1,"")

その後にD1セルにはあなたがお示しの式と同様の式を入力すればよいでしょう。

=IF(C1="","",COUNTIF(E:E,"<="&C1))

E列が目障りでしたら列を選択して右クリックし、「非表示」を選択します。
    • good
    • 0
この回答へのお礼

お忙しい中ありがとうございます。

確かに負担がかからない作業列は魅力的でした。

ただ、これで作ったエクセルは、不特定多数にて利用するため、行や列を削除してしまい、関数が抜ける危険性もあるので、作業列の利用は控えたいと思います。

説明不足で大変申し訳ございません。

お礼日時:2012/04/13 22:08

こんばんは!


作業列を使っても良いのであれば・・・
B1セルに
=IF(AND(A1<=$C$1,COUNTIF($A$1:A1,A1)=1),1,"")
という数式を入れオートフィルでずぃ~~~!っと下へコピー!

D1セルには
=SUM(B:B)
としてみてください。
作業列が目障りであれば遠く離れた列にします。

※ 作業列を使わない方が良いのであれば、VBAになってしまいますが
一例です
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub test() 'この行から
Dim i, k As Long
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 1) <= Cells(1, 3) And _
WorksheetFunction.CountIf(Range(Cells(1, 1), Cells(i, 1)), Cells(i, 1)) = 1 Then
k = k + 1
End If
Next i
Cells(1, 4) = k
End Sub 'この行まで

参考になりますかね?m(_ _)m
    • good
    • 0
この回答へのお礼

お忙しい中ありがとうございます。無事にカウントされました。

作業列を使った方法は、とても参考になりました。別の形で利用したいと思います。


VBAでできるとは、考え付きませんでした。ただ私自身がVBAを十分理解しておらず、修正したりする自信がないので、今回は利用しませんでした。

マクロを覚えていたら、ベストアンサーにしていたと思います。

お礼日時:2012/04/13 22:02

=COUNT(0/FREQUENCY(IF(A1:A7<=C1,A1:A7),IF(A1:A7<=C1,A1:A7)))


と記入して、必ずコントロールキーとシフトキーを押しながらEnterで入力します。
    • good
    • 0
この回答へのお礼

お忙しい中ありがとうございます。
ただ、私の理解力不足のため、うまくカウントされないケースがありました。

でも、「コントロールキーとシフトキーを押しながらEnter」を利用した機能は初めて知りました。
今後、活用していきたいと思います。本当にありがとうございます。

お礼日時:2012/04/13 21:52

添付図参照


B1: =IF(A1<=C$1,1/COUNTIF(A$1:A$7,A1),"")
D1: =SUM(B1:B7)
「エクセルで重複を除いた日付のカウント(条」の回答画像3
    • good
    • 0
この回答へのお礼

お忙しい中ありがとうございます。無事にカウントされました。
ただ、A列の日付で一部空白になった場合、カウントもエラーで表示されるのが、私が希望していたのと若干違いました。説明不足で申し訳ございません。

お礼日時:2012/04/13 21:48

ANo.1です。


前回の回答は無視して下さい。
C1に4月7日と入れるとそれ以降の日付をカウントしたいという事ですよね。
D1に
=COUNTIF(A:A,">="& C1)
だと思います。
違っていたら読み流してください。

この回答への補足

説明不足で大変申し訳ございません。


「(C1)に「4月7日」を入れると、(D1)に「3」になるようにしたい」というのは


4月7日「以下」という意味で、A列に表示されている「4月5日」「4月6日」「4月7日」の「3」カウントを表示したいという意味です。

手間をとらせてしまい。大変申し訳ございません。

補足日時:2012/04/12 22:51
    • good
    • 0

>(C1)に「4月7日」を入れると、(D1)に「3」になるようにしたい


C1の4月7日もカウントするという事でしょうか。
そうだとして
D1に
=COUNTIF(A:A,C1)+1でいいと思います。
    • good
    • 0

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

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


このQ&Aを見た人がよく見るQ&A