您好,我最近开始在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