- ベストアンサー
エクセルのSUMIFS関数で値を合計する方法
- エクセルのSUMIFS関数を使用すると、特定の条件を満たすセルの値を合計することができます。
- SUMIFS関数は、複数の条件を指定できるため、より柔軟な条件に基づいて合計を行うことができます。
- しかし、エクセルのバージョンによって結果が異なる場合がありますので、注意が必要です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>わたしのSUMIFS関数の理解があやまっているのでしょうか? SUMIFS関数の不具合(バグ)かも知れません。 条件2の"<>00"が目的通りに比較できないようです。 条件2が"00"のように等価の場合は正常に比較して値を返しますので、次のように変更すれば目的に合います。 =SUMIF(A2:C15,E1,C2:C15)-SUMIFS(C2:C15,A2:A15,E1,B2:B15,"00")
その他の回答 (3)
- real beatin(@realbeatin)
- ベストアンサー率82% (174/211)
こんにちは。 COUNTIF関数やSUMIF関数の条件に 文字列式を指定する際は、 数式バーに書き込む数式をイメージすると 解り易い場合があります(数式バーでは”?*"等は使えませんが)。 例えば、 "<>00" という場合、 =B1<>00 という数式の4桁め以降が条件にとしての文字列式 だと考えて、 この数式を数式バーに入力して確定したらどうなるでしょう。 =B1<>0 という風にしか確定できません。 つまり、 "<>00" は、「数値としての 0 以外」を指す条件式です。 なので、"00"という文字列を除外することが出来ません。 残念なことに、 "<>""00""" のような条件式を試してみても、意味は同じようです。 ただ、 =SUMIFS(C:C,A:A,E1,B:B,"<>00*") のように"*"を付け加えると文字列を判別してくれるようです。 今の処、このような数式しか思いつきませんが、 この課題の条件として、 「B列には3桁以上の文字は無い」 ということだったりすれば、十分使えるとは思います。 元々、文字列値を条件判別する目的で開発した関数ではないのでしょうね。 ただ、関数を新しくした時に、仕様を拡充する方向で考えてくれたら 良かったのになぁ、とは思います。 バグ、というのは寧ろ不自然でしょうね。 Excel数式とはかけ離れた高度な正規表現を使えるようにすれば、 不満の声は減るでしょうけれど、 難しくなっちゃってこの関数を使う人も減るのでしょうから。 以上です。
お礼
お礼がおそくなり、もうしわけありません。 =SUMIFS(C:C,A:A,E1,B:B,"<>00*")で判別してくれるんですね。 質問にあげた例ではOKでした。 ただ、実際には001や002もありうるので使えないのです。 ありがとうございました。
- Chiquilin
- ベストアンサー率30% (94/306)
SUMIF関数などの条件式は 数値化できる文字列は数値にしてから計算します。 昔からの仕様です。 =SUM(SUMIFS(C:C,A:A,E1,B:B,{"*",0})*{1,-1})
お礼
あろがとうございます。 ごご提示の数式で正しく27が返りました。 ただ、数式の意味が理解できないでおります。
- mshr1962
- ベストアンサー率39% (7417/18945)
A 00 1 というデータが加算されてるようですね。 B列は文字列でしょうか? =SUMIFS(C:C,A:A,E1,B:B,"<>00") のように、数値の文字列の比較の場合SUMIF、COUNTIF等の関数では 数値と文字両方で比較して、どちらかで一致するとTRUE(真)とみなしてしまうようです。 試しに、"<>00"を"<>01"に変えても、結果は28でした。 条件部分が文字列で記載する為のバグのようですね。
お礼
ありがとうございます。 バグですか・・・・。
補足
> B列は文字列でしょうか? はい、数字もありますが、01や02があるのですべて数値ではなく文字列にしております。
お礼
>等価の場合は正常に比較 こんなことがあるんですね、たしかにバグですね。 ご教示の式で目的を達成しました。 ありがとうございます。