Excel UDF IF语句<> String引发#Value错误

时间:2013-07-23 03:11:38

标签: excel-vba user-defined-functions vba excel

你好我正在研究一个更大的Excel UDF,除了比较两个不同的字符串以查看它们是否相等。当我检查我的范围中的单元格是否不等于我想要的字符串(在此示例中为“红色”)时,然后在计数器右侧添加一行值。当我这样做时,会引发#value错误。

有趣的是,如果我做同样的事情,但只添加等于“红色”的值,则不会引发错误。

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

我知道我可以求和(范围) - sumif(“红色”,范围)来得到答案,但我很好奇为什么这个UDF在你将它设置为&lt;&gt;时会引发错误但设置为=时可正常工作。

1 个答案:

答案 0 :(得分:0)

函数输入参数是变量。我还添加了一个参数col,它应该是整数,它是条件列和我们想要选择数据的列之间的差异。

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

enter image description here