Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA平均值如果为零_Excel_Vba_Average - Fatal编程技术网

Excel VBA平均值如果为零

Excel VBA平均值如果为零,excel,vba,average,Excel,Vba,Average,您好,我最近开始使用VBA编写代码,并希望实现函数“AverageIF” 在链接中,您可以看到B列中有00:00之后的值,我想得到B列的平均值,从B2到B32。 此外,我想把答案放在B33中 我正在编写的第一个代码如下所示,如果: noxGem = WorksheetFunction.averageif(Sheet2.Range("B" & beginRow & ":" & "B" & offsetCellNum2), ">0") 在上面的代码中,我假设

您好,我最近开始使用VBA编写代码,并希望实现函数“AverageIF”

在链接中,您可以看到B列中有00:00之后的值,我想得到B列的平均值,从B2到B32。 此外,我想把答案放在B33中

我正在编写的第一个代码如下所示,如果:

noxGem = WorksheetFunction.averageif(Sheet2.Range("B" & beginRow & ":" & "B" & offsetCellNum2), ">0")
在上面的代码中,我假设从B2行到B32行将检查大于0的值。我不知道这是否正确,因为我得到了一个错误:

我的第二个代码出现在这里,这将把平均值放入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
Sub-averageif_1()
尺寸值为双精度
格塔尔·沃登。单根根木条
每辆rij van 24 dus在德科洛姆一号左肯的Dim noxCellNumm作为字符串“Je gaat”
de waarde moet steeds Verandren I2 I3 I4等。。
尺寸x为整数'Dit geeft voor de'GEM_Sheet0'aan,在welke rij de data中
wordt opgeslagen
计数器=0
offsetCellNum=2
beginRow=2
艾恩德罗=745
双色宝石
而计数器<24
选择案例计数器
大小写为=0
x=beginRow
x2=艾德洛
对于i=x至x2步骤24
noxCellNumm=“I”&I
noxValue=工作表(“表1”)。范围(noxCellNumm)。值
'Debug.Print strValue
工作表(“Sheet2”)。范围(“B”和offsetCellNum)。值=
氮氧化物值
offsetCellNum=offsetCellNum+1
下一个
调试。打印“00:00”
offsetCellNum2=offsetCellNum-1
noxGem=工作表函数平均值If(表2.范围(“B”)和
beginRow&“:”&“B”和offsetCellNum2),“>0”)
'noxGem=WorksheetFunction.averageif
'noxGem=工作表函数.averageif(表2.范围(“B2:B33”),
"=0")
调试。打印noxGem
工作表(“Sheet2”).Range(“B”)和offsetCellNum.Value=noxGem
计数器=计数器+1
offsetCellNum=2
beginRow=beginRow+1
其他情况
计数器=100
结束选择
温德
端接头

如果声明了所有变量,代码将更易于调试。 将
Option Explicit
放在代码顶部,以强制执行此操作

要使这种情况始终发生,请在“工具/选项”下选择该选项:


如果您这样做了,您可能会在
平均值中找到
,如果
行被标记为未声明的变量,并且在活动工作簿中没有具有该代码名的工作表(不同于工作表名)。

错误消息是什么?您希望我们如何将您的数据复制到工作表中进行测试?什么是
offsetCellNum2
?顺便说一句,由于您没有提供足够的信息来重现错误,所以您的代码在这里工作正常。您好@RonRosenfeld,感谢您查看我的代码,并对没有提供足够的信息和数据表示歉意!我已经编辑了我的帖子=)!错误是什么?@RonRosenfeld在运行错误消息时显示“error 424 Object Required”。当我点击查看更多信息时,我的averageIF行以黄色突出显示。谢谢!!你说得对,“Sheet2”是工作表的名称,而不是
代码名
乐意帮忙。如果我的回答满足您的问题,如果您能将其标记为已接受,我将不胜感激。你可以阅读更多信息。很高兴=)!再次感谢!