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

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

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

過去の記録にもなく、困っています。 エクセルで(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」となってしまいます。 おいそがしいと思いますが、どうかご教授をお願いいたします。

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

  • ベストアンサー
  • 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/7940)
回答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でいいと思います。

関連するQ&A

  • エクセル 重複データのカウント

    初めまして。 初めて質問いたします。 よろしくお願いいたします。 エクセルで、A列に7ケタの数字13万件         B列に同じく7ケタの数字100~2000件         C列にB列にデータがある行まで=COUNTIF($A$2:$A$130000,B2) 上記の状況で、C列の値は1か0しか出ない状態なので、 セルD1に=COUNTIF(B2:B2000,0)と入れてB列にあるけどA列にないデータの 数(重複していないデータ)をカウントしています。 しかしながら、ベースとなっているA列のデータが13万件と多いので、 再計算などに結構時間がかかっているので、どうにかならないかと思いまして 質問させていただきました。 ちなみに、A列のデータは少しずつ増えていきます。 1度B列にあってA列にないデータは、次にB列に違うデータを入れてカウントする際に 新規データとしてA列に追加しています。 なんとか処理が速くなる方法などありましたらご教授下さい。 よろしくお願いいたします。

  • エクセル 重複のカウント 一部一致

    エクセルで下記にようになっています。 文字列の1部を一致させて、重複数のカウントと、 文字列の1部を一致させて、足した合計を出したいのですが・・。 どのように関数を書いたらよいのでしょうか・・。 A列に日付と、時間など、B列に、金額が入っています。 A列(日付・時間) B列(金額) 1月1日●●● | 2000 1月1日★★★ | 1500 1月2日●●● | 3000 1月3日●●● | 1000 1月3日■■■ | 2000 1月3日★★★ | 2000 下記の合計を出したいのです。 C列に、1日ごとの、合計件数 D列に、合計の金額 C行(1日の件数)  D行(1日の金額) 1月1日 ●件  |合計 ●円 1月2日 ●件  |合計 ●円 1月3日 ●件  |合計 ●円

  • EXCEL 複数条件で重複しないデータのカウント

    こんにちは。 EXCEL2013を使用して以下の関数をご教授ください。 データはデイリーで7000行(日により違います) ★1 A列(番号)は重複しないデータをカウントしたいです。 添付画像で重複しないものを1として数えると、18件です。 そこに条件で、E列(区分)が「1」でF列(支店)が「大阪」をカウントしたいです。 ★2 上記★1のK列(金額)の平均金額を出したいです。 それを別の表に抽出するので、関数をご教授頂けたらと思います。 ★3 C列(顧客)またはD列(顧客名)の総金額(K列(金額)を足した総合計)も 出したいです。これは重複するものも含みます。上位10件ほどを知りたい為。 ★4 ★3に一つ条件を追加でE列(区分)が「0」の時の金額(K列(金額)を足した総合計)も出したいです。これは重複するものも含みます。上位10件ほどを知りたい為。 ★5 ★4のC列(顧客CD)またはD列(顧客名)の全体の注文割合(注文率)も知りたいです。 明日の午前中までに資料を提出しないといけない為、 お早めに回答頂けたら幸いです。 説明不足でありましたら、補足致します。 宜しくお願い致します。

  • エクセル 複数条件で重複しないデータのカウント

    こんにちは。 EXCEL2013を使用して以下の関数をご教授ください。 データはデイリーで7000行(日により違います) ★1 A列(番号)は重複しないデータをカウントしたいです。 添付画像で重複しないものを1として数えると、18件です。 そこに条件で、E列(区分)が「1」でF列(支店)が「大阪」をカウントしたいです。 ★2 上記★1のK列(金額)の平均金額を出したいです。 それを別の表に抽出するので、関数をご教授頂けたらと思います。 ★3 C列(顧客)またはD列(顧客名)の総金額(K列(金額)を足した総合計)も 出したいです。これは重複するものも含みます。上位10件ほどを知りたい為。 ★4 ★3に一つ条件を追加でE列(区分)が「0」の時の金額(K列(金額)を足した総合計)も出したいです。これは重複するものも含みます。上位10件ほどを知りたい為。 ★5 ★4のC列(顧客CD)またはD列(顧客名)の全体の注文割合(注文率)も知りたいです。 お早めに回答頂けたら幸いです。 説明不足でありましたら、補足致します。 宜しくお願い致します。

  • 重複した項目のカウント(条件がもう一つあります)

    A   あ B   あ A   い B   う C   あ B   い B   あ C   あ A   い ↑のようなセルがあったとします。 これを、左側の項目ごとに、重複を無視して右側の項目の数を数えたいです。 例えば、 Aについては"あ"と"い"の2つだから2、 Bについては"あ"と"い"と"う"で3、 Cについては"あ"だけなので1 という具合です。 補助列を使ったりマクロで数えたりすればできるのですが、 関数のみを使ったやり方はないでしょうか。 ※ある範囲内で重複を無視してカウントするだけなら  =SUMPRODUCT(1/SUBSTITUTE(COUNTIF(範囲,範囲),0,0))  でできました。    これを使って、Aについて、Bについて、Cについての条件も  加えようとしましたが、  やり方がわかりません。

  • 同一数字の重複を”1”としてカウントする方法。

    どなたかご存じでしたらご回答よろしくお願いします。 【質問】  エクセルのA列~E列に0~9迄の任意の数字が1つだけ入っています。  これをF列で「同一数字はいくつ重複しても”1”として数字の数をカウントする方法」  が知りたいです。具体的に下記のエクセルシートのとおりです。 ●エクセルシート   A B C D E F   3 3 1 7  8 4 ←"3"は同一数字で2個重複するが"1個"とみなして、3178の4となる。   7 7 7 7  7 1 ←"7"は同一数字で5個重複するが "1個"とみなして、7の1となる。   4 4 4 4  2 2 ←"4"は同一数字で4個重複するが "1個"とみなして、42の2となる。   6 6 6 3  1 3 ←"6"は同一数字で3個重複するが "1個"とみなして、631の2となる。   1 1 8 8  8 2 ←"1"は同一数字で2個重複、"8"は同一数字で3個重複するがそれぞれ               "1個"とみなして、18の2となる。   3 3 2 2  5 3 ←"3"と"2"は同一数字で2個ずつ重複するがそれぞれ"1個”とみなして                325の3となる。   3 4 5 6  7 5 ← 同一数字の重複は存在しないため、34567の5となる。 ●注意事項   ・使用するエクセルは2010です。 以上、よろしくお願いします。

  • Excel 重複データーのカウント

    Excelの関数に対する質問です。   =COUNTIF(A1:E1,A1) はA1と重複するデータを求めますが、この方法ではなく A B C D E 0 A A B C D 1 A A B C C 2 このように 行に重複するデータのデータ件数をいっきに求められる関数があるのでしょうか? それともそれぞれのデータを=COUNTIF(A1:E1,A1)~でそれぞれもとめた後、それを合計しなければならないのでしょうか? よろしくお願いします。

  • Excelのカウントについて(複数条件)

    Excelのカウントについて質問です。      A列  1行目 1-2-3  2行目 2-3-1 3行目 4-5-1 4行目 3-2-1 5行目 1-3-2 6行目 ( ) 上記の表があり、A列6行目にA1~A5のカウントを表示したいと思います。 その際、1-2-3、2-3-1、3-1-2など、同じ数字でできているものであれば、順番が違っていても同じものとみなしてカウントしたいのです。 ※1-2-3は文字列です。 COUNTIFを使って下記のようにすればカウントできなくはないのですが、もっと効率よく短縮して書けないかと思っています。 =COUNTIF(A1:A5,"1-2-3")+COUNTIF(A1:A5,"1-3-2")+COUNTIF(A1:A5,"2-1-3")+COUNTIF(A1:A5,"2-3-1")+COUNTIF(A1:A5,"3-1-2")+COUNTIF(A1:A5,"3-2-1") 簡潔にする方法がありましたらおしえてください。

  • エクセル関数 日別の重複しないデータの個数を求める

    昨日から頭を抱えています。   A   B      C     D 1月1日  123    1月1日   2 1月1日  123    1月2日   1 1月1日  123    1月3日   2 1月1日  234     ・ 1月2日  345     ・ 1月2日  345     ・ 1月3日  456 1月3日  567 1月3日  567   ・   ・ 上記、A列・B列を元に、C列に重複しない日付、D列にその日付に対応したB列の『重複しないデータの個数』を求めたいのです。 フィルタオプションもSUMPRODUCTもCOUNTIFも使ってみましたが、 D列がうまくいきません。 どうかご教示願います。

  • エクセル97で重複しなかった場合のカウント方法

     こんにちは、過去の投稿をいろいろ調べたのですが、探し切れなかったので、どなたかご教授をお願いします。 エクセル97に行300、列10位のリストがあります。  ・A列に名前があり、重複はありません。  ・B列にPという商品を注文した人に"○"がついています。  ・C列にSという商品を注文した人に"○"がついています。  商品Sは商品Pを購入しないと意味がないものです。ですから、Pを注文しないでSだけ注文するということはありません。  Pを注文して、Sを注文しなかった人の数をカウントしたいのですが、COUNTIF関数や条件付書式を使うような気がしますが、どのようにすれば良いかわかりますでしょうか?  また、もしできれば、P注文、S注文しなかった場合のC列のセルの背景を変えたりしたいのですが、それはどうすれば良いかわかりますでしょうか?  何卒よろしくお願いします。

専門家に質問してみよう