アプリ版:「スタンプのみでお礼する」機能のリリースについて

質問です。
シート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)))

の部分がおかしいと思うのですが、どうすればよいでしょうか?
よろしくお願いします。

A 回答 (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

として方が見やすいですね。
以上です。
    • good
    • 1
この回答へのお礼

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

お礼日時:2009/11/14 14:40

>と書いたのですが、上手くいきません。


Cellsに変数を入れる前に実数を入れてコードが正しく動くか確認しましょう。
With Worksheets("Sheet1")
  Worksheets("Sheet2").Cells(3, 3).Value = _
    WorksheetFunction.Average(.Range(.Cells(3, 4), .Cells(10, 4)))
End With
    • good
    • 2
この回答へのお礼

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

お礼日時:2009/11/14 14:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A