我正在制作一个带有一些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
答案 0 :(得分:0)
您的UDF findRed
可能会返回多区域范围(如果输入范围内有多个不连续的红色单元格)或者如果没有红色单元格则会出现#VALUE
错误。
您的问题是如何使用=IF(INDEX(...))
公式
您可以使用的替代测试是
IFERROR(ROW(findRed(C3:L11) 3:3)>0,FALSE)
如果指定范围(TRUE
)和第3行的交集中的任何单元格为红色,则返回C3:L11
,否则为FALSE
。
然后,您可以将其嵌入IF AND OR
公式