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

科目ごとの計算式を知りたいのですがなるべく簡潔にしたいです。画像の色が付いている場所を求めたいです。
英語の平均は
Private Sub CommandButton4_Click() '平均(科目別)
Dim i As Long, w As Long, j As Long
w = 0
For i = 3 To 12
w = w + Cells(i, 2)
Next i
For j = 2 To 6
Cells(13, 2) = w / 10
Next j
End Sub
で、求めることができたのですが他の数学から社会までの求め方がわかりません。行を横にずらしていく代入?の方法がわかりません。

「VBA 計算式」の質問画像

A 回答 (3件)

1つ目の【平均値の処理】ができているので、


それをまた forで囲ってしまえば良いのです。

B列(列番号2)からF列(列番号6)までなので・・・

For j = 2 To 6
 【平均値の処理】
Next j

ざっくりこんな感じ。

【平均値の処理】の中の
Cells(i, 2)
Cells(13, 2)
の後ろの数字が列番号なので、ココを j に置き換えます。

すると、こんな感じで完成。

Private Sub CommandButton4_Click() '平均(科目別)
  Dim i As Long, w As Long, j As Long
  For j = 2 To 6
    w = 0
    For i = 3 To 12
      w = w + Cells(i, j)
    Next i
    Cells(13, j) = w / 10
  Next j
End Sub

質問に書かれたマクロに、必要な文は概ね入っていたので、
あとはその組み立て方だけでしたね。



余談ですが…
ワークシート関数を使う
という方法がありまして、ワークシート関数で平均を求める「Average」を利用すると、
「wに加算して10で割って平均を出す」流れが、「Average」で済ませることができます。

これだけで同じ結果になります。

Private Sub CommandButton4_Click()
  For i = 2 To 6
    Cells(13, i) = WorksheetFunction.Average(ActiveSheet.Range(Cells(3, i), Cells(12, i)))
  Next
End Sub

記憶の片隅に留めておくも良し、早速活用するも良しです。
    • good
    • 0
この回答へのお礼

天才やな

お礼が遅くなりすみません。とても助かりました!ありがとうございました!

お礼日時:2020/12/26 04:14

こんにちは



普通に、「13行目にAverage関数を設定しておく」ほうが遥かに簡便な気がしますけれど・・・

わざわざボタンを押す手間もいらなくなるし、さらには、VBAで悩む必要も無くなります。
    • good
    • 0

質問者さんの場合、


 w = w + Cells(i, 2)

 Cells(i, 2)
が、何をしているのか理解されていないと言うことではないでしょうか。

”Cells” の使い方を確認してみましょう。
それで問題は解決するはずです。

解決しないのであれば、
 For i = 3 To 12
の意味も理解していないと考えられます。
”For” についても確認しましょう。

・・・
答えを見て分かったつもりになるのは、それはそれで良いのですが、
教えてもらえない状況になった時に困るのは自分自身であることを覚えておきましょう。
    • good
    • 0

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