• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SUMIFS関数の質問)

エクセルのSUMIFS関数で値を合計する方法

このQ&Aのポイント
  • エクセルのSUMIFS関数を使用すると、特定の条件を満たすセルの値を合計することができます。
  • SUMIFS関数は、複数の条件を指定できるため、より柔軟な条件に基づいて合計を行うことができます。
  • しかし、エクセルのバージョンによって結果が異なる場合がありますので、注意が必要です。

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

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

>わたしのSUMIFS関数の理解があやまっているのでしょうか? SUMIFS関数の不具合(バグ)かも知れません。 条件2の"<>00"が目的通りに比較できないようです。 条件2が"00"のように等価の場合は正常に比較して値を返しますので、次のように変更すれば目的に合います。 =SUMIF(A2:C15,E1,C2:C15)-SUMIFS(C2:C15,A2:A15,E1,B2:B15,"00")

emaxemax
質問者

お礼

>等価の場合は正常に比較 こんなことがあるんですね、たしかにバグですね。 ご教示の式で目的を達成しました。 ありがとうございます。

その他の回答 (3)

回答No.4

こんにちは。 COUNTIF関数やSUMIF関数の条件に 文字列式を指定する際は、 数式バーに書き込む数式をイメージすると 解り易い場合があります(数式バーでは”?*"等は使えませんが)。 例えば、  "<>00" という場合、  =B1<>00 という数式の4桁め以降が条件にとしての文字列式 だと考えて、 この数式を数式バーに入力して確定したらどうなるでしょう。  =B1<>0 という風にしか確定できません。 つまり、  "<>00" は、「数値としての 0 以外」を指す条件式です。 なので、"00"という文字列を除外することが出来ません。 残念なことに、  "<>""00""" のような条件式を試してみても、意味は同じようです。 ただ、 =SUMIFS(C:C,A:A,E1,B:B,"<>00*") のように"*"を付け加えると文字列を判別してくれるようです。 今の処、このような数式しか思いつきませんが、 この課題の条件として、 「B列には3桁以上の文字は無い」 ということだったりすれば、十分使えるとは思います。 元々、文字列値を条件判別する目的で開発した関数ではないのでしょうね。 ただ、関数を新しくした時に、仕様を拡充する方向で考えてくれたら 良かったのになぁ、とは思います。 バグ、というのは寧ろ不自然でしょうね。 Excel数式とはかけ離れた高度な正規表現を使えるようにすれば、 不満の声は減るでしょうけれど、 難しくなっちゃってこの関数を使う人も減るのでしょうから。 以上です。

emaxemax
質問者

お礼

お礼がおそくなり、もうしわけありません。 =SUMIFS(C:C,A:A,E1,B:B,"<>00*")で判別してくれるんですね。 質問にあげた例ではOKでした。 ただ、実際には001や002もありうるので使えないのです。 ありがとうございました。

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

SUMIF関数などの条件式は 数値化できる文字列は数値にしてから計算します。 昔からの仕様です。 =SUM(SUMIFS(C:C,A:A,E1,B:B,{"*",0})*{1,-1})

emaxemax
質問者

お礼

あろがとうございます。 ごご提示の数式で正しく27が返りました。 ただ、数式の意味が理解できないでおります。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

A 00 1 というデータが加算されてるようですね。 B列は文字列でしょうか? =SUMIFS(C:C,A:A,E1,B:B,"<>00") のように、数値の文字列の比較の場合SUMIF、COUNTIF等の関数では 数値と文字両方で比較して、どちらかで一致するとTRUE(真)とみなしてしまうようです。 試しに、"<>00"を"<>01"に変えても、結果は28でした。 条件部分が文字列で記載する為のバグのようですね。

emaxemax
質問者

お礼

ありがとうございます。 バグですか・・・・。

emaxemax
質問者

補足

> B列は文字列でしょうか? はい、数字もありますが、01や02があるのですべて数値ではなく文字列にしております。

関連するQ&A