スプレッドシートで「2つの数値が一致しているか」を判定するとき、=演算子で十分だと思っていませんか。確かに比較自体はできます。ただ、結果が TRUE / FALSE の論理値で返るため、そのまま合計を取るには工夫が必要です。
そこで便利なのが DELTA関数です。等しければ 1、違えば 0 という数値を返してくれます。そのため、SUMPRODUCT で一致件数を一発カウントできます。ARRAYFORMULA で列全体に展開するなど、集計と直結させやすい関数です。
この記事では、DELTA関数の構文から実務での使いどころまで解説します。=演算子や EXACT関数との違いも、サンプル付きで紹介します。
DELTA関数とは?スプレッドシートで2つの数値の等値を判定する関数
DELTA関数は、2つの数値が等しいかどうかを判定する関数です。等しければ 1、等しくなければ 0 を返します。クロネッカーのデルタという数学記号に由来する、エンジニアリング系の関数です。
Googleスプレッドシートでは「他のスプレッドシート互換」のカテゴリで提供されています。Excel の DELTA関数 と同じ仕様で動作するため、Excel経験者にも違和感なく使えます。
DELTA関数の構文と引数
=DELTA(数値1, [数値2])
| 引数 | 必須 | 内容 |
|---|---|---|
| 数値1 | 必須 | 比較する1つ目の数値 |
| 数値2 | 省略可 | 比較する2つ目の数値。省略時は 0 として扱われる |
文字列を渡すと #VALUE! エラーになります。数値専用の関数だと覚えておきましょう。
戻り値(0と1)の意味
戻り値は次の2パターンだけです。
数値1 = 数値2のとき → 1数値1 ≠ 数値2のとき → 0
「論理値ではなく数値で返る」のがポイントです。そのため、SUM や SUMPRODUCT などの集計関数にそのまま投入できます。
DELTA関数の基本的な使い方
まずは2つの数値を直接比較する基本パターンから見ていきましょう。
2つの数値を比較する
A列とB列に数値が並んでいるとします。C列で同じ行どうしを比較するなら、次のように書きます。
=DELTA(A2, B2)
| A列 | B列 | C列(=DELTA(A2,B2)) |
|---|---|---|
| 100 | 100 | 1 |
| 100 | 99 | 0 |
| 0 | 0 | 1 |
| 3.14 | 3.14 | 1 |
数値が完全に一致したときだけ 1 が返ります。小数も比較できます。
第2引数を省略した場合(0との比較)
DELTA関数は第2引数を省略できます。省略すると、第1引数が 0と等しいかどうか の判定になります。
=DELTA(A2)
A2 が 0 なら 1、それ以外なら 0 が返ります。「ゼロかどうかを 1 と 0 でフラグ立てしたい」場面で便利です。
SUMPRODUCT・ARRAYFORMULAと組み合わせた実務活用
DELTA関数の真価は、集計関数と組み合わせたときに発揮されます。代表パターンを3つ紹介します。
一致件数を一括カウントする
「理論在庫」と「実在庫」が並んだ表で、何行が一致しているかを知りたいとします。次の式で一発算出できます。
=SUMPRODUCT(ARRAYFORMULA(DELTA(A2:A11, B2:B11)))
DELTA が各行で 1 か 0 を返し、SUMPRODUCT がその合計を計算します。結果はそのまま「一致件数」になります。
| 行 | 理論在庫(A) | 実在庫(B) | DELTA結果 |
|---|---|---|---|
| 2 | 50 | 50 | 1 |
| 3 | 30 | 28 | 0 |
| 4 | 100 | 100 | 1 |
| 5 | 20 | 20 | 1 |
このケースなら合計は 3 で、4行中3行が一致しているとわかります。=演算子でも同じことはできますが、論理値を 1 倍する手間が省けるのが DELTA の強みです。
集計関数の組み合わせ方はスプレッドシート SUMPRODUCT関数の使い方も併せて参考にしてください。
ARRAYFORMULAで列全体に展開する
C列に判定結果を一気に書き出したい場合は、ARRAYFORMULA で囲みます。
=ARRAYFORMULA(DELTA(A2:A11, B2:B11))
C2 に入れるだけで、C2:C11 にそれぞれの判定結果が展開されます。1行ずつ DELTA を入力する必要はありません。これは Excel の DELTA関数 にはない、Googleスプレッドシートならではの便利な使い方です。
複数条件の同時一致をチェックする
「商品コード」と「ロット番号」の両方が一致した行だけを 1 として数えたい場合は、DELTA 同士を掛け算します。
=SUMPRODUCT(ARRAYFORMULA(DELTA(A2:A11, C2:C11) * DELTA(B2:B11, D2:D11)))
両方が一致した行だけ 1 × 1 = 1 となり、それ以外は 0 になります。AND条件の数値版として機能します。
条件付きカウントだけが目的ならスプレッドシート COUNTIF関数の使い方も選択肢に入ります。ただし、複数列の同時一致を見るなら DELTA + SUMPRODUCT の方がシンプルです。
DELTA関数と=演算子・EXACT関数との違い
「=演算子で良くない?」「EXACT関数 とは何が違う?」という疑問に答えます。
=演算子との違い
| 観点 | DELTA関数 | =演算子 |
|---|---|---|
| 戻り値 | 0 / 1(数値) | TRUE / FALSE(論理値) |
| 文字列比較 | #VALUE! エラー | 比較可(大文字小文字を区別しない) |
| 集計利用 | SUM・SUMPRODUCT にそのまま使える | 1倍してから集計する必要あり |
=演算子は文字列も比較できますが、結果は論理値です。集計したい場面では「論理値を数値化する」というひと手間が要ります。DELTA は最初から 0 と 1 で返すため、その手間が不要です。
EXACT関数との違い
EXACT関数 は 文字列を大文字小文字も区別して 比較し、TRUE / FALSE を返します。一方の DELTA は 数値専用 で、戻り値は 0 / 1 です。用途で使い分けます。
- 文字列の厳密一致を見たい → EXACT
- 数値の一致を見て、そのまま件数集計したい → DELTA
文字列比較についてはスプレッドシート EXACT関数の使い方で詳しく解説しています。
なお、Excel での挙動はExcel DELTA関数の使い方もほぼ同じです。Excel と Googleスプレッドシート で記事を書き分ける必要はないほど、仕様が揃っています。
DELTA関数のよくあるエラーと対処法
実務でつまずきやすいパターンを3つ挙げます。
#VALUE! エラーが出る
文字列を渡すと発生します。たとえば =DELTA("A", "A") は数値ではないためエラーになります。文字列を比較したい場合は EXACT関数 や =演算子を使ってください。数値が文字列として入力されているセルが原因の場合は、VALUE 関数で数値化してから渡します。
表示は同じなのに 0 が返る
セルに 1.234 と表示されているとします。実際の値が 1.2340000001 のように微妙に違っていると、DELTA は 0 を返します。表示形式と内部の値は別物です。比較前に ROUND で丸めておくと安全です。
=DELTA(ROUND(A2, 2), ROUND(B2, 2))
#N/A エラーが出る
ARRAYFORMULA で範囲を渡したときに、A列とB列の範囲サイズが合っていないと発生します。A2:A11 と B2:B11 のように、長さを揃えて指定してください。
まとめ
- DELTA関数は2つの数値が等しいかを判定し、等しければ 1、違えば 0 を返す関数です
- 第2引数を省略すると、0 との比較になります
- 戻り値が数値なので、SUMPRODUCT で一致件数を一発カウントできます
- ARRAYFORMULA と組み合わせれば、列全体への展開も簡単です
- 文字列を比較したいときは EXACT関数 や
=演算子を使い、DELTA は数値専用と覚えておきましょう
「等値判定の結果を、そのまま集計に持ち込みたい」場面が DELTA関数 のベストフィットです。在庫差異チェック、テスト採点、複数列の同時一致カウントなど、活躍の場は意外と多いはずです。ぜひ実務で試してみてください。
