• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで重複を除いた日付のカウント(条件付き))

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

このQ&Aのポイント
  • エクセルで(A列の)日付をカウントしたいのですが、重複して困っています。
  • 「C1」に任意の日付(○月○日)を入れると、「D1」に○月○日以下の日付がカウントされるようにしたいのです。
  • 重複を除いてカウントがしたいのですが、現在は重複してカウントされてしまいます。

質問者が選んだベストアンサー

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.6

日付データが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)),))

bluewish0476
質問者

お礼

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

その他の回答 (6)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.7

最も分かり易い方法は作業列を作って対応することです。 計算にも負担のかからない方法です。 例えばE1セルには次の式を入力して下方にドラッグコピーします。 =IF(COUNTIF(A$1:A1,A1)=1,A1,"") その後にD1セルにはあなたがお示しの式と同様の式を入力すればよいでしょう。 =IF(C1="","",COUNTIF(E:E,"<="&C1)) E列が目障りでしたら列を選択して右クリックし、「非表示」を選択します。

bluewish0476
質問者

お礼

お忙しい中ありがとうございます。 確かに負担がかからない作業列は魅力的でした。 ただ、これで作ったエクセルは、不特定多数にて利用するため、行や列を削除してしまい、関数が抜ける危険性もあるので、作業列の利用は控えたいと思います。 説明不足で大変申し訳ございません。

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

こんばんは! 作業列を使っても良いのであれば・・・ 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

bluewish0476
質問者

お礼

お忙しい中ありがとうございます。無事にカウントされました。 作業列を使った方法は、とても参考になりました。別の形で利用したいと思います。 VBAでできるとは、考え付きませんでした。ただ私自身がVBAを十分理解しておらず、修正したりする自信がないので、今回は利用しませんでした。 マクロを覚えていたら、ベストアンサーにしていたと思います。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

=COUNT(0/FREQUENCY(IF(A1:A7<=C1,A1:A7),IF(A1:A7<=C1,A1:A7))) と記入して、必ずコントロールキーとシフトキーを押しながらEnterで入力します。

bluewish0476
質問者

お礼

お忙しい中ありがとうございます。 ただ、私の理解力不足のため、うまくカウントされないケースがありました。 でも、「コントロールキーとシフトキーを押しながらEnter」を利用した機能は初めて知りました。 今後、活用していきたいと思います。本当にありがとうございます。

noname#204879
noname#204879
回答No.3

添付図参照 B1: =IF(A1<=C$1,1/COUNTIF(A$1:A$7,A1),"") D1: =SUM(B1:B7)

bluewish0476
質問者

お礼

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

  • mar00
  • ベストアンサー率36% (158/430)
回答No.2

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

bluewish0476
質問者

補足

説明不足で大変申し訳ございません。 「(C1)に「4月7日」を入れると、(D1)に「3」になるようにしたい」というのは 4月7日「以下」という意味で、A列に表示されている「4月5日」「4月6日」「4月7日」の「3」カウントを表示したいという意味です。 手間をとらせてしまい。大変申し訳ございません。

  • mar00
  • ベストアンサー率36% (158/430)
回答No.1

>(C1)に「4月7日」を入れると、(D1)に「3」になるようにしたい C1の4月7日もカウントするという事でしょうか。 そうだとして D1に =COUNTIF(A:A,C1)+1でいいと思います。