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関数の実務活用パターン3選
DELTA関数は「等しいか」を0と1で返すシンプルな関数ですが、実務に落とし込むと一気に使い勝手が良くなります。 ここでは現場でそのまま使える3つのパターンを紹介しますよ。 いずれもDELTAと集計関数を組み合わせるのがコツです。
パターン1:品質チェック(規格値と実測値の一致確認)
製造現場でよくあるのが、製品の規格値と実測値が一致しているかのチェックです。 A列に規格値、B列に実測値が並んでいるとき、一致した件数を次の数式でカウントできます。
=SUMPRODUCT(DELTA(A2:A11, B2:B11))
DELTA関数が各行のペアを比較して一致なら1、不一致なら0を返し、SUMPRODUCTがその合計を出す仕組みです。 たとえば10件中8件が規格どおりなら結果は「8」になります。
逆に不一致(不良)の件数を知りたいときは、全体件数から引き算しましょう。
=COUNT(A2:A11) - SUMPRODUCT(DELTA(A2:A11, B2:B11))
合格件数と不良件数を一度に把握できるので、検査結果の集計がぐっと楽になりますよ。
パターン2:シフト照合(予定と実績の一致件数カウント)
勤怠管理では、予定シフトと実績シフトがどれだけ一致したかを確認したい場面があります。 シフトを数値コード(早番=1、遅番=2、休み=0など)で管理している場合、DELTA関数がそのまま使えます。
=SUMPRODUCT(DELTA(C2:C31, D2:D31))
C列に予定シフトコード、D列に実績シフトコードが入っている前提です。 この数式で「予定どおりに勤務した日数」が一発で求まります。 30日のうち28日が予定どおりなら、結果は「28」ですね。
シフトを文字列(「早番」「遅番」など)で管理している場合は、DELTAではなくCOUNT系の関数が向いています。 数値コードでの運用に切り替えると、こうした集計が一気に効率化できますよ。
パターン3:在庫差異チェック(帳簿在庫と実地棚卸の一致確認)
棚卸では、帳簿上の在庫数と実地で数えた棚卸数が一致しているかが重要です。 A列に帳簿在庫、B列に実地棚卸数が並んでいるとき、差異が出ている商品の件数を次の数式で求められます。
=COUNT(A2:A50) - SUMPRODUCT(DELTA(A2:A50, B2:B50))
SUMPRODUCT(DELTA(...))で一致件数を出し、全体件数から引くことで「差異あり」の件数を算出しています。 たとえば50品目中3品目に差異があれば、結果は「3」になります。
差異が1件でもあれば棚卸調査が必要なので、この数式を条件付き書式やIF関数と組み合わせると、アラート表示も作れます。 在庫管理の精度チェックに役立ててくださいね。
よくある質問
DELTA関数についてよく寄せられる疑問をまとめました。 似た関数との使い分けや、つまずきやすいポイントを確認しておきましょう。
Q1:COUNTIFでも同じことができますか?
部分的には可能ですが、用途が異なります。 COUNTIF関数は「特定の条件に合うセルの個数」を数える関数です。 一方DELTA関数は「2つのセル同士が一致するか」を行ごとに比較します。
たとえば「A列とB列を行ごとに突き合わせて一致件数を数える」という処理は、COUNTIFだけではうまく書けません。 COUNTIFは1つの基準値に対する一致件数を数えるのが得意で、ペア同士の照合は苦手だからです。
行単位のペア比較・集計をしたいときはDELTA+SUMPRODUCT、1つの条件に合う件数を数えたいときはCOUNTIF、と覚えておくと迷いませんよ。
Q2:数値ではなく文字列を比較したい場合はどうすればいいですか?
DELTA関数は数値専用なので、文字列を渡すと#VALUE!エラーになります。 文字列同士を比較したい場合は、別の方法を使いましょう。
大文字と小文字を区別して厳密に比較したいなら、EXACT関数が最適です。
=SUMPRODUCT(--EXACT(A2:A11, B2:B11))
EXACTはTRUE/FALSEを返すので、--(二重マイナス)で1と0に変換してからSUMPRODUCTで合計します。 これでDELTAと同じように文字列の一致件数をカウントできますよ。
大文字小文字を区別しなくてよい場合は、=A2=B2という単純な比較式でも判定できます。 用途に応じて使い分けてくださいね。
Q3:比較する数値に小数が含まれている場合、誤差が出ることはありますか?
はい、出る可能性があります。 Excelは内部で数値を浮動小数点で扱うため、計算結果の小数同士を比較すると、見た目は同じでも内部的にはわずかに違う値になっていることがあるのです。
たとえば =0.1+0.2 の結果と 0.3 をDELTAで比較すると、誤差のせいで「0(不一致)」になる場合があります。
=DELTA(0.1+0.2, 0.3) → 0 になることがある
これを防ぐには、比較する前にROUND関数で桁を丸めておくのが確実です。
=DELTA(ROUND(A1, 2), ROUND(B1, 2))
小数点以下2桁に揃えてから比較すれば、微小な誤差に振り回されずに済みます。 金額や計測値など小数を扱うデータでは、丸めてから比較する習慣をつけておくと安心ですよ。
まとめ
DELTA関数は、2つの数値が等しいかを0と1で判定するシンプルな関数です。
- 等しければ1、異なれば0を返す
- 第2引数を省略すると0との比較になる
- SUMPRODUCTとの組み合わせで一致件数のカウントが得意
- 文字列を渡すと#VALUE!エラーになるので注意
- 文字列比較ならEXACT関数、条件分岐ならIF関数を使い分ける
0と1の数値を返すという特性を活かして、集計や分析に活用してみてください。
DELTA関数はExcel 2016以降のすべてのバージョンで利用できます。 Microsoft 365やExcel for the webでも同じ構文で使えますよ。