• ベストアンサー

別のシートを参照して計算する方法

質問です。 シート1に数値が入力してあり、そこで計算した結果をシート2に貼り付けるにはどのようにすればいいのでしょうか? Worksheets("シート2").Cells(3 + g, 3 * c) = _ Worksheets("シート1").Select.WorksheetFunction._ Average(Range(Cells(e, g + 2), Cells(f, g + 2))) と書いたのですが、上手くいきません。 おそらく Worksheets("シート1").Select.WorksheetFunction._ Average(Range(Cells(e, g + 2), Cells(f, g + 2))) の部分がおかしいと思うのですが、どうすればよいでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.1

>Worksheets("シート1").Select.WorksheetFunction._ >Average(Range(Cells(e, g + 2), Cells(f, g + 2))) Worksheets("シート1").Select. が不要です。 そして、Range,Cellsの前にWorksheets("シート1")を付けます Worksheets("シート2").Cells(3 + g, 3 * c) = _  WorksheetFunction.Average(Worksheets("シート1").Range(Worksheets("シート1").Cells(e, g + 2), Worksheets("シート1").Cells(f, g + 2))) これでは長すぎるので、Withステートメントを使って With Worksheets("シート1")  Worksheets("シート2").Cells(3 + g, 3 * c) = _    WorksheetFunction.Average(.Range(.Cells(e, g + 2), .Cells(f, g + 2))) End With として方が見やすいですね。 以上です。

322444
質問者

お礼

なるほど、こんなに上手に書けるんですね! はやくこのようにスラスラとスマートにプログラムが かけるようになりたいです。 ありがとうございました。

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>と書いたのですが、上手くいきません。 Cellsに変数を入れる前に実数を入れてコードが正しく動くか確認しましょう。 With Worksheets("Sheet1")   Worksheets("Sheet2").Cells(3, 3).Value = _     WorksheetFunction.Average(.Range(.Cells(3, 4), .Cells(10, 4))) End With

322444
質問者

お礼

with 関数を使えばよかったんですね。 勉強になりました。 ありがとうございます。

関連するQ&A