VLOOKUPで氏名検索がずれる原因と解決方法|LEFT関数との組み合わせや部分一致検索の正しい使い方

Office系ソフトウェア

Excelで社員名簿などを検索するとき、VLOOKUP関数とLEFT関数を組み合わせて氏名の一部から検索したい場面があります。しかし、漢字氏名の先頭2文字だけを検索キーにすると、別の人が抽出される、関係ないデータが表示されるといった問題が起こることがあります。

この記事では、VLOOKUPで氏名検索が正しくできない理由や、LEFT関数を使った場合の注意点、正確にフリガナや社員番号を取得するための方法について解説します。

VLOOKUPとLEFT関数の組み合わせで検索結果がずれる理由

LEFT関数は指定した文字数を左側から取り出す関数です。例えば「山田 太郎」という氏名がセルA1に入っている場合、LEFT(A1,2)では「山田」が取得できます。

しかし、VLOOKUP関数は基本的に検索値と検索範囲の左端列を比較し、最初に一致したデータを返す仕組みです。そのため、検索キーを名字2文字だけにすると、同じ2文字で始まる別人がいる場合に正しい人物を特定できません。

例えば「山田 太郎」と「山田 花子」が同じ表に存在する場合、LEFT関数で「山田」だけを検索すると、VLOOKUPは上から順番に見つかった最初の「山田」の情報を返します。

氏名の頭2文字検索が危険な理由

氏名の一部分だけを検索条件にする方法は、データ量が少ない場合には便利に見えますが、社員名簿などでは重複が発生しやすい方法です。

特に日本人の氏名では同じ名字が多く、「佐藤」「鈴木」「高橋」などは大量のデータ内で重複する可能性があります。

40件程度のデータでは偶然問題が発生しなくても、人数が増えた場合には誤った社員情報を取得するリスクがあります。そのため、社員番号など一意になる情報を検索キーにすることが基本です。

正確な検索には社員番号などの一意キーを使う

VLOOKUPで最も安全な方法は、氏名ではなく重複しない項目を検索値にすることです。

例えば社員番号がA列、氏名がB列、フリガナがC列の場合、社員番号を検索キーにすれば必ず1人だけを特定できます。

例として、社員番号「10025」を検索値にする場合は以下のような形になります。

VLOOKUP(検索する社員番号,社員番号を左端にした表範囲,取得したい列番号,FALSE)

最後の引数はFALSE(完全一致)にすることが重要です。TRUEや省略を使うと近似一致になり、意図しないデータが返る可能性があります。

どうしても氏名から検索したい場合の対処方法

社員番号などがなく、氏名しか利用できない場合は、名字だけではなくフルネームを検索条件にする方法がおすすめです。

例えば「山田 太郎」という文字列をそのまま検索値にすれば、「山田 花子」と間違える可能性はなくなります。

また、氏名の間にあるスペースが半角・全角で違う場合も一致しない原因になります。その場合はSUBSTITUTE関数などで空白を統一してから検索すると安定します。

例として、余分なスペースを削除した検索用データを作る場合は、SUBSTITUTE(A1,” “,””)のような処理を追加します。

部分一致検索をしたい場合はXLOOKUPやINDEX関数も検討する

Excelの新しいバージョンでは、VLOOKUPより柔軟なXLOOKUP関数を利用できます。

XLOOKUPでは検索方法を指定できるため、条件によってはVLOOKUPより扱いやすくなっています。ただし、部分一致検索を行う場合でも、重複する名前があると正しい人物を判断できない問題は残ります。

大量の社員データを扱う場合は、名前検索ではなく社員番号などの管理番号を利用する設計に変更することが最も確実です。

まとめ

VLOOKUPとLEFT関数を組み合わせて氏名の頭2文字から検索する方法は、簡単に見えますが、同じ文字で始まる名前が存在すると誤った結果を返す可能性があります。

正確なデータ抽出を行うには、社員番号など重複しない検索キーを使い、VLOOKUPでは完全一致のFALSEを指定することが重要です。

氏名しか使えない場合はフルネーム検索や空白の統一などの対策を行い、データ量が増えても間違いが起きにくい仕組みにしておくことが大切です。

コメント

タイトルとURLをコピーしました