「同じように見えるのに、VLOOKUPがなぜか一致しない…」。こんな経験はありませんか?
大文字と小文字の違いや、末尾に紛れ込んだスペースが原因で、目視ではまったく気づけないケースが意外と多いんです。何度見直しても原因がわからないと、かなりストレスですよね。
ExcelのEXACT関数を使えば、2つの文字列が完全に一致しているかどうかを一発で判定できます。この記事では、基本の書き方から=演算子との違い、UPPER・TRIM・ASCとの組み合わせまで、実務で使えるパターンをまとめて紹介しますよ。
EXACT関数とは?
EXACT(イグザクト)関数は、2つの文字列を比較して完全一致ならTRUE、1文字でも違えばFALSEを返す関数です。英語の「exact(正確な、厳密な)」が名前の由来になっています。
たとえば「Excel」と「excel」をEXACT関数で比較するとFALSEになります。先頭の「E」と「e」を区別するためです。
ポイントは大文字・小文字を区別することです。通常の=演算子(=A1=B1)では「Excel」と「excel」はTRUEになりますが、EXACT関数はFALSEを返します。この違いが、EXACT関数を使う最大の理由ですよ。
NOTE
EXACT関数はExcelの全バージョンで使えます。Googleスプレッドシートでも同じ書き方で利用可能です。
EXACT関数の書き方(構文と引数)
基本構文
=EXACT(文字列1, 文字列2)
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 文字列1 | 必須 | 比較する1つ目の文字列またはセル参照 |
| 文字列2 | 必須 | 比較する2つ目の文字列またはセル参照 |
引数はどちらも必須です。ダブルクォーテーションで囲んで文字列を直接指定するか、セル参照で指定します。
EXACT関数が区別するもの・しないもの
| 項目 | 区別する? | 例 |
|---|---|---|
| 大文字・小文字 | する | 「Excel」と「excel」→ FALSE |
| 全角・半角 | する | 「ABC」と「ABC」→ FALSE |
| 半角スペースの有無 | する | 「Excel 」と「Excel」→ FALSE |
| 全角スペースの有無 | する | 「Excel 」と「Excel」→ FALSE |
| 書式の違い | しない | 太字の「Excel」と通常の「Excel」→ TRUE |
| 数値と数値の文字列 | しない | 100 と “100” → TRUE |
TIP
空白も1文字としてカウントされます。見た目では同じに見えても、末尾にスペースが入っていると不一致になるので注意してくださいね。
EXACT関数の基本的な使い方
セル参照で比較する
A1に「Excel」、B1に「excel」と入っている場合です。
=EXACT(A1, B1)
結果は FALSE です。先頭の「E」と「e」が異なるためです。
文字列を直接指定して比較する
ダブルクォーテーションで囲めば、セルを使わずに直接比較もできます。
=EXACT("東京都", "東京都")
結果は TRUE です。日本語の全角文字も正確に比較できますよ。
=演算子との違いを確認する
A1に「Hello」、B1に「hello」と入っている場合で比べてみましょう。
| 数式 | 結果 | 理由 |
|---|---|---|
=EXACT(A1, B1) | FALSE | 大文字・小文字を区別する |
=A1=B1 | TRUE | 大文字・小文字を区別しない |
大文字小文字を厳密に比較したいときはEXACT関数を使いましょう。逆に、大文字小文字を気にしない比較なら=演算子で十分です。
EXACT関数の実務活用パターン
パターン1:IF関数と組み合わせてダブルチェック
入力者AとBが同じデータを入力したとき、内容が一致しているか確認するケースです。
=EXACT(B2, C2)
B列とC列を比較して、TRUEなら一致、FALSEなら入力ミスあり、と判断できます。IF関数と組み合わせると、結果をわかりやすく表示できますよ。
=IF(EXACT(B2, C2), "一致", "不一致")
このように書くと、TRUE/FALSEではなく「一致」「不一致」の文字で表示されます。大量のデータを目視でチェックするときに便利です。
パターン2:大文字小文字を無視して比較する(UPPER関数との組み合わせ)
EXACT関数は大文字小文字を区別しますが、逆に「区別したくない」ケースもありますよね。そんなときはUPPER関数で揃えてから比較します。
=EXACT(UPPER(A2), UPPER(B2))
両方を大文字に変換してから比較するので、「Excel」と「excel」でもTRUEが返ります。LOWER関数で小文字に揃えても同じ結果です。
パターン3:スペースを除去してから比較する(TRIM関数との組み合わせ)
データの末尾に余分なスペースが入っていると、見た目は同じでもFALSEになります。TRIM関数で余分なスペースを除去してから比較しましょう。
=EXACT(TRIM(A2), TRIM(B2))
TRIMは前後のスペースと連続スペースを削除してくれます。CSV取り込みデータなど、末尾スペースが混入しやすいデータに効果的ですよ。
パターン4:全角半角を統一してから比較する(ASC関数との組み合わせ)
「ABC」(全角)と「ABC」(半角)もEXACT関数ではFALSEになります。ASC関数で半角に統一してから比較すると、全角半角の違いを無視できます。
=EXACT(ASC(A2), ASC(B2))
逆に全角に統一したい場合はJIS関数を使ってください。
=EXACT(JIS(A2), JIS(B2))
パターン5:データクレンジング後の完全一致チェック
実務では、大文字小文字・全角半角・余分なスペースをまとめてクレンジングしてから比較したいケースが多いです。
=EXACT(UPPER(ASC(TRIM(A2))), UPPER(ASC(TRIM(B2))))
ちょっと長く見えますが、やっていることはシンプルです。3つの処理を順番に入れ子にしています。
- TRIM: 余分なスペースを除去
- ASC: 全角を半角に統一
- UPPER: アルファベットを大文字に統一
全部揃えてからEXACTで比較するので、表記ゆれを無視した「中身の一致チェック」ができますよ。
パターン6:SUMPRODUCT+EXACTで大文字小文字を区別してカウントする
COUNTIF関数は大文字小文字を区別しません。「Apple」と「apple」を別々にカウントしたいときは、SUMPRODUCT関数とEXACT関数を組み合わせます。
=SUMPRODUCT((EXACT(A2:A100, "Apple"))*1)
A2:A100の中から、大文字小文字まで完全に「Apple」と一致するセルの数を返します。*1はTRUE/FALSEを1/0に変換するためのテクニックです。
パターン7:条件付き書式で不一致セルを色付けする
EXACT関数の結果を条件付き書式に使うと、不一致のセルを自動で色付けできます。
- B列を選択
- 「ホーム」→「条件付き書式」→「新しいルール」
- 「数式を使用して、書式設定するセルを決定」を選択
- 数式に
=NOT(EXACT(B2, C2))と入力 - 書式を赤色の塗りつぶしに設定
これで、B列とC列が不一致のセルだけが赤く表示されます。大量データのダブルチェック作業に便利ですよ。
よくあるエラーと対処法
EXACT関数は引数が2つだけのシンプルな関数です。エラーが発生するケースは限られていますが、「期待した結果にならない」パターンは押さえておきましょう。
| 症状 | 原因 | 対処法 |
|---|---|---|
| 同じに見えるのにFALSE | 末尾にスペースが入っている | TRIM関数で余分なスペースを除去してから比較する |
| 同じに見えるのにFALSE | 全角と半角が混在している | ASC関数で半角に統一してから比較する |
| 同じに見えるのにFALSE | 目に見えない制御文字が含まれている | CLEAN関数で制御文字を除去してから比較する |
| 大文字小文字が違うのにTRUE | =演算子を使っている | =A1=B1ではなく=EXACT(A1, B1)を使う |
| #NAME? | 関数名のスペルミス | 「EXACT」のスペルを確認する |
| 数値なのにTRUE | EXACT関数は数値を文字列として比較 | 数値を厳密に比較したい場合はDELTA関数を使う |
TIP
「同じに見えるのにFALSE」の原因を調べたいときは、LEN関数で文字数を比較してみましょう。文字数が違えば、目に見えないスペースや制御文字が含まれている証拠です。
=演算子との違い・使い分け
EXACT関数と=演算子は、どちらも2つの値を比較できます。違いを整理しておきましょう。
| 比較項目 | EXACT関数 | =演算子 |
|---|---|---|
| 大文字・小文字の区別 | する | しない |
| 全角・半角の区別 | する | する |
| 数値の比較 | 文字列として比較 | 数値として比較 |
| 戻り値 | TRUE / FALSE | TRUE / FALSE |
使い分けのポイント:
- 大文字小文字を区別して比較したい → EXACT関数
- 大文字小文字を気にしない比較で十分 →
=演算子 - 数値を正確に比較したい → DELTA関数
テキスト比較で使う関数の全体像
EXACT関数と一緒に使うことが多い、文字列を整えるための関数をまとめました。Excelの文字列関数まとめも合わせて参考にしてみてください。
| 関数 | 役割 | 記事リンク |
|---|---|---|
| EXACT | 2つの文字列を正確に比較 | この記事 |
| UPPER | アルファベットを大文字に | UPPER関数の使い方 |
| LOWER | アルファベットを小文字に | LOWER関数の使い方 |
| PROPER | 単語の先頭を大文字に | PROPER関数の使い方 |
| ASC | 全角を半角に | ASC関数の使い方 |
| JIS | 半角を全角に | JIS関数の使い方 |
| SUBSTITUTE | 指定文字を置換 | SUBSTITUTE関数の使い方 |
| TRIM | 余分なスペースを削除 | TRIM関数の使い方 |
| CLEAN | 制御文字を削除 | CLEAN関数の使い方 |
まとめ
EXACT関数は=EXACT(文字列1, 文字列2)と書くだけで、2つの文字列が完全一致かどうかを判定できる関数です。
- 引数は文字列1と文字列2の2つだけ
- 大文字・小文字を区別するのが
=演算子との最大の違い - UPPER・LOWER関数で揃えてから比較すれば、大文字小文字を無視した比較もできる
- TRIM・ASC関数と組み合わせれば、スペースや全角半角の違いも吸収できる
- SUMPRODUCT+EXACTで大文字小文字を区別したカウントが可能
- 数値の比較にはDELTA関数を使い分けましょう
「同じに見えるのにFALSEになる」ときは、まずLEN関数で文字数を確認してみてください。原因が一発でわかることが多いですよ。
関連記事
- ExcelのIF関数の使い方|条件分岐の基本から応用まで解説
- ExcelのUPPER関数の使い方|アルファベットを大文字に変換する方法
- ExcelのLOWER関数の使い方|アルファベットを小文字に変換する方法
- ExcelのPROPER関数の使い方|単語の先頭を大文字に変換する方法
- ExcelのASC関数の使い方|全角を半角に一括変換する方法
- ExcelのTRIM関数の使い方|余分なスペースを一括削除する方法
- ExcelのSUBSTITUTE関数の使い方|文字列を置き換える方法
- ExcelのCOUNTIF関数の使い方
- ExcelのVLOOKUP関数の使い方|データ検索の基本
- Excelの文字列関数まとめ|抽出・結合・分割・置換を実務シーン別に解説
