【sawaさんのコメントを受けて修正】
IMPORTRANGEの第2引数にINDIRECT関数を使った場合で、そのINDIRECT関数内にシート名を指定してセル番地を指定した場合、
INDIRECT関数内のシート名は、「その数式を入力しているスプレッドシート内のシート名」を指します。
(IMPORTRANGEの第1引数に指定したスプレッドシート内のシート名ではありません)
IMPORTRANGEとINDIRECT関数を組み合わせるよりも、直接「参照先のシート名!セル番地」という文字列を指定した方が簡単でわかりやすいです。
【例】
スプレッドシート「A」と「B」があり、下記数式を「スプレッドシートA」に入力するとする。
1.INDIRECTを使わないパターン:
=IMPORTRANGE("スプレッドシートBのID","シート3!"&"R4C2")
---> この場合、「スプレッドシートB」の シート3 のR4C2セルの内容が表示されます。
2.INDIRECTを使用する場合:
=IMPORTRANGE("スプレッドシートBのID",INDIRECT("シート3!"&"R4C2", FALSE))
--->これは、まず「(Bではなく)スプレッドシートA」の シート3 のR4C2 セルに書かれてある内容がセル番地として解釈され、それがセル番地として解釈可能な形式であれば
スプレッドシートBの、解釈されたセル番地が参照されます。
たとえば「スプレッドシートA」の シート3 の R4C2セルに「B4」と入力されている場合は、スプレッドシートBの 1番目のシートのB4セルの内容が表示されます。(この場合シート名が指定されていないため暗黙的に1番目のシートになります)
一方、たとえば「スプレッドシートA」の シート3 の R4C2セルに「シート5!C1」と入力されていれば、
スプレッドシートBの シート5のC1セルの内容が表示されます。
したがって、sawaさん、質問者様がコメントされている通り、通常であればIMPORTRANGEにINDIRECT関数を組み合わせる必要はなく、単純な文字列連結を使用するだけで目的は達成できると思われます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/08 12:34
2021/08/08 13:33
退会済みユーザー
2021/08/13 13:17