科目ごとの計算式を知りたいのですがなるべく簡潔にしたいです。画像の色が付いている場所を求めたいです。
英語の平均は
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
で、求めることができたのですが他の数学から社会までの求め方がわかりません。行を横にずらしていく代入?の方法がわかりません。
No.1ベストアンサー
- 回答日時:
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
記憶の片隅に留めておくも良し、早速活用するも良しです。
No.3
- 回答日時:
こんにちは
普通に、「13行目にAverage関数を設定しておく」ほうが遥かに簡便な気がしますけれど・・・
わざわざボタンを押す手間もいらなくなるし、さらには、VBAで悩む必要も無くなります。
No.2
- 回答日時:
質問者さんの場合、
w = w + Cells(i, 2)
の
Cells(i, 2)
が、何をしているのか理解されていないと言うことではないでしょうか。
”Cells” の使い方を確認してみましょう。
それで問題は解決するはずです。
解決しないのであれば、
For i = 3 To 12
の意味も理解していないと考えられます。
”For” についても確認しましょう。
・・・
答えを見て分かったつもりになるのは、それはそれで良いのですが、
教えてもらえない状況になった時に困るのは自分自身であることを覚えておきましょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- Excel(エクセル) エクセルで同じ数字同士を自動で線で結ぶVBAを教えてください 6 2022/04/26 23:13
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBAで時間(00:00形式)を積算(足し算)したい 1 2022/11/15 17:04
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Cellsのかっこの中はどっちが行...
-
vba 2つの条件が一致したら...
-
B列の最終行までA列をオート...
-
【VBA】2つのシートの値を比較...
-
Excelで、あるセルの値に応じて...
-
VBAを使って検索したセルをコピ...
-
rowsとcolsの意味
-
データグリッドビューの一番最...
-
エクセルVBAにて =A1=B1とすれ...
-
URLのリンク切れをマクロを使っ...
-
VBAで、特定の文字より後を削除...
-
マクロ 最終列をコピーして最終...
-
マクロ 関数を使った抽出でエラ...
-
EXCEL VBAマクロについて質問です
-
VBAコンボボックスで選択した値...
-
エクセルVBAでデータをカウント...
-
エクセルVBA シートモジュール...
-
VBAでのリスト不一致抽出について
-
最終列の右へSUM関数を作成する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
VBAを使って検索したセルをコピ...
-
VBAのFind関数で結合セルを検索...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
【VBA】2つのシートの値を比較...
-
マクロ 最終列をコピーして最終...
-
Changeイベントでの複数セルの...
-
VBA 何かしら文字が入っていたら
-
URLのリンク切れをマクロを使っ...
-
エクセルVBAにて =A1=B1とすれ...
-
VBAでのリスト不一致抽出について
-
データグリッドビューの一番最...
-
マクロについて。S列の途中から...
-
VBA UserFormからの転記で
-
targetをA列のセルに限定するに...
おすすめ情報