• ベストアンサー

変数を使ってセルの参照

初歩的な質問ですいません。 セルの参照で    A     B   C 1  あ     い 2  う     え ='D:\A¥B\[B1.xlsx]Sheet1'!合計 のフォルダBとファイルB1を変数にして C1に ='D:\A¥あ\[い.xlsx]Sheet1'!合計 C2に ='D:\A¥う\[え.xlsx]Sheet1'!合計 としたいのですが、 その場合どう表記すればいいのですか? INDIRCT関数の場合も教えていただければありがたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

こんばんは。 作成例: sub macro1()  dim b as string  dim b1 as string  b = range("A1").value  b1 = range("B1").value  range("C1").formula = "='D:\A\" & b & "\[" & b1 & ".xlsx]Sheet1'!合計" end sub 作成例:応用 sub macro2()  range("C2").formula = "='D:\A\" & range("A2").value & "\[" & range("B2").value & ".xlsx]Sheet1'!合計" ’以下オプション ’range("C2").value = range("C2").value end sub 作成例:INDIRECT関数を使う場合 sub macro3()  dim myPath as string  dim myFile as string  dim w as workbook  mypath = "D:\A\" & range("A1").value & "\"  myfile = range("B1").value & ".xlsx"  set w = activeworkbook  workbooks.open mypath & myfile  w.select  range("C1").formula = "=INDIRECT([" & myfile & "]Sheet1!合計)"  workbooks(myfile).close false end sub #補足 INDIRECT関数では、「閉じたブック」への参照を可変にすることは「できません」。

sakulanbotomato
質問者

お礼

ありがとうございます。 やはりマクロしかありませんか?!

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

ん? >やはりマクロしかありませんか?! 別に出し惜しみやイジワルをしてるワケではありません。そういう便利な方法があれば、さっさとそう回答しています。 ご相談に書かれた「その通りの事」をしたければ、こうしますと回答しているのです。 どうしてもINDIRECT関数が使いたいなら、回答したマクロの3番目でやっているのと全く同じく、手動でブックを開いてください。 その場合は「どこのブック」は手で開いた時点で確定していますから、ブック名だけが可変になります。

回答No.1

パス、拡張子は自分の環境に合わせる。 =INDIRECT("'D:\tmp\tmp\"&A1&"\["&B1&".xls]Sheet1'!合計")

sakulanbotomato
質問者

お礼

ありがとうございました。

関連するQ&A