Excel自定义项IF语句<&燃气轮机;字符串引发#值错误

Excel自定义项IF语句<&燃气轮机;字符串引发#值错误,excel,user-defined-functions,vba,Excel,User Defined Functions,Vba,您好,我正在处理一个更大的Excel UDF,除了比较两个不同的字符串,看看它们是否不相等。当我检查范围内的单元格是否与所需字符串不相等(本例中为“红色”)时,请在计数器右侧添加一行值。当我这样做时,会产生一个#值错误 有趣的是,如果我做同样的事情,但只添加等于“Red”的值,就不会产生错误 Function SUM_IF_NOT_RED(Creiteria_Rnage As Range, Sum_range As Integer) as Double Dim counter As Doubl

您好,我正在处理一个更大的Excel UDF,除了比较两个不同的字符串,看看它们是否不相等。当我检查范围内的单元格是否与所需字符串不相等(本例中为“红色”)时,请在计数器右侧添加一行值。当我这样做时,会产生一个#值错误

有趣的是,如果我做同样的事情,但只添加等于“Red”的值,就不会产生错误

Function SUM_IF_NOT_RED(Creiteria_Rnage As Range, Sum_range As Integer) as Double

Dim counter As Double
Dim Cell As Range

For Each Cell In Creiteria_Rnage .Cells

If (Cell.Value <> "Red") Then
    counter = counter + Cell.Offset(0, Sum_range).Value
End If

Next Cell

SUM_IF_NOT_RED = counter
End Function
函数SUM\u如果不将(Creiteria\u Rnage作为范围,SUM\u Range作为整数)作为双精度
双色暗计数器
暗淡单元格作为范围
对于Creiteria_Rnage.细胞中的每个细胞
如果(单元格值“红色”),则
计数器=计数器+单元格。偏移量(0,总和范围)。值
如果结束
下一个细胞
如果不是红色,则求和=计数器
端函数

我知道我可以使用sum(range)-sumif(“Red”,range)来获得答案,但我很好奇,为什么这个自定义项在设置为时会出现错误,而在设置为=”时却可以正常工作。

函数输入参数是可变的。我还包括了一个参数col,它应该是整数,它是criteria列和我们要从中选取数据的列之间的差值

Function SUM_IF_NOT_RED(Creiteria_Range, col) As Double

    Dim counter As Double
    Dim Cell As Range

    For Each Cell In Creiteria_Range.Cells

        If (Cell.Value <> "Red") Then
            counter = counter + Cell.Offset(0, col)
        End If

    Next Cell

    SUM_IF_NOT_RED = counter
End Function
函数和如果不是红色(Creiteria范围,col)为双精度
双色暗计数器
暗淡单元格作为范围
对于Creiteria_范围内的每个单元格。单元格
如果(单元格值“红色”),则
计数器=计数器+单元格偏移量(0,列)
如果结束
下一个细胞
如果不是红色,则求和=计数器
端函数