いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Excel)XLOOKUP関数で大文字と小文字を区別する

 ExcelのXLOOKUP関数では、検索値(第1引数)を大文字で入力しても小文字で入力してもその違いを無視して検索するため、意図しない結果となる場合があります。
 そこで、式を少し工夫して大文字と小文字を区別して検索する方法を試してみます。

  • XLOOKUP関数とEXACT関数を組み合わせることで大文字と小文字を区別して検索することができます。

手順

 まずはXLOOKUP関数を普通に使った場合の結果についてです。
 画像ではE3セルに入力された商品コード「abc」を左側の表から検索し、対応する商品名を取得しようとしています。
 しかしF3セルの式を普通に「=XLOOKUP(E3,B3:B10,C3:C10)」としたところ、大文字と小文字を区別せず検索するため「Abc」が(最初に)マッチするものと判断され、結果的に「さくらんぼ」を取得しています。

 この表の内容からいえば「ぶどう」を取得してほしいところですが、結果的に意図しない値を取得しています。
 


 そこで次の画像では、式の内容を変えて大文字と小文字を区別した検索を行い、意図する値「ぶどう」を取得しています。

 F3セル

=XLOOKUP(TRUE,EXACT(B3:B10,E3),C3:C10)

 文字列を厳密に(大文字と小文字を区別して)比較するEXACT関数を使い、第2引数を「EXACT(B3:B10,E3)」とすることで、検索値(E3セル)とB列の値を厳密に比較した結果(TRUEまたはFALSE)を取得しています。
 ここから「TRUE」の値を検索することで、厳密に一致する商品コードに対応する商品名を取得しています。
 


 上記の式の「EXACT(B3:B10,E3)」の部分だけ実行すると次のようになります。
 大文字と小文字を区別したうえで一致している行だけが「TRUE」となっています。ここからXLOOKUPで「TRUE」を検索することにより、対応する「ぶどう」が取得できることがわかります。

 


 なお、次の画像では3つの検索値を検索しています。
 上記の式のEXACT関数の第2引数を「E3:E5」としてもうまくいかない(スピルしない)ので、絶対参照を使った式にしてF5セルまで下方にフィルコピーしています。

 F3セル(下方にコピー)

=XLOOKUP(TRUE,EXACT(B$3:B$10,E3),C$3:C$10)