Здравствуйте. Я недавно начал программировать на VBA и хотел бы реализовать функцию AverageIF.
В ссылке видно, что в столбце B есть значения после 00:00, и я хотел бы получить среднее значение столбца Bначиная с B2 до B32.Кроме того, я хотел бы поместить ответ в B33.
Первый код, с которым я работаю, виден здесь, он получит AverageIF:
noxGem = WorksheetFunction.averageif(Sheet2.Range("B" & beginRow & ":" & "B" & offsetCellNum2), ">0")
В приведенном выше коде я предположил, чтоСтрока B2 до строки B32 будет проверяться на значения больше 0. Я не знаю, правильная ли это запись, потому что я получаю сообщение об ошибке:
Здесь отображается мой второй код, это помещаетAverageIF в B33:
Worksheets("Sheet2").Range("B" & offsetCellNum).Value = noxGem
Я думаю, что этот код работает, потому что я поместил данные (B2: B32) с этим кодом в цикл.
У вас, ребята, может быть есть какие-нибудьпредложение, в чем проблема будет?
Очень ценится!
РЕДАКТИРОВАТЬ
Я разместил весь свой код, Мои извинения!Сообщение об ошибке = Ошибка 424 Требуется объект
Sub averageif_1()
Dim noxValue As Double 'De waarde die je gaat nemen moet een decimaal
getal worden. Single kan ook gebruikt worden
Dim noxCellNumm As String 'Je gaat in de kolom I zoeken per rij van 24 dus
de waarde moet steeds veranderen I2 I3 I4 etc etc..
Dim x As Integer 'Dit geeft voor de 'GEM_Sheet0' aan, in welke rij de data
wordt opgeslagen
counter = 0
offsetCellNum = 2
beginRow = 2
eindRow = 745
Dim noxGem As Double
While counter < 24
Select Case counter
Case Is = 0
x = beginRow
x2 = eindRow
For i = x To x2 Step 24
noxCellNumm = "I" & i
noxValue = Worksheets("Sheet1").Range(noxCellNumm).Value
'Debug.Print strValue
Worksheets("Sheet2").Range("B" & offsetCellNum).Value =
noxValue
offsetCellNum = offsetCellNum + 1
Next
Debug.Print "00:00"
offsetCellNum2 = offsetCellNum - 1
noxGem = WorksheetFunction.averageif(Sheet2.Range("B" &
beginRow & ":" & "B" & offsetCellNum2), ">0")
'noxGem = WorksheetFunction.averageif
'noxGem = WorksheetFunction.averageif(Sheet2.Range("B2:B33"),
"=0")
Debug.Print noxGem
Worksheets("Sheet2").Range("B" & offsetCellNum).Value = noxGem
counter = counter + 1
offsetCellNum = 2
beginRow = beginRow + 1
Case Else
counter = 100
End Select
Wend
End Sub