C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

Google Spreadsheet における indirect のTipsと concatenate の必要性

状況

Google Spreadsheet にて vlookup 等の引数に indirect を用いて別シートの範囲を参照させようとした。

しかし、

sheet1!A1 = "hoge"
sheet1!B1 = "fuga"
sheet1!C1 = vlookup( B1, indirect( A1 + "!A:B" ) )

こんな感じでは失敗する。

問題の指摘と解決策 1 (現在は無意味)

superuserに関連した指摘を発見できる。

Google Spreadsheetではindirect関数はA:Cの様な行指定の無い範囲指示に対応していないので A1:C999 とかすれば良いらしい。

※しかし、これは後に現時点では不要である事に気づいた。過去の仕様ではそうだったのだろう。

問題の指摘と解決策 2

indirect の引数が operator+(string,string) 的な演算子ではダメらしい。つまり以下はダメ。

A1 + "!A:B"

これは、

concatenate(A1, "!A:B")

とすると失敗しなくなる。

まとめ

sheet1!A1 = "hoge"
sheet1!B1 = "fuga"
sheet1!C1 = vlookup( B1, indirect( concatenate( A1, "!A:B" ) ) )

これ正解。