
VLOOKUP関数の困った点
VLOOKUP関数の構文は以下の通りです。
=VLOOKUP(検索キー, 範囲, 番号, 並べ替え済み)
検索キー:検索する値
範囲:検索対象の範囲。範囲の一番左の列が検索キーで指定した値を検索
番号:値を返す列の番号。範囲の一番左側を1とします。
並び替え済み:FALSEの場合は完全一致、TRUEの場合は最も近い値を返す。
上記の構文で明らかなように検索キーが検索する列の左側にある値を取得することができません。
Excelの場合は諦めて列を移動して右側に配置するというような乱暴な解決策を取ることがままありました。
最近のExcelであればXLOOKUP関数を使えば左側のデータを簡単に取得することができますが、あえてVLOOKUP関数にこだわると上記で説明したように検索対象データの列を移動するしかありません。
ところが、GoogleスプレッドシートではVLOOKUP関数でやりようがあります。もちろん、GoogleスプレッドシートでもXLOOKUP関数が使えるようになっているのでVLOOKUP関数にこだわらなければXLOOKUPで解決となりますが。
今回はVLOOKUP関数で対応する方法を説明します。
VLOOKUP関数で配列を使う
Googleスプレッドシートでは数式内に{}を使って独自に配列を作ることができます。この配列を利用することで元々は検索対象列の左側にあった列を右側に持ってくることができます。

例えば上記のように市区町村名のデータから都道府県名を求めたい場合、普通にやろうとすると元データの「都道府県名」をB列からD列の右側に移動して対応することとなります。
しかし、以下のように配列を使うと列を移動することなく都道府県名を取得することができるようになります。
=VLOOKUP(H2,{D:D,B:B},2,false)
上記の数式を使って実際に求めた例を下記に示します。

VLOOKUP関数に配列を使うことで左側のデータを取得することはもちろんのこと、たとえば検索対象列がA列でデータを取得したい列がAZ列のように離れている場合でも、
=VLOOKUP(H2,{A:A,AZ:AZ},2,false)
とすることができますので延々と列の数を数えることも不要です。
コメント