UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Spread Sheet】VLOOKUPの検索範囲に変数を使いたい

VLOOKUPの検索範囲に変数を使いたい

具体的には以下のVLOOKUP関数の「範囲」のところで

=VLOOKUP(検索値, 範囲, 列番号, 検索の型)

例えば、シート1!$A$1:$G$100のような範囲にしているところを、「シート1」を文字列ではなく、VLOOKUP関数を使うセルの隣のセルの値を使いたい場合どうするか

INDIRECT関数を使う

調べたところ、スプレッドシートのINDIRECT関数を使うと良いことがわかった

INDIRECT関数はセルの参照をテキスト文字列として指定し、そのセルの値を返す関数でまさにやりたいこと実現する関数だった

構文は以下

=INDIRECT(ref_text, [a1])
  • ref_text(必須):参照先のセルアドレスをテキスト文字列として指定
  • a1(オプション):セル参照のスタイルを指定。TRUEまたは省略した場合は、A1スタイルの参照(例:A1、B2など)を使用する。FALSEを指定した場合は、R1C1スタイルの参照(例:R1C1、R2C2など)を使用する。

使い方は、例えばセルA1に"Hello"と入力し、セルB1に"=INDIRECT("A1")"と入力すると、セルB1にも"Hello"が表示される

VLOOUPの「範囲」で使いたい場合は以下のような感じ

=VLOOKUP(検索値, INDIRECT(C2 & "!$A$1:$G$100"), 列番号, 検索の型)

C2セルにシート名があれば、これで動的なシートに対するVLOOKUPができる