いきなり答える備忘録

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

(Excel)XLOOKUP関数で「~以外」「空白以外」を検索する方法

 ExcelのXLOOKUP関数で、指定した値以外のものを検索して値を抽出する方法についてです。特殊ケースとして空白以外を検索する例も紹介します。

指定値以外を検索する方法

 次の画像ではB列に入力されている産地のうち「山形県」以外の値を検索して、対応する品目を取得しています。

 E3セル

=XLOOKUP(TRUE,B3:B8<>"山形県",C3:C8)

 第2引数を「B3:B8<>"山形県"」とすることでB列の値をTRUE(「山形県」に該当しない場合)またはFALSE(する場合)に変換しています。
 あとは第1引数(検索値)をTRUEとすることで結果的に「山形県」以外の最初のものの位置を特定し、対応する品目を取得しています。



 次の画像はワイルドカードを使って「~以外」を検索する例です。
 B列の産地のうち「『山』の字を含まないもの」を検索し、対応する品目を取得しています。

 E3セル

=XLOOKUP(TRUE,COUNTIFS(B3:B8,B3:B8,B3:B8,"<>*山*")>0,C3:C8)

 単純に「B3:B8<>"*山*"」とはできないのでCOUNTIFS関数を利用しています。このCOUNTIFS関数の第1引数(範囲1)と第2引数(条件1)をともに「B3:B8」とすることでスピルを働かせて各セルごとのカウントを実現しています(ワイルドカードの条件に該当する、つまり「山」を含まないなら1、含むなら0。ただし条件に該当する産地名が重複する場合は2以上にもなります)。さらに「>0」で評価することによりTRUE/FALSEに変換し、そこからTRUEを検索しています。

空白以外を検索する方法

 まずは純粋な空白セル(未入力)のほか空文字列(関数で「""」が返されたときのような長さ0の文字列)を除いて検索する例です。
 通常「空白以外」という場合はこちらでよいかと思います。

 E3セル

=XLOOKUP(TRUE,B3:B8<>"",C3:C8)

 比較対象を「""」とし、1文字以上の文字(数値日付もOK)が入っているセルをTRUE、それ以外をFALSEに変換しています。
 あとは第1引数(検索値)をTRUEとすることで産地を検索し、品目を取得しています。



 次の画像は純粋な空白セル(未入力)のみを除いて検索する例です。

 E3セル

=XLOOKUP(FALSE,ISBLANK(B3:B8),C3:C8)

 ISBLANK関数を使い空白セルをTRUEに、それ以外をFALSEに変換し、FALSEを検索しています。
 なお、次のようにしても同じ結果になります(XLOOKUP関数の第1引数をTRUEで統一したい場合)。

=XLOOKUP(TRUE,NOT(ISBLANK(B3:B8)),C3:C8)