いきなり答える備忘録

G Suite・Microsoft 365・LibreOfficeなどに関するメモと日々の実験

(Gスプレッドシート)XLOOKUP関数の代替手段

 GoogleスプレッドシートにはXLOOKUP関数がありません(2020年10月現在)。ただし大抵のケースは既存の機能で置換が可能です。

  • 基本的にFILTER関数でXLOOKUP関数の代替ができます。

手順

 XLOOKUP関数の詳しい解説は省略しますが、検索範囲と戻り値の範囲を(VLOOKUP関数と比べて)自由に設定できるのがポイントです。双方のセル数さえ同じであればよく、検索範囲よりも左にある値を返すこともできますし、斜め上にある値を返すこともできます。

f:id:accs2014:20201018105109p:plain:right:w600

 しかしそれはFILTER関数でも可能です。
 画像ではE列とG列に商品名と価格が記録されています。ただし行がずれているため値が斜めに対応しています
 一方でC2セルに入力された商品名をもとに価格を検索してC3セルに表示させようというわけですが、C3セルに次のように入力することで実現しています。

 C3セル

=FILTER(G8:G13,E10:E15=C2)

 E10:E15の中でC2の値に一致するものを探し、対応する位置にある値をG8:G13の中から返す、という式です。
 XLOOKUPだと「=XLOOKUP(C3,E11:E16,G9:G14)」となり、構文的にそちらの方がわかりやすい感じはするものの、やっていることは全く同じです。
 

 また、FILTER関数では横方向のデータ抽出も可能ですので、次のようなデータでも問題なく抽出することができます。これもXLOOKUP関数と同様です。

f:id:accs2014:20201018105113p:plain:w780

 C3セル

=FILTER(F10:K10,H7:M7=C2)

 注意点ですが、FILTER関数ではワイルドカードが使えないので部分一致検索等を行う場合は第2引数(条件式)内でFIND関数等を併用する必要があります。
 また、FILTER関数は該当する複数の値をすべて返すので、最初の1つだけ返したい場合は「=INDEX(FILTER(~),1)」といった式にして絞り込む必要があります。