Excelで同じ行の2つの文字列を比較するなら、=IF(A1=B1,"一致","不一致") を使います。大文字・小文字まで区別したいときはEXACT関数を組み合わせます。まず「同じ行を比べる」のか「別の一覧に存在するかを探す」のかを分けて考えましょう。
IF関数で文字列が一致するかを表示する
A列に比較元、B列に比較先を用意し、C1に次の式を入力します。下へコピーすると、各行のA列とB列を比較できます。
=IF(A1=B1,"一致","不一致")
| A列 | B列 | 上の式の結果 |
|---|---|---|
| apple | Apple | 一致 |
| banana | Banana | 一致 |
| grape | grape | 一致 |
| apple | apples | 不一致 |
通常の「=」による文字列比較は英字の大文字・小文字を区別しません。「一致なら〇、違えば空白」にするなら、返す文字を変更します。
=IF(A1=B1,"〇","")
IF関数の中で直接文字を指定するときは =IF(A1="完了","確認済み","") のように半角のダブルクォーテーションで囲みます。セル番地B1を指定する場合は囲みません。
EXACT関数で大文字・小文字まで比較する
=EXACT(A1,B1)
一致すればTRUE、不一致ならFALSEです。「apple」と「Apple」はFALSE、「grape」と「grape」はTRUEになります。判定を日本語で表示する式は次のとおりです。
=IF(EXACT(A1,B1),"一致","不一致")

EXACTは文字の内容を比較します。フォントの色や太字などの書式が同じかどうかは判定しません。
空白の行を判定から外す
未入力の行まで「一致」と表示させたくない場合は、先に空白を判定します。次は、どちらかが空白なら結果を空白にする例です。
=IF(OR(A1="",B1=""),"",IF(A1=B1,"一致","不一致"))
この式は数式で返された空文字 "" も空白として扱います。「一方だけ未入力」を見つけることが目的なら、空白にせず「未入力あり」と表示させてください。
見た目が同じなのに一致しないとき
余分なスペースを調べる
LEN(A1) と LEN(B1) で文字数を比べると、見えにくい空白に気付きやすくなります。前後の半角スペースを除いて比較する例です。
=IF(TRIM(A1)=TRIM(B1),"一致","不一致")
TRIMは途中の連続する半角スペースも1個にまとめます。氏名や商品コードで空白自体に意味がある場合は、勝手に除去しないでください。全角スペースや改行、Web由来の特殊な空白は別途確認が必要です。
数値と文字列を区別する
数値の100と文字列の「100」が混在していないか、ISNUMBERやISTEXTで確認します。金額など数値として比較する項目は数値へ統一し、先頭の0が必要な社員番号などは文字列へ統一します。文字列を数値に一括変換する方法も参考になります。
文字列を「含む」か判定する
次はA1に「営業」が含まれるかを調べる式です。SEARCHは英字の大文字・小文字を区別せず、見つからない場合はエラーになるため、ISNUMBERで判定します。
=IF(ISNUMBER(SEARCH("営業",A1)),"含む","含まない")
大文字・小文字を区別する部分一致にはFINDを使います。LIKEはExcelの通常のセル数式で使う演算子ではありません。
不一致の行に色を付ける・一致数を数える
A1:B100を選択し、[ホーム]→[条件付き書式]→[新しいルール]→[数式を使用して、書式設定するセルを決定]で、次の式と塗りつぶし色を設定します。
=$A1<>$B1
これはセル全体を色付けする方法で、違う文字だけを着色するものではありません。両列に値がある行だけで一致数を数える場合は、次の式を使います。
=SUMPRODUCT((A1:A100<>"")*(B1:B100<>"")*(A1:A100=B1:B100))
複数列の組み合わせを比べる場合は、単純連結による取り違えを避け、=IF(AND(A1=D1,B1=E1,C1=F1),"一致","不一致") のように列ごとに比較します。
順番が違う2つの名簿を比較したい場合
行の順番が違う名簿にA1=B1を使うと、同じ人が別の行にいても不一致になります。その場合はCOUNTIFなどで一覧内の存在を調べます。2つの名簿を比較して片方にしかないデータを抽出する方法へ進んでください。
仕様の確認:Microsoft公式・EXACT関数 / Microsoft公式・TRIM関数 / Microsoft公式・SEARCH関数

コメント