我尝试使用Excel array formulae来计算一个有背景颜色的柱状区域(如果您愿意,可以使用数组)中的单元格数量。
为了检查一个单元格是否有背景颜色,我使用这个函数:
Function FillIndicator(color As Range) As Integer
If color.Interior.ColorIndex = -4142 Then
FillIndicator = 0
Else
FillIndicator = 1
End If
End Function
这很有效
如果我要避开数组公式,并且我的范围是,比如说,C5:C7,我需要写这样的东西:
=FillIndicator(C5) + FillIndicator(C6) + FillIndicator(C7)
现在,我在这里使用数组公式的天真尝试是这样写的:
=SUM(FillIndicator(C5:C7))
然后按Ctrl+Shift+Enter。但这只是得到了一个#VALUE
错误。
我做错了什么?我能搞定吗?
注意:我使用的是Excel 365版本2208。我想是的。
3条答案
按热度按时间ctehm74n1#
这个答案与@RicardinhoL的答案相同,但有三个小区别:1)使用一个可选的颜色参数,默认值,你在问题2)检查范围是否不是其他错误发生3)使用函数的名称作为计数器,因为它的工作原理就像一个变量本身。
必须返回Long,因为excel中有很多单元格!
xv8emn3q2#
我认为这是计算特定列的单元格或范围所需的。
k4ymrczo3#
要让UDF返回一个数组,您只需将数组设置为等于返回行中的函数。
例如,假设您显然希望返回一个布尔数组,该数组对应于区域中的单元格是否着色:
注意倒数第二行,其中
FillIndicator
被设置为等于数组。公式将返回一个
TRUE/FALSE
数组,具体取决于Interior.ColorIndex
属性。然后,您可以将其视为任何其他数组函数。