Excel VBA 平均值如果为零

蒂莫西·辛格维克罗莫

您好,我最近开始用 VBA 编写代码,并想实现“AverageIF”功能。

我的平均值的数据If

在链接中,您可以看到在 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
罗森菲尔德

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

要一直发生这种情况,请在工具/选项下选择该选项:

在此处输入图片说明

如果您这样做了,您可能会发现Sheet2.在您的AverageIf行中被标记为未声明的变量,并且在您的活动工作簿中没有具有该CodeName(不同于 WorksheetName)的工作表。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果大于零vba,则取平均值

来自分类Dev

需要帮助获取该数组的平均值(Excel VBA)

来自分类Dev

VBA excel:求和求加权平均值

来自分类Dev

excel vba - sumif 和平均值按 id 字段

来自分类Dev

Excel VBA 2010-worksheet.subtotal函数总和与平均值在同一行

来自分类Dev

使用VBA在Excel中查找显示的过滤数据的平均值和标准偏差

来自分类Dev

对动态表 Excel VBA 的每一列求平均值

来自分类Dev

如果B(i)为TRUE并且B(i-1)为FALSE,如何找到Excel列A的平均值?

来自分类Dev

Excel-当单元格包含某些文本但平均值不为零时,列中的平均值

来自分类Dev

Excel-当单元格包含某些文本但平均值不为零时,列中的平均值

来自分类Dev

Excel极限平均值?

来自分类Dev

Excel VBA周期为

来自分类Dev

Excel VBA不会保持零

来自分类Dev

Excel给出错误的平均值

来自分类Dev

Excel-计算平均值的90%

来自分类Dev

Excel Power Pivot时间平均值

来自分类Dev

Excel给出错误的平均值

来自分类Dev

计算Excel中的日期平均值

来自分类Dev

Excel:计算平均值的方法

来自分类Dev

在Excel中计算平均值

来自分类Dev

Excel中的公式-对数平均值

来自分类Dev

Excel; 计算每组的平均值?

来自分类Dev

VBA代码平均Excel数据

来自分类Dev

Excel函数-如果日期在范围内,则显示平均值

来自分类Dev

Excel - 如果另一行有值,如何找到平均值?

来自分类Dev

如果不等于 0,则 VLOOKUPS 平均值的 Excel 公式

来自分类Dev

Excel如果公式到VBA

来自分类Dev

在excel中显示图表,其中(x,y)为平均值

来自分类Dev

平均值在C中为零