• 締切済み

エクセル Sumif関数の設定条件

以下のような式を作成したとします。 =SUMIF(B:B,"2/1",I:I) ※B:B 列には日付、I:Iには 金額をそれぞれ入力。 上記のようにSUMIF関数の条件部分は、文字列で表記("2/1")するのが規則となっています。 しかし、日付(I:I)欄にはシリアル値が入力されています。それを検索するのになぜ文字列が使用できるのでしょうか。 ご存じの方いたら教えていただけないでしょうか。 よろしくお願いいたします。

みんなの回答

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

SUMIFやCOUNTIF系の関数では検索値を文字列で指定するのが仕様となっています。 したがって、これらの関数では検索値を「2」としても「"2"」としても同じ結果が返ります(もちろんデータベースシート範囲に数値と文字列が混在しても区別できません。 一方VLOOKUP関数などの関数では、検索値の文字列と数値を区別するので、数字の「2」と文字列の「"2”」は違った値として認識されます。 さらに、エクセルではセルに「2/1」や「2-1」「1-2-1」などと入力すると自動的に日付と判断し、シリアル値として入力(判断)されます。 このような仕様になっているので、SUMIF関数では、「"2/1"」や「2&"/"&1」のような数式での文字列形式で入力しても、それらを日付として認識することになるわけです。 このようなエクセルの自動設定は、たとえば「="2/1"-"1/2"」と文字列間の引き算をすると、これらの文字列をエクセルが自動的に日付と判断し、2つの日付間の日数を求めることができることと同じようなことです。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.3

>※B:B 列には日付、I:Iには 金額をそれぞれ入力。 >しかし、日付(I:I)欄にはシリアル値が入力されています。 質問の文言に整合性がありません。 日付はB列なのですよね? SUMIF関数の中で比較の値がB列の日付に対する比較として文字列の"2/1"は当年(2014年)の2月1日としてシリアル値に置き換えることが暗黙の了解事項になっているため検索可能になります。 会計年度が4月1日から翌年3月31日までの時は月日のみの比較値を使うと検索できないこともあるでしょう。 極力年月日を指定することをお勧めします。

yamato514
質問者

お礼

申し訳ありません。 ご指摘のとおり、B列が日付でございます。 種々のご指摘、アドバイスをしていただきありがとうございます。

  • Chiquilin
  • ベストアンサー率30% (94/306)
回答No.2

Excelの関数の中でも一部のものは 「数値に変換できる文字列は数値化し てから計算する」仕様があります。 「=MAX("2014/12/15")」では「41988」が返りますね。 ただ SUMIFはもうちょっとだけ特殊で そもそも文字列で条件が指定でき る仕様になっています。 Lotus1-2-3互換の関数なので ちょっと毛色が違 うと思って下さい。 =SUMIF(B:B,">=2/1",I:I) とすれば当年の「2/1」以上の合計が表示されます。 尚 年を省略するのはあまりお勧めしません。来年になってからファイルを 開いたら 結果が変わってしまいますよ。

yamato514
質問者

お礼

ご回答いただきありがとうございます。 年も極力いれるようにいたします。

  • weboner
  • ベストアンサー率45% (111/244)
回答No.1

時間表記の質問にもお答えしましたが Excelが自動的に日付けとして認識されるからです ちなみに =SUMIF(B:B,"2-1",I:I) ↑ このような書き方も有効 もちろんシリアル値で =SUMIF(B:B,41671,I:I) 41671は2014/2/1もシリアル値 としても同じ結果になります ":"を含んだ数字の文字列の場合は時刻 "/"や"-"を含んだ数字の文字列の場合は日付け とExcelが自動認識します 例外: 13/5とか日付けとして在り得ない表記 ="2"&"/"&"3" などの計算式として得られる結果 ↑ の場合は文字列として扱います

yamato514
質問者

お礼

何度もご回答いただきありがとうございます。 自動変換されるということなんですね。 勉強になりました。

関連するQ&A

専門家に質問してみよう