带有If语句和范围行属性的Excel公式值错误

时间:2014-05-23 22:06:45

标签: excel excel-vba if-statement excel-formula vba

我正在制作一个带有一些UDF的电子表格。第一次在excel中尝试任何复杂的东西,我不确定我是否正确地这样做。以下公式返回#VALUE错误。

=IF(INDEX(findRed(C3:L11), 1, 1)=3:3,3500000+35000000*0.1, "")

findRed是一个UDF,用于查看为红色背景颜色的单元格指定的范围。我想要做的是确定findRed函数返回的任何单元格是否在工作簿的第3行。最后的数学是我打算使用的数字,但我打算用findRed返回的Range制作一个相当大的嵌套IF OR AND语句,我甚至无法使第一部分工作。我在这里做错了什么?

编辑:findRed()

Public Function findRed(myRange As Range) As Range
Dim redRange As Range, cell As Range
Application.Volatile
For Each cell In myRange
If cell.Interior.ColorIndex = 3 Then
    If redRange Is Nothing Then
        Set redRange = cell
    Else
        Set redRange = Application.Union(redRange, cell)
    End If
End If
Next cell
Set findRed = redRange
End Function

1 个答案:

答案 0 :(得分:0)

您的UDF findRed可能会返回多区域范围(如果输入范围内有多个不连续的红色单元格)或者如果没有红色单元格则会出现#VALUE错误。

您的问题是如何使用=IF(INDEX(...))公式

的其余部分处理此返回范围

您可以使用的替代测试是

IFERROR(ROW(findRed(C3:L11) 3:3)>0,FALSE)

如果指定范围(TRUE)和第3行的交集中的任何单元格为红色,则返回C3:L11,否则为FALSE

然后,您可以将其嵌入IF AND OR公式