- XLOOKUP関数の第6引数(検索モード)を「-1」にすると検索範囲を下から順に検索します。
下から検索する方法
左側に台本のようなデータがあります。
E3セルにXLOOKUP関数を使った式を入力し、出演者「佐々木」のセリフのうち最後(一番下の行)にあるものを抽出しています。
E3セル
=XLOOKUP("佐々木",B3:B9,C3:C9,,,-1)
第6引数を(検索モード)「-1」にすることで、下から順に検索が行われます。
これにより検索値(佐々木)が検索範囲(B列)内に複数存在するとき、その一番下にあるものにマッチし、それに対応する検索範囲(C列)の値が抽出されます。
検索値が検索範囲内に1つしかなければ、普通に上から検索しても「-1」を指定して下から検索しても結果は当然変わりません。
応用例:一番上の行から一番下の行までの区間を抽出する
検索モード「-1」を使った、少し変わった例を紹介します。
次の画像では出演者「佐々木」のセリフのうち最初(一番上の行)から最後(一番下の行)まで、他の者のセリフを含め、さらに複数列を抽出しています。
E3セル
=XLOOKUP("佐々木",B3:B9,B3:B9):XLOOKUP("佐々木",B3:B9,C3:C9,,,-1)
B列を戻り範囲として上から順に検索する「XLOOKUP("佐々木",B3:B9,B3:B9)」と、C列を戻り範囲として下から検索する「XLOOKUP("佐々木",B3:B9,C3:C9,,,-1)」を「:」でつないでいます。
これらを別々に実行するとB4セルの値「佐々木」とC8セルの値「もう残っていません」がそれぞれ抽出されるわけですが、参照演算子「:」でつなぐことにより「B4:C8」と同じ意味の参照となります。結果的にこの範囲のすべてのセルが抽出されます。
FILTER関数による抽出と異なり、条件と無関係の行も含めて抽出されることがポイントです。
なお、一部の関数(INDEX関数など)では、このように「:」でつなぐことにより、一定のセル範囲を参照したのと同じような効果を得ることができます。