Нужна помощь по простому VBA.
Я создал тот, который будет смотреть на столбцы от C6 до H6, если он включает слово «include», тогда он будет усреднять значения в C7 до H7.
Приведенный ниже код работает для получения среднего значения. Как мне обновить его, чтобы получить промежуточный продукт, чтобы получить средний вес?
Формула Excel:
SUMPRODUCT(C7:H7,C8:H8)/SUM(C8:H8)
Теперь мне нужно сделать средний вес. Используя продукт суммы, я могу получить ответы, но как я сделаю это в VBA, чтобы сделать его динамическим, а ppl может изменить включаемые значения
Sub SuperAvgL1()
Dim columnA As Range
Dim columnB As Range
Dim myR
Set columnA = [C6:H6]
Set columnB = [C7:H7]
Set columnC = [C8:H8]
myR = WorksheetFunction.AverageIf(columnA, "Include", columnB)
Range("I7") = myR
End Sub
Всего несколько вещей с места в карьер; ColumnC не был инициализирован, никогда не бывает плохой идеей включать Option Explicit, потому что это поможет отловить ошибки позже. Также немного странно, что вы называете свои столбцы диапазонов, когда они являются строками. Однако попробуйте это и посмотрите, работает ли это.
Option Explicit
Sub SuperAvgL1()
Dim rowA() As Variant
Dim rowB() As Variant
Dim rowC() As Variant
Dim myResult As Variant
Dim i As Long
Dim Sumprod As Double
Dim Total As Double
rowA() = Range("C6:H6").Value
rowB() = Range("C7:H7").Value
rowC() = Range("C8:H8").Value
Sumprod = 0
Total = 0
For i = 1 To 6
If rowA(1, i) = "Include" Then
Sumprod = Sumprod + rowB(1, i) * rowC(1, i)
Total = Total + rowC(1, i)
End if
Next i
Range("I7").Value = Sumprod / Total
End Sub
Отсутствует End If
перед Next i
внизу
Хороший улов! починил это.
Как ваш
SUMPRODUCT()
еще не динамический?