私は、たとえば「Jan-12」、「Dec-12」など、月ごとにラベル付けされたワークシートを含むワークブック (スプレッドシート) を作成しています。毎回数式を変更せずに、特定のワークシートの名前に基づいて VLOOKUP の表示場所を変更できるようにする必要があります。この回答を見つけましたが、これは私が持っている別のワークブックにある VLOOKUP にはうまく機能しますが、同じワークブックでは機能しません。
=VLOOKUP(A1, INDIRECT(CONCATENATE("'[Datafile.xlsx]",B1,"'!$A1:F500")), 3, False)
答え1
初めに、
CONCATENATE(
事1,
物2,
物3)
省略可能
事1
&
物2&
物3
どちらも意味は同じですが、2 番目の形式は (当然ですが) スペースをあまり取らないので、読みやすいと感じる人もいるかもしれません。
質問が少し曖昧なようです。同じワークブックを参照したい場合と、別のワークブックにアクセスしたい場合について述べていません。空欄を埋めてください。そして、その部分は機能しているようですのでVLOOKUP
、質問は参照部分になります。言い換えれば、どのように適応するかということです。
INDIRECT(CONCATENATE("'[Datafile.xlsx]", B1, "'!$A1:F500"))
これを短縮すると
INDIRECT("'[Datafile.xlsx]" & B1 & "'!$A1:F500")
だから試してみて
INDIRECT("'" & IF(
状態, "", "[Datafile.xlsx]") & B1 & "'!$A1:F500")
どこ状態現在のファイルを使用する条件です。言葉で言えば、一重引用符 ( '
) と条件付きでワークブック名 (括弧内)を連結します。か否か、次にシート名 ( に含まれているものだと思いますB1
)、2 番目の引用符、感嘆符、セル範囲が続きます。