GoogleスプレッドシートでARRAYFORMULA関数を使ってINDEX関数の第2引数に配列(行列)を与えても、配列(行列)は返ってきません。そこで代わりとなる手段の例を紹介します。
- VLOOKUP関数とARRAYFORMULA関数を使い、インデックスの配列を与えて戻り値の配列を得ることができます。
手順
B3:B7に5つの動物の名前が並んでいます。
一方でD3:G6の範囲に1~5の16個の数字が並んでます。関数を使ってこの16個の数字を動物の名前と対応付け、1なら「うさぎ」、2なら「ねこ」…5なら「ぶた」、と置き換えた結果を得るものとします。
ExcelならINDEX関数の第2引数に配列が与えられるので「=INDEX(B3:B7,D3:G6)」で一発なのですがGoogleスプレッドシートで「=ARRAYFORMULA(INDEX(B3:B7,D3:G6))」とやっても効きません。そこで……
次のように記して成功です。
=ARRAYFORMULA(VLOOKUP(D3:G6,{SEQUENCE(5),B3:B7},2,FALSE))
VLOOKUP関数を使い、第2引数(範囲)を「{SEQUENCE(5),B3:B7}」とします。つまり「1列目は1から5の数字で2列目は動物の名前」となる2列の表を生成します。そして第1引数(検索キー)をD3:G6とし、表の2列目を抽出することで動物の名前を取り出しています。VLOOKUP関数の第1引数になら配列を与えられる(配列が返ってくる)、というのがポイントです。
なお「SEQUENCE(5)」のところは本来「SEQUENCE(ROWS(B3:B7))」とやるところですが省略して即値にしました。