您好,我最近开始用 VBA 编写代码,并想实现“AverageIF”功能。
在链接中,您可以看到在 B 列中有 00:00 之后的值,我想获得 B 列的平均值,从 B2 到 B32。此外,我想把答案放在 B33 中。
我正在工作的第一个代码在这里看到,这将获得AverageIF:
noxGem = WorksheetFunction.averageif(Sheet2.Range("B" & beginRow & ":" & "B" & offsetCellNum2), ">0")
在上面的代码中,我假设 Row B2 到 Row 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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句