Excel UDF IF 语句 <> 字符串引发 #Value 错误

Posted

技术标签:

【中文标题】Excel UDF IF 语句 <> 字符串引发 #Value 错误【英文标题】:Excel UDF IF Statement <> String Raises #Value Error 【发布时间】:2013-07-23 03:11:37 【问题描述】:

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

有趣的是,如果我做同样的事情但只添加等于“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(range) - sumif("Red",range) 得到答案,但我很好奇为什么这个 UDF 在设置为 时会引发错误,但在设置为=。

【问题讨论】:

【参考方案1】:

函数输入参数是变量。我还包含了一个参数 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

【讨论】:

以上是关于Excel UDF IF 语句 <> 字符串引发 #Value 错误的主要内容,如果未能解决你的问题,请参考以下文章

Excel UDF 中的公共数组

自定义函数,适用于 Excel 表中的结构化引用

MySQL UDF 仅适用于 `IF` 中的 `WHERE` 子句

EXCEL全部

UDF 返回不同的 SQL 语句

SQL入门经典 之自定义函数