$を付け忘れたので、修正。
=LET(a,Sheet1!A$1:A$500,XLOOKUP(1,ISNUMBER(FIND(a,A1))*(LEN(a)>0),OFFSET(a,,1),"",,-1))
【解説・上から目線バージョン】
●ISNUMBER(FIND(Sheet1!A$1:A$4,A1))でSheet1!A$1:A$4の文字列が含まれていればTRUE,いなければFALSEになるぞ。
第1形態 赤字部分がTRUEになる行を下から探すよ。
=XLOOKUP(TRUE,ISNUMBER(FIND(Sheet1!A$1:A$4,A1)),Sheet1!B$1:B$4,"",,-1)
●TRUE,FLASEにかけ算などをすると、それぞれ数字の1,0とみなされるぞ。
だから1*ISNUMBER(FIND(Sheet1!A$1:A$4,A1))は1*1まはた1*0だから、結果は1か0のどちらかになるぞ。
第2形態 赤字部分が1になる行を下から探すよ。
=XLOOKUP(1,1*ISNUMBER(FIND(Sheet1!A$1:A$4,A1)),Sheet1!B$1:B$4,"",,-1)
●A$4をA$500などに変えると失敗する。これは、範囲を広めにとったら「空白行」が紛れ込んできたからだ。
そこでLEN(Sheet1!A$1:A$500)>0を条件に追加しよう。これもかけ算にして追加すればTRUEが1に変わるぞ。
第3形態 赤字部分が1*1で1になる行を探すよ。
=XLOOKUP(1,ISNUMBER(FIND(Sheet1!A$1:A$500,A1))*(LEN(Sheet1!A$1:A$500)>0),Sheet1!B$1:B$500,"",,-1)
●Sheet1!A$1:A$500が変更になったら、式を3か所修正しなければならない。LETで定義すれば1か所にまとめられるぞ。
最終形態だよ
=LET(a,Sheet1!A$1:A$500,XLOOKUP(1,ISNUMBER(FIND(a,A1))*(LEN(a)>0),OFFSET(a,,1),"",,-1))
...どう?イラっとした?