Excel DELTA関数とは?クロネッカーデルタの基本
「2つの数値が同じかどうかを判定したい」と思ったことはありませんか? IF関数だとTRUE/FALSEが返りますよね。 そのままでは計算に使えず不便です。
ExcelのDELTA関数を使えば、2つの数値が等しいとき1、異なるとき0を返してくれます。 この0と1の数値がそのまま計算に使えるのが最大の強みです。 SUMPRODUCT関数と組み合わせれば、一致件数のカウントもワンステップで完了しますよ。
この記事では、DELTA関数の基本から実務活用、似た関数との違いまでまとめて解説しますよ。
読み方と語源
DELTA関数は「デルタかんすう」と読みます。 名前の由来はギリシャ文字のデルタ(δ)です。 数学では「クロネッカーのデルタ(Kronecker delta)」と呼ばれる概念に対応しています。 δ(i, j) は i と j が等しければ1、異なれば0を返す関数です。 Excelのエンジニアリング関数カテゴリに分類されていますよ。
構文と引数
DELTA関数の構文は次のとおりです。
=DELTA(数値1, [数値2])
引数はシンプルに2つだけです。
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 数値1 | 必須 | 比較する最初の数値 |
| 数値2 | 省略可 | 比較する2番目の数値。省略すると0として扱われる |
引数の順番はどちらが先でも結果は変わりません。 DELTA(5, 3) でも DELTA(3, 5) でも同じ0が返りますよ。
返り値(0と1)の意味
DELTA関数の返り値はとてもシンプルです。
- 数値1 = 数値2 のとき → 1を返す
- 数値1 ≠ 数値2 のとき → 0を返す
IF関数のようにTRUE/FALSEではなく、数値の0と1で返るのがポイントです。 数値なので、そのまま足し算や掛け算に組み込んで使えますよ。
DELTA関数の基本的な使い方と具体例
2つの数値を比較する
もっとも基本的な使い方は、2つの数値が同じかどうかの判定です。
=DELTA(5, 5) → 1(等しい)
=DELTA(5, 4) → 0(異なる)
=DELTA(0.5, 0) → 0(異なる)
セル参照でも同じように使えます。 たとえばA1に「10」、B1に「10」が入っていれば、次の数式は1を返します。
=DELTA(A1, B1) → 1
在庫データの照合や、入力値のチェックに便利ですよ。
数値2を省略した場合(0との比較)
第2引数を省略すると、数値1が0かどうかを判定します。
=DELTA(0) → 1(0と0の比較なので一致)
=DELTA(3) → 0(3と0の比較なので不一致)
「セルの値がゼロかどうか」を素早く調べたいときに使ってみてください。
SUMPRODUCTと組み合わせた実務活用
DELTA関数の真価は、他の関数と組み合わせたときに発揮されます。 特にSUMPRODUCT関数との組み合わせは定番です。
一致件数を一括カウントする数式
A列の目標値とB列の実績値が一致する件数を数えたい場合、次の数式で一発です。
=SUMPRODUCT(DELTA(A2:A11, B2:B11))
DELTA関数がA2とB2、A3とB3…と各行のペアを比較して、一致なら1、不一致なら0を返します。 SUMPRODUCTがその1と0を合計するので、一致件数が求まる仕組みです。
たとえば次のようなデータがあるとします。
| A列(目標) | B列(実績) | DELTA結果 | |
|---|---|---|---|
| 2行目 | 100 | 100 | 1 |
| 3行目 | 200 | 180 | 0 |
| 4行目 | 150 | 150 | 1 |
| 5行目 | 300 | 300 | 1 |
この場合、SUMPRODUCT(DELTA(A2:A5, B2:B5))の結果は3になります。 目標どおりの実績が3件あることがわかりますね。
複数列の一致チェックへの応用
2つの条件を同時に満たす件数を数えたいときは、DELTA関数を掛け算で組み合わせます。
=SUMPRODUCT(DELTA(A2:A11, B2:B11) * DELTA(C2:C11, D2:D11))
A列とB列が一致し、かつC列とD列も一致する行だけがカウントされます。 DELTA関数が0か1を返すので、掛け算すると両方1のときだけ1になる仕組みです。 COUNTIFSでは対応しにくい「完全一致の組み合わせ」を柔軟にチェックできますよ。
IF・EXACT・GESTEPとの違い比較表
DELTA関数と似た機能を持つ関数がいくつかあります。 用途に応じて使い分けましょう。
| 項目 | DELTA | IF | EXACT | GESTEP |
|---|---|---|---|---|
| 比較対象 | 数値のみ | 数値・文字列・論理値 | 文字列(大文字小文字区別あり) | 数値のみ |
| 返り値 | 0 または 1 | 任意の値を指定可能 | TRUE または FALSE | 0 または 1 |
| 判定内容 | 等しいか | 条件を満たすか | 文字列が完全一致か | 以上かどうか |
| SUMPRODUCT連携 | そのまま使える | 工夫が必要 | 工夫が必要 | そのまま使える |
使い分けのポイントは次のとおりです。
- 数値の一致判定+集計に使いたい → DELTA関数
- 条件に応じて表示を変えたい → IF関数
- 文字列を大文字小文字まで区別して比較したい → EXACT関数
- 数値が基準値以上かを判定したい → GESTEP関数
DELTA関数とGESTEP関数はどちらも0/1を返すエンジニアリング関数です。 「等しいか」を見るならDELTA、「以上か」を見るならGESTEPと覚えてください。
VALUEエラーの原因と対処法
DELTA関数で最も多いエラーは#VALUE!エラーです。 原因と対処法を確認しておきましょう。
文字列を渡したときのエラー
DELTA関数は数値専用の関数です。 引数に文字列を渡すと#VALUE!エラーになります。
=DELTA("ABC", "ABC") → #VALUE!エラー
=DELTA(A1, B1) → A1やB1が文字列なら#VALUE!エラー
数字に見えるデータでも、文字列として格納されている場合があります。 セルの左上に緑の三角マークが出ていたら文字列扱いです。 VALUE関数で数値に変換するか、セルの表示形式を「数値」に変更してください。
文字列の比較をしたい場合は、EXACT関数を使いましょう。
日付・論理値の注意点
日付はExcel内部ではシリアル値(数値)として扱われます。 そのためDELTA関数で日付同士の比較は可能です。
=DELTA(A1, B1) → 両方が同じ日付ならシリアル値が同じなので1を返す
ただし、論理値のTRUE/FALSEには注意が必要です。 TRUE(=1)やFALSE(=0)を直接渡すと#VALUE!エラーになります。
=DELTA(TRUE, 1) → #VALUE!エラー
=DELTA(1*TRUE, 1) → 1(TRUEを数値に変換すればOK)
論理値を使いたい場合は、1*TRUEのように算術演算で数値に変換してから渡してくださいね。
まとめ
DELTA関数は、2つの数値が等しいかを0と1で判定するシンプルな関数です。
- 等しければ1、異なれば0を返す
- 第2引数を省略すると0との比較になる
- SUMPRODUCTとの組み合わせで一致件数のカウントが得意
- 文字列を渡すと#VALUE!エラーになるので注意
- 文字列比較ならEXACT関数、条件分岐ならIF関数を使い分ける
0と1の数値を返すという特性を活かして、集計や分析に活用してみてください。
DELTA関数はExcel 2016以降のすべてのバージョンで利用できます。 Microsoft 365やExcel for the webでも同じ構文で使えますよ。
