• 締切済み

VBAを使ってシートAの3ヶ所のセルでシートBの計算式を行う。

シートA    シートB   A B C D     A B C D 1 10 20 30 ()   1 10 20 30 (計算式) 2 10 20 30 () 3 10 20 30 () 4 10 20 30 () (1)シートAのA1,B1,C1をコピーしてシートBのA1,B1,C1に代 入する。D1には計算式が入っているので結果が表示される。 (2)シートD1の計算結果をシートAのD1に代入する。 (3)次はシートAのA2,B2,C2をコピーしてシートBのA1,B1,C1 に代入する。D1には計算式が入っているので結果が表示される。  シートD1の計算結果をシートAのD2に代入する。 (4)上記の動作をシートAのA列のセルに数字がある場合は繰り返し行  う。

みんなの回答

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.5

ANo.4です。 >シートBは代入用のセルA1、B1、C1 計算式が入っているD1のみです。 そもそもシートBが必要な意味がわかりません。 Sub try2() Dim r As Range With Worksheets("Sheet1") Set r = .Range(.Range("A1"), .Cells(Rows.Count, 1).End(xlUp)) End With With r.Offset(, 3) .Formula = Worksheets("Sheet2").Range("D1").Formula .Value = .Value End With Set r = Nothing End Sub 結局シートBのA1・B1・C1に代入させるのではなく、D1の数式を シートAのD列に入れた後、値に変換すればいいだけでは?

onnsenn123
質問者

お礼

ありがとうございました。 >そもそもシートBが必要な意味がわかりません。 確かにそう思われるかもしれませんが、計算式を求めるのに 過去のデーターの一定の期間を抽出して行います。 何度も丁寧に教えていただき助かりました。 もっと勉強いたします。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.4

ANo.3です。 >Sheet2のA1、B1、C1に代入し計算結果をSheet1の行ごとに >D1、D2、D3・・・と表示できませんでしょうか! シート2のD列の結果をシート1のD列に出していますが。。。 どのような結果を希望なのかよくわかりません。

onnsenn123
質問者

補足

説明が下手ですみません。お手数をおかけします。 シートBは代入用のセルA1、B1、C1 計算式が入っているD1のみです。 このシートBにシートAの数字を代入し計算させて、シートAのD列に値を戻したいのです。 シートA               シートB   A B C  D        A B C     D 1 10 20 30 (230)      1 10 20 30 (仮に=A1*B1+C1) 2  8 10 15 (95)       シートBは上記のみセル使用 3 20 10 8 (208)    ・    ・    ・

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

ANo.1です。 コピーではなく代入案で。 Sub try() Dim r As Range With Worksheets("Sheet1") Set r = .Range(.Range("A1"), .Cells(Rows.Count, 1).End(xlUp)) End With Worksheets("Sheet2").Range("A1").Resize(r.Rows.Count, 3).Value = r.Resize(, 3).Value r.Offset(, 3).Value = Worksheets("Sheet2").Range("D1").Resize(r.Rows.Count, 1).Value Set r = Nothing End Sub Sheet1がシートA・Sheet2がシートBとしてます。 ご参考になりますでしょうか?

onnsenn123
質問者

補足

ありがとうございます。 Sheet2のA1、B1、C1に代入し計算結果をSheet1の行ごとに D1、D2、D3・・・と表示できませんでしょうか! よろしくお願いします。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

マクロの記録を使用すればすぐですよ 質問の操作をマクロに記録する '------------------------------------------------------------ Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2008/12/14 ユーザー名 : ' Sheets("SheetA").Select Range("A1:C1").Select Selection.Copy Sheets("SheetB").Select Range("A1").Select ActiveSheet.Paste Range("D1").Select Selection.Copy Sheets("SheetA").Select Range("D1").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub '------------------------------------------------------------ このようなマクロが出来ます これを元に繰り返し部分をアレンジします '------------------------------------------------------------ Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2008/12/14 ユーザー名 : ' Dim i As Long For i = 1 To Sheets("SheetA").Range("a65536").End(xlUp).Row Sheets("SheetA").Select Range("A" & i & ":C" & i).Select Selection.Copy Sheets("SheetB").Select Range("A" & i).Select ActiveSheet.Paste Range("D" & i).Select Selection.Copy Sheets("SheetA").Select Range("D" & i).Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Next i End Sub '------------------------------------------------------------ 出来上がりです 細かい所の修正、エラー処理はご自分で

onnsenn123
質問者

補足

ありがとうございます。 シートAの(A1,B1,C1)をシートBで計算しシートAのD1に答えを返す。 次はシートA下の行の(A2,B2,C2)をシートBで計算しシートAのD2に答えを返す。 D1,D2,D3,・・・とシートBで計算した結果を 順次表示できないでしょうか! よろしくお願いします。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

シートAのD列にシートBのD列の計算式を入れれば済むのでは? それとも何かの課題でしょうか。

onnsenn123
質問者

補足

説明不足で申し訳ございません。シートBの計算式は複雑です。業務で使用しています。ご教授お願いします。

関連するQ&A

専門家に質問してみよう