• ベストアンサー

エクセルのCOUNTIF式について教えてください

こんばんは。 A1 10月21日 A2 10月30日 A3 11月3日 A4 11月12日 A5 10月1日 A6 3 上記のような列で、先頭2文字が「10月」となっているセルの数を数える式をA6に入れることで、 答えの「3」と表示させたいのですが、うまくできません。 =COUNTIF(A1:A5,LEFT(A1:A5,3)="10月") としています。 お手数ですが、エラーの原因と解答をお願いいたします。

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

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

COUNTIF関数の検索値の部分が正しくない(提示されている数式はTRUEまたはFALSEを返しています)ためです。 また、検索データが「10月初旬」のような文字列ならワイルドカードを使ったCOUNTIF関数が利用できますが、日付の場合は、実際は1900年1月1日を1とするシリアル値という数字で入力されているのでLEFT関数での左3文字は3桁の数字を取得することになります。 このようなケースでは、COUNTIF関数ならNo1の回答のような日付範囲の引き算を使用するのが一般的ですが、MONTH関数でシリアル値から月を取得する数式を利用して、以下のようなSUMPRODUCT関数で計算することもできます。 =SUMPRODUCT((MONTH(A1:A5)=10)*1) =SUMPRODUCT((TEXT(A1:A5,"m")="10")*1)

その他の回答 (7)

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

=COUNTIF(A1:A5,LEFT(A1:A5,3)="10月")の式についてですが、範囲の後には条件を入力するのですが、その条件は数値、文字列、式を入力できますが論理式ではなく、">0"のように文字列で指定することになります。LEFT(A1:A5,3)="10月"のような式を入力することはできません。 もう一つの問題はセルの表示では10月1日のようになって表示されていますが実際にはシリアル値が入力されているので、例えば今年の10月1日はセルの表示形式を「標準」にすることで40817となります。10月というセルの表示が幾つあるかを検索するのに"10月"としても意味がありません。 10月の日付のセルの数を数える式でしたらA6セルに次の式を入力するのがよいでしょう。 =COUNTIF(A1:A5,">=10/1")-COUNTIF(A1:A5,">=11/1") または =COUNTIF(A1:A5,">=2011/10/1")-COUNTIF(A1:A5,">=2011/11/1")

noname#146604
noname#146604
回答No.6

こんばんは エクセル勉強3日目の者です。 配列、分岐の練習がてらに利用させてもらいました。(すみません) =TEXT(SUM(IF(LEFT(TEXT(A1:A5,"m月"),2)*1=10,LEFT(TEXT(A1:A5,"m月"),1)*1,"")),"d") countifは配列が利用できなかったので、sumで代用させて頂きました。(悪しからず) a6セルに上記の式を代入して、【ctrl+shift+enter】で入力して下さい。 (【】内の操作重要!。普通に入力すると#valueになります)

noname#152318
noname#152318
回答No.5

ANo.2 と ANo.3 の回答者です。 エラーの原因:  ◇B列のセルが日付になっている(シリアル値?)場合、 LEFT関数では、拾えないのでは?  ◇先頭2文字が「10月」 → 3文字ですね 1 と 0 と 月で。  ◇1月から9月までは2文字でもよいのです。  だから、セル全体を日付と考えてそのセルの「月」の数字でB列に表してその10だけを数えます。  IF関数でスピンボタンでD1に1~12までの数をシームレスに表示します。  次にB列とD1を比べて同じなら「1」とIF関数で C 列に表示させます。    フォームのスピンボタンで1~12をD1に表示させると、  c列に1(○印でも)を表示させて、それを数えるのもよいと思います。    1月から12月まで別々に列を作れば、すべてが数えられます。    

noname#158634
noname#158634
回答No.4

「ワイルドカード」というものを覚えましょう。 =COUNTIF(A1:A5,"10月*")  というかどうでもいいけど、「3文字」ですよね?

kyoutosoda
質問者

補足

ご回答ありがとうございます。一番シンプルな方法をご紹介いただきありがたかったのですが、実際に試してみても計算結果は0のままでした。エクセルのバージョンは2003です。*は全角でも半角でも同じでした。何が原因でしょうか。

noname#152318
noname#152318
回答No.3

画像添付ができていませんでした。  (..)

noname#152318
noname#152318
回答No.2

素人ですので、ベテランが出られる前に (=^・^=) B1に下式をコピーして さらに~B5にコピーします。  ※順位を間違えないでください。 =IF(ISNUMBER(A1),TEXT(A1,"m")+0,"") 次にB1からB5で10と表示されたセル数を数えます。    =COUNTIF(B1:B5,10) 式を一つにまとめられれば、より簡単です。

  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.1

COUNTIFの条件式はIFなどの条件式と書き方が違います。 詳しくはヘルプを見てください。 また、日付は内部的には数値として保存されているので、数値と同様の大小比較が行えます。 Excel2007以降の場合 =COUNTIFS(A1:A5,">=10月1日",A1:A5,"<11月1日") 10月1日以上 かつ 11月1日未満 をカウントします バージョンを問わず =COUNTIF(A1:A5,">=10/1")-COUNTIF(A1:A5,">=11/1") 10月1日以上の数 - 11月1日以上の数 を計算します 日付の書き方は、どちらの書き方でも変わりません。

関連するQ&A