- ベストアンサー
エクセルでワークシートを替えて数式をいれたい
エクセルでワークシート名を指定して数式を入力することはできますか? ただし、ワークシート名が変化するようになっているのですが。 "='sheet1'!(A1)+'sheet2'!(a2)" でsheet1,2のところは変数にはできないんですかね? sheet1,2のところにiとかいれてもだめなんですが。
- みんなの回答 (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
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
VBAでWorksheetはコレクションといわれるもので、VBAであれば、シートの表現形式に従って WorkSheets(0)のインデックス方式の0の部分 WorkSheets("Sheet1")の名前方式のSheet1の部分 を変数化することで、実行前までに自由に指定換えができます。 SheetをActivateして、ActiveSheetでもできそうです。
お礼
回答ありがとうございました。 参考にさせていただきます。
- mshr1962
- ベストアンサー率39% (7417/18945)
A1="Sheet1" B1="Sheet2" として =INDIRECT(A1&"!A1")+INDIRECT(B1&"!A2") A1=1 B1=1 として =INDIRECT("Sheet"&A1&"!A1")+INDIRECT("Sheet"&B1&"!A2")
お礼
回答ありがとうございました INDIRECTは勉強して使っていきたいと思います。
- asahina02
- ベストアンサー率47% (95/202)
カテゴリがVBになっていたので、エクセルのVBAで実現すればいいのでしょうか? であれば Sheets という配列がありますので Sheets(1).Range("A1") + Sheets(2).Range("A2") という式で実現できます。 ※()内の1,2は名称とか作った順は関係なく、表示上の左から順番です ※()内はシート名に置き換えても可能です
お礼
ありがとうございました。 とてもわかりやすい方法で私にも思ったとおりできました。 とても良かったです。
補足
すみません。簡単にお礼を申し上げてしまいました。 計算はその方法でできたのですが、実はセルに数式をいれたかったのでした。 でもSheetsは参考になりました。
お礼
回答ありがとうございました。 質問の内容まで解説していただいてありがとうございます。まさにやりたいことができました。 ちなみにこんな感じでできました。 (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