2025/6/19

エクセルSUMIFS関数の使い方: 複数条件ありで合計値算出 - #VALUE!エラーの対処法も

Thumbnail for エクセルSUMIFS関数の使い方: 複数条件ありで合計値算出 - #VALUE!エラーの対処法も

はじめに

エクセルのSUMIFS関数は、 データ集計や数値計算など、多くの場面で頻繁に使用される関数の1つです。 設定できる条件が1つのSUMIF関数の拡張版に相当します(引数の順序が変わるので注意)。

ここでは、SUMIFS関数の

  • 基本機能・使い方
  • 注意事項
  • 関連する関数
  • 使用例、応用法

について取り扱います。

基本機能・使い方

SUMIFS関数は、 条件付きでデータを合計する関数 です。 条件にマッチしても、合計する値が文字列や空白セルの場合は無視されます。

SUMIFS関数
SUMIFS ( 合計対象範囲, 検索範囲1, 検索条件1, 検索範囲2, 検索条件2, ... )

複数の条件を設定し、 合計対象範囲 の値を合計 する。
指定した 検索範囲1 内で、検索条件1 に合致した位置と同じ位置の、 合計対象範囲 の値が合計される。 検索範囲条件をセットで追加(例:検索範囲2検索条件2)することで、複数条件を設定できる (最大127セット)。

合計対象範囲
: 必須
C1:C5
合計する数値データ範囲。
検索範囲1
: 必須
A1:A5
検索条件1で検索するデータ範囲。
検索条件1
: 必須
"<>" & G2
合計する条件。
検索範囲2
: 任意
B1:B5
検索条件2で検索するデータ範囲。
検索条件2
: 任意
"<>" & G3
合計する条件。

検索条件には、 比較演算子が使用できます。
比較演算子と値の間に、 &(アンパサンド/アンド記号)が必要 なので注意です (値が文字列の場合以外)。

比較演算子

数値同士や文字列同士を比較するときに使用する演算子です。

比較演算子意味使用例
(文字列)

(数値)

(参照)
=等しい (==)"=A""=" & 0"=" & A1
<>等しくない (\ne)"<>A""<>" & 0"<>" & A1
>より大きい (>>)">" & 0">" & A1
<より小さい (<<)"<" & 0"<" & A1
>=以上 (\geq)">=" & 0">=" & A1
<=以下 (\leq)"<=" & 0"<=" & A1

※ 比較演算子 (+&) は省略可

注意事項

検索条件で設定できること・できないこと、 意図した結果にならない場合にどうしたらいいのか、 について解説します。

検索条件の仕様

  • 部分一致検索(ワイルドカード)に対応(詳細は後述)
  • 大文字・小文字の区別はしない
  • 全角・半角の区別はする
  • 一度に照合できる文字列は 最大255文字まで
  • 一度に複数条件を指定することはできない(対応策は後述)

うまく動作しないときの原因と対策

SUMIFS関数がうまく動作しない場合、 以下のような原因が考えられます。

  • うまく計算されない、0になるとき:

    • 検索条件 の記入方法が間違っている。
      対策:以下を再確認する(参考:上記「比較演算子」)。
      • 比較演算子は "で囲まれているか?
      • 文字列は "で囲まれているか?
      • 比較演算子と数値 / 参照は &で結ばれているか?
      • 参照を "で囲んでいないか?
    • 合計対象範囲(省略時は、検索範囲の値が数値でなく、文字列として認識されている
      対策:セルの書式を 数値 (or 指数など) にする。セル記入値に含まれる 空白文字特殊文字を削除する。
  • #VALUE!エラーが表示されるとき:

    • 検索範囲 合計対象範囲 のサイズが異なっている。
      対策:サイズが同じになるように選択範囲を修正する。

関連する関数

SUMIFS関数と似た機能を持つ関数には、以下があります。

  • SUM関数:指定した範囲の数値を合計する。
  • SUMIF関数: 単一条件 を指定して、合計する。
  • DSUM関数: 複雑な条件(OR、AND条件の組合せなど) を指定して、合計できる。
  • SUBTOTAL関数: フィルター機能による非表示の値を排除 して、合計値を算出できる。
  • AGGREGATE関数:SUBTOTAL関数の機能に加え、 エラー値を除去 して合計値を算出できる。
  • SUMPRODUCT関数:複数の配列の 要素同士の積 (または和/差/商) を合計する。

使用例、応用例

SUMIFS関数の使用例・応用例として、以下のパターンを紹介します。

  • 複数列のデータへの対応: 検索範囲合計対象範囲 を同サイズのまま参照位置をずらす。
  • 部分一致検索: 検索条件にワイルドカードを使用。

複数列のデータへの対応

検索範囲 中でマッチした位置と 同じ位置の値が合計対象範囲から読み取られる※ ことを利用すると、 複数列のデータにも対応できます。

※ たとえば、 検索範囲内の2行3列目がマッチする場合、 合計対象範囲内の2行3列目の値が計算に使用される。

関数の構成

=SUMIFS( 合計対象範囲 , 検索範囲 , 検索値 )

部分一致検索

SUMIFS関数では、検索条件にワイルドカードを使用できるため、 部分一致検索が可能です。 ワイルドカードの文字数を限定したい場合は、 *(アスタリスク記号)でなく?(疑問符 / ハテナ記号)を使用します。

関数の構成

=SUMIFS( 合計対象範囲 , 検索範囲 , 検索値 )

検索値に、ワイルドカード * 使用


ワイルドカード

ワイルドカードとは、任意の文字列を表す特殊な文字のことです。
言葉で表すと「ほにゃらら」「○○」などのイメージです。
特定の文字列が含まれるかどうかを調べるときに使用します。
関連する記号としては、以下があります。

  • * (アスタリスク記号):任意の文字列(文字数不定)
  • ? (疑問符 / ハテナ記号):任意の1文字
  • ~ (チルダ記号):エスケープ記号(*, ? 記号を検索文字として使用する場合に使用)

【参照範囲のサイズが異なっている例】
ABCDEFGH
1❌指定範囲サイズが異なる✅指定範囲サイズがすべて同じ
2A1A1
3AOK1AOK1
4BOK1BOK1
5B1B1
6BOK1BOK1
7
8BかつOKの合計値:#VALUE!BかつOKの合計値:2

ABCDEFGHIJ
1A1B1
2A1B1検索値:B
3A1C1合計値:4
4B1C1
5B1C1

ABCDEF
11-a10
21-b10検索値:*-b
31-c10合計値:20
42-a10
52-b10