今回はスプレッドシートで別シートからVlookUpで値を取る方法を、備忘録として書き留めておきます。
私が何日もわからずに悩んだ、ちょっとした注意点が何点かありますのでシェアします。
スプレッドシートのVlookUpはExcelと同様に使えます。
別ファイルへの参照のやり方は少しExcelと違うので、そこらへんを含めて解説したいと思います。
目次
他ワークシートへ参照をする時のVlookUpの使い方
他ワークシートからセルを参照する関数はImportrangeを使用します。(別シートではなく別ワークシートです)
メモ
Importrange("スプレッドシートID""範囲の文字列")
Importrange関数には参照先のスプレッドシートのスプレッドキーを使用します
上記のスプレッドシートの場合、URL欄のd/~から、editの前の/までになります
したがって、上記のワークシートからvlookupでデータを引っ張ってきたい場合、
VlookUp(検索値,Importrange("スプレッドキー","シート名!参照範囲"),引数,方法)です。
具体的に式を書くと下記のようになります。
(VLOOKUP(A1,Importrange("1T----------------------------------------ryw", "○○○○!$C$1:$H$1000"),1,False))となります。
注意したい点1「検索値を検索する場所は先頭の列のみ」
ここを間違えるとVlookupが起動しないので注意が必要です (N/Aになる)
VLookUpはExcelであれ、スプレッドシートであれ参照範囲全体から検索値を探そうとしないで、 参照範囲の先頭列のみから検索値を探しに行きます。
いろいろな所(サイト)で見てみても「指定された範囲の中から検索条件に一致したデータを引っ張ってくる」と書いてあるので注意が必要です。
下記の図で説明します
=VLookUP(B3,B5:H20),7,False)と使用した場合
①検索値:範囲の中で検索させたい値 :B3にある値「5」
②範囲:検索の範囲:B5~H20の範囲だが、検索はB列(先頭列)しかやらない
③列番号:検索後どの値を引っ張ってくるか:検索の値の行の列を指定して返り値を取ってくる。
この場合、B列を1として数えて7番目の値を取ってくるので「2」が返されます。
④検索方法:完全に一致する値(False)か,近似値(True)でもよいか
検索する範囲は下記の図の赤枠で囲っているB列のみになるので間違いがないようにしてください。
もう一つ注意は検索させたい値がある列に範囲の先頭を持って来ること。
B列に検索させたい値があるのなら、B○~:H○(下記の図の②の範囲設定の所)という風にBを範囲の先頭にセットすること。
これをしないと動きません。
上記の図はエクセルですが、スプレッドシートで仕様は同じですので注意してください。
注意その2「式は正しいのに#REF VLOOKUPは境界外の範囲を求めています」が出る時は、アクセス許可を先にする
式は正しいのにアクセスの許可を取ってないため、#REFしかでない。
実は作りたてのシートですと、リンクを許可しないと#REFがでてデータを引っ張ってこれません。
解決策として、簡単な別シート参照関数でリンクを開通させておきましょう。
単に一回でも良いので単純なIMPORTRANGE関数で「アクセスの許可」を通しておきます。
=IMPORTRANGE("13_fWMroed5DvWehD1HmofkGKRcqn5ulUM-T74Z7GkP4","b!B2:E4")
↓「アクセス許可」を押すと、#REFとなっていたところに正しい戻り値が返ってきます
ちなみに参照先のシートは下記の通りとなっております。
まとめ
いかがだったでしょうか
エクセルと違って単純に正しい式を入れたからと言って素直に動いてくれないところもあり、
コツをつかまないといけないですね!ぜひこの記事が参考になればと思います
参考リンク
Microsoft (Excel)
VLOOKUP 関数