- ワークシート関数を使って計算した例です。
- ワークシート関数AVERAGEIFSをVBAで使う時はApplication.WorksheetFunction.AverageIfs とします。
(Excel2007以降で利用できます)
Sub test30()
Range("E3").Value = Application.WorksheetFunction. _
AverageIfs(Range("C3:C10"), Range("B3:B10"), ">=2011年8月1日",
Range("B3:B10"), "<2011年9月1日")
Range("E3").NumberFormatLocal = "#,##0.0"
End Sub
- For〜Nextで順次計算している例です。
- 8月の条件を 2011年8月1日以上、2011年9月1日未満としています。(日付のシリアル値で比較しています)
Sub test31()
Dim i As Long
Dim goukei As Double, kosuu As Long
’条件に一致する値を合計し、カウントをしています
For i = 1 To 10
If Cells(i, 2).Value >= DateSerial(2011, 8, 1) And _
Cells(i, 2).Value < DateSerial(2011, 9, 1) And _
IsNumeric(Cells(i, 3).Value) Then
goukei = goukei + Cells(i, 3).Value
kosuu = kosuu + 1
End If
Next i
’計算結果をセルに書き込み、表示形式を設定しています
Range("E3").Value = goukei / kosuu
Range("E3").NumberFormatLocal = "#,##0.0"
End Sub
- 配列を使って計算した例です。
- 計算元のデータを配列myValに入れて計算して、結果をシートへ書き込んでいます。
Sub test32()
Dim myVal
Dim i As Long
Dim goukei As Double, kosuu As Long
’元データを配列に入れます
myVal = Range("B3:C10").Value
’条件に一致する値を合計し、カウントをしています
For i = 1 To UBound(myVal, 1)
If myVal(i, 1) >= DateSerial(2011, 8, 1) And _
myVal(i, 1) < DateSerial(2011, 9, 1) And _
IsNumeric(myVal(i, 2)) Then
goukei = goukei + myVal(i, 2)
kosuu = kosuu + 1
End If
Next i
’計算結果をセルに書き込み、表示形式を設定しています
Range("E3").Value = goukei / kosuu
Range("E3").NumberFormatLocal = "#,##0.0"
End Sub