ExcelのEXACT関数の活用法:データ一致性のチェックを完璧に

ExcelのEXACT関数は、二つの文字列が一文字ずつ同じならTRUE、違えばFALSEを返します。書式の違いは無視しますが、英字の大文字と小文字、途中や末尾の空白など文字そのものの違いは区別します。基本式は=EXACT(A2,B2)です。名簿、商品コード、メールアドレス、移行前後の文字列を行単位で照合し、FALSEだけを抽出すると入力ミスを見つけやすくなります。ただしEXACTは「業務上同じ人物・商品か」を判断する関数でも、数値精度や文字コードを正規化する関数でもありません。最初に何を一致とみなすかを決め、原本を残した補助列で検証します。

目次

EXACT関数が判定するもの

Microsoftの現行資料では、EXACTは二つのテキスト文字列を比較し、完全に同じならTRUE、それ以外はFALSEを返す関数です。構文はEXACT(text1,text2)で、二つの引数はどちらも必須です。=EXACT("Excel","Excel")はTRUE、=EXACT("Excel","EXCEL")はFALSEです。

判定対象はセルの見た目ではなく文字列です。Microsoftは、EXACTが大文字と小文字を区別する一方、書式設定の違いを無視すると説明しています。つまり、同じ「ABC」へ片方だけ太字や赤色を設定してもTRUEです。フォント、塗りつぶし、罫線、表示形式まで比較したい場合はEXACTだけでは足りず、別の点検方法が必要です。

まず行ごとの補助列で比較する

A列が正しいマスター、B列が取り込み後の値なら、C2へ=EXACT(A2,B2)を入力して下までコピーします。C列をFALSEでフィルターすれば差分候補だけを確認できます。テーブルに変換して構造化参照を使う場合も、列の追加時に式が自動展開されたかを確認します。

いきなり一致件数だけを数えるより、各行のTRUE・FALSEと元の二値を並べる方が原因を追いやすくなります。行順が同じでない一覧は、行番号で比較してはいけません。先に一意なIDで対応付け、重複IDや未対応行を確認してから文字列を比較します。並べ替え前の行番号も保持すると誤対応を戻せます。

大文字・小文字を区別する用途に使う

通常のテキスト比較では大小文字の違いを無視したい場面もありますが、製品コード、部品番号、システムIDでは大小文字が意味を持つ場合があります。=EXACT(A2,"AbC-001")なら「ABC-001」や「abc-001」を不一致にできます。入力規則の確認列や監査列として利用できます。

一方、氏名やメールアドレスなどで大小文字の違いをエラーにするかは業務ルール次第です。技術的にFALSEだからといって、直ちに別データとは限りません。大文字小文字を無視する比較が要件なら、UPPERまたはLOWERで両方を同じ形へ変換した補助列を比較し、原文差分も別列に残します。

空白と見えない文字を切り分ける

Microsoftの例では、文字の途中に空白が一つ入るだけでもEXACTはFALSEになります。先頭・末尾の空白、連続する空白、改行、タブ、ノーブレークスペース、全角空白も、見た目では気づきにくい差分です。まずLENで文字数を並べ、数式バーや置換候補を確認します。

=EXACT(TRIM(A2),TRIM(B2))は通常の余分な半角空白を整理した後の比較に使えますが、TRIMはUnicodeのすべての空白を除去する万能関数ではありません。MicrosoftはTRIMが7ビットASCIIの空白文字32を対象とし、Webデータで使われるノーブレークスペース160は単独では除去しないと説明しています。必要ならSUBSTITUTEやCLEANを組み合わせ、何を消すかを明示します。

正規化前と正規化後を別々に判定する

品質点検では、原文の完全一致列と、承認済みの正規化後一致列を分けると判断しやすくなります。C列を=EXACT(A2,B2)、D列を=EXACT(TRIM(A2),TRIM(B2))とすれば、CがFALSEでDがTRUEの行は通常の余分な空白が原因だと推測できます。

推測したまま一括置換せず、代表行を開いて確認します。住所の建物名、商品名、パスワード、固定幅コードでは空白が意味を持つことがあります。全角・半角、ハイフンの種類、Unicodeの結合文字も業務ルールなしに統一しません。正規化式、対象列、処理日、処理前後件数を記録し、原本列を上書きしない運用が安全です。

数値・日付は表示と内部値を分けて考える

EXACTはテキスト文字列を比較する関数です。金額や日付の一致を確かめたい場合は、まず数値として同じか、画面表示まで同じかを決めます。同じ日付の内部値へ異なる表示形式を設定しても、書式差はEXACTの対象ではありません。桁区切り、通貨記号、日付形式の見た目を監査する用途には向きません。

数値セルと文字列として保存された数字を混在させた式は、暗黙の変換に依存して意図が伝わりにくくなります。数値の等価性なら=A2=B2や差の許容範囲を明示した式、表示文字の一致ならTEXTで書式を明示してから比較します。浮動小数点の丸め誤差を「完全一致」で判定せず、計算目的に合う許容差を設計します。

空白セルとエラー値を隠さない

両方が空文字なら一致と判定されるため、TRUEが「有効な値が存在する」ことまでは保証しません。必須項目では=AND(A2<>"",B2<>"",EXACT(A2,B2))のように空欄条件を分けます。ただし数式の空文字と本当の空セルを区別する必要がある場合は、ISBLANKなども検討します。

参照元に#N/Aや#VALUE!などがあれば、EXACTの結果もエラーになることがあります。IFERRORで一律TRUEや空白へ変えると差分を見落とします。エラー列を別に作り、未入力、検索失敗、計算失敗、文字不一致を別の状態として数えます。監査結果にはTRUE件数だけでなくFALSE件数、空欄件数、エラー件数を残します。

一覧全体を一つのTRUEだけで判定しない

複数行をまとめて比較する配列式は作れますが、Excelの版や動的配列の対応によって入力・表示が変わります。また、最終結果がFALSEだけではどの行が違うか分かりません。配布先の互換性と保守性を優先し、まず行ごとの補助列を作る方法が堅実です。

全行一致の最終確認が必要なら、行別結果をCOUNTIFで集計し、FALSEまたはエラーが0件かを確認します。条件付き書式でFALSEを強調する場合も、数式の適用範囲と相対参照を点検します。大量データでは列全体参照を乱用せず、テーブルまたは実データ範囲へ限定して再計算負荷を抑えます。

部分一致には別の関数を使う

EXACTは文字列全体を比較します。「セル内に特定語が含まれるか」「先頭何文字だけが同じか」には向きません。大文字小文字を区別した含有判定ならFINDとISNUMBER、先頭部分ならLEFTで同じ長さを取り出してEXACTするなど、目的を式に表します。

部分一致を完全一致の代わりに使うと、似た別コードや別人物を同一と誤判定します。氏名と生年月日、商品コードと版番号など、複数項目の照合では各項目の結果を別列にしてから総合判定します。結合文字列だけで比較すると区切り位置の衝突が起きるため、項目単位の監査を残します。

指定された範囲の全てのセルが”Excel”と一致している場合

実務での検証手順と完了条件

最初に比較対象、主キー、一致条件、大小文字、空白、全角・半角、数値・日付、欠損値の扱いを決めます。次に元ファイルを複製し、行対応を確定して、EXACTの補助列を追加します。FALSEとエラーをフィルターし、原因別に分類してから承認済みルールで正規化します。

一つでも一致していないセルがある場合
一つでも一致していないセルがある場合

修正後は再計算し、全件数、TRUE、FALSE、空欄、エラー、重複キー、未対応キーの合計が元件数と整合するか確認します。手作業で直したセルも変更履歴に含めます。EXACTのTRUEは文字列比較に成功した証拠であり、情報の正しさ、最新性、本人性、ファイルの改ざん防止を保証するものではない点を明記します。

確認チェックリスト

  • 比較する二列が同じ行・同じIDのレコードか確認する
  • 大文字小文字と空白を違いとして扱うか業務ルールを決める
  • 原文完全一致と正規化後一致を別列で残す
  • 数値・日付は内部値と表示文字のどちらを比較するか決める
  • FALSE、空欄、数式エラー、重複・未対応キーを別々に集計する
  • 原本を上書きせず、代表例と境界例で結果を再確認する

公式情報・参考資料

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次