• ベストアンサー

エクセルの数式で

任意の日付が複数、列Bにあるとします。 2004.3.21 2004.5.24 2005.3.1 2004.12.31   ∫     と言った感じにです。 これらのデータから、2004.4.1~2004.9.30までの日付が何個あるかカウントしたいのですが、countを使うと30個までしか抽出できません。何か良い方法はないでしょうか?

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

2004.12.31 等は文字列になるようなので、データ-区切り位置-カンマ・・・-次へ-(列のデータ形式)日付-完了で日付に変換する。(以下2003年の例にします) すると例えば2003.4.1(変換後2003/4/1)はエクセル内部では37712と言う日付シリアル値=整数の数値になります。従って質問の 「2003.4.1~2003.9.30までの」は「37712から37894までの」数のセルを数えれば良いことになります。 B1:B9に例えば 2003/4/1 2003/4/23 2003/2/1 2003/4/1 2003/9/30 2003/6/4 2003/10/23 2003/12/12 2003/3/23 の例ではB11に=COUNTIF(B1:B9,">="&37712) をいれて7、B12に=COUNTIF(B2:B10,">"&37894)といれて2、答えは=B11-B12の5です。実際は1つの式にならべて =COUNTIF(B1:B9,">="&37712)-COUNTIF(B2:B10,">"&37894)等にします。 しかし2003/4/1や2003/9/30について、37712と37684も見つけるのは手間がかかり、見る別人にはカレンダー日付では何日?となりますから、2003/9/30などの入っているセル番地(例E1)でお置き変えるかDATE(2003,9,30)のように表現して置き変えてください。他にも=DATEVALUE("2003/4/1")などの表現方法もあります。

aaa0123
質問者

お礼

様々な方法があるのですね。 皆さんのアドバイスに基づいて試させてもらってます。残念な事に他要因がありまだ解決できていないのですけど助かりました。ありがとうございました。

その他の回答 (3)

  • comv
  • ベストアンサー率52% (322/612)
回答No.3

こんばんは B列以外のセルに =COUNTIF(B:B,">=2004/4/1")-COUNTIF(B:B,">2004/9/30") や =SUM(COUNTIF(B:B,{">=2004/4/1",">2004/9/30"})*{1,-1}) 書式設定は標準や数値にして下さい 最初の式の場合 カウント条件をセル参照でもできます    A 1 2004.4.1 2 2004.9.30 3 =COUNTIF(B:B,">="&A1)-COUNTIF(B:B,">"&A2)

  • Hageoyadi
  • ベストアンサー率40% (3145/7860)
回答No.2

私なら、DCOUNT関数を使います。 http://www3.wind.ne.jp/web/excel/dcount.html 実は他にも方法があって、 http://www.melma.com/mag/35/m00013135/a00000486.html では、ピボットテーブルを使う方法と配列数式を使う方法が紹介されてます。

  • epson01
  • ベストアンサー率12% (120/933)
回答No.1

隣のセルに、if分で範囲内だと1、範囲外は0のセルを作り、その合計を取ればどうでしょうか?

関連するQ&A