• ベストアンサー

エクセルでワークシートを替えて数式をいれたい

エクセルでワークシート名を指定して数式を入力することはできますか? ただし、ワークシート名が変化するようになっているのですが。 "='sheet1'!(A1)+'sheet2'!(a2)" でsheet1,2のところは変数にはできないんですかね? sheet1,2のところにiとかいれてもだめなんですが。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 そのご質問ですと、何をおやりになろうとしているのか、さっぱり見えませんね。 果たして、VBAなのでしょうか? >"='sheet1'!(A1)+'sheet2'!(a2)" これは、なんでしょうか? ワークシートの表記でも存在しまませんね。 見方によれば、Formula に入れようとしても見えますが。 もし、そうだとすれば、Sheet名を入れることだと思いますから、Sheetsコレクションで、Index を使ったりしたら厳密には、意味が違ってしまいます。 Sub TestSample() Dim i As Integer, j As Integer Dim a As Long, b As Long i = 1 j = 2 a = 1 b = 2 ActiveCell.FormulaLocal = "=Sheet" & i & "!A" & a & "+Sheet" & j & "!A" & b End Sub

nakajinaka
質問者

お礼

回答ありがとうございました。 質問の内容まで解説していただいてありがとうございます。まさにやりたいことができました。 ちなみにこんな感じでできました。 (e39)=(1つ前のe39)+(e38) a = Worksheets(k - 1).Name b = Worksheets(k).Name Worksheets(k).Activate Range("e39").FormulaLocal = "=" & a & "!e" & 39 & "+" & b & "!e" & 38

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

VBAでWorksheetはコレクションといわれるもので、VBAであれば、シートの表現形式に従って WorkSheets(0)のインデックス方式の0の部分 WorkSheets("Sheet1")の名前方式のSheet1の部分 を変数化することで、実行前までに自由に指定換えができます。 SheetをActivateして、ActiveSheetでもできそうです。

nakajinaka
質問者

お礼

回答ありがとうございました。 参考にさせていただきます。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

A1="Sheet1" B1="Sheet2" として =INDIRECT(A1&"!A1")+INDIRECT(B1&"!A2") A1=1 B1=1 として =INDIRECT("Sheet"&A1&"!A1")+INDIRECT("Sheet"&B1&"!A2")

nakajinaka
質問者

お礼

回答ありがとうございました INDIRECTは勉強して使っていきたいと思います。

  • asahina02
  • ベストアンサー率47% (95/202)
回答No.1

カテゴリがVBになっていたので、エクセルのVBAで実現すればいいのでしょうか? であれば Sheets という配列がありますので  Sheets(1).Range("A1") + Sheets(2).Range("A2") という式で実現できます。 ※()内の1,2は名称とか作った順は関係なく、表示上の左から順番です ※()内はシート名に置き換えても可能です

nakajinaka
質問者

お礼

ありがとうございました。 とてもわかりやすい方法で私にも思ったとおりできました。 とても良かったです。

nakajinaka
質問者

補足

すみません。簡単にお礼を申し上げてしまいました。 計算はその方法でできたのですが、実はセルに数式をいれたかったのでした。 でもSheetsは参考になりました。

関連するQ&A