- ベストアンサー
別のシートを参照して計算する方法
質問です。 シート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))) の部分がおかしいと思うのですが、どうすればよいでしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>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 として方が見やすいですね。 以上です。
その他の回答 (1)
- watabe007
- ベストアンサー率62% (476/760)
>と書いたのですが、上手くいきません。 Cellsに変数を入れる前に実数を入れてコードが正しく動くか確認しましょう。 With Worksheets("Sheet1") Worksheets("Sheet2").Cells(3, 3).Value = _ WorksheetFunction.Average(.Range(.Cells(3, 4), .Cells(10, 4))) End With
お礼
with 関数を使えばよかったんですね。 勉強になりました。 ありがとうございます。
お礼
なるほど、こんなに上手に書けるんですね! はやくこのようにスラスラとスマートにプログラムが かけるようになりたいです。 ありがとうございました。