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