【发布时间】:2016-07-26 09:26:35
【问题描述】:
我正在尝试计算彩色单元格的数量(也满足另一个条件)。
我的单元格如下:
我的目的是计算有“B”的单元格以及相邻单元格为绿色的单元格。
我也写了一个函数如下:
Function CheckColor(rng As Range) As Boolean
If rng.Interior.ColorIndex = 43 Then
CheckColor = True
Else
CheckColor = False
End If
End Function
然后我使用SUMPRODUCT函数如下:
=SUMPRODUCT(--(V40:V50="B");--CheckColor(W40:W50))
但是,我收到错误 #VALUE!
更新
我已将公式修改如下:
Function CheckColor(rng As Range) As Variant
Dim arr As Variant
Dim n As Integer
ReDim arr(0 To rng.Count - 1) As Variant
n = 0
For Each cell In rng
If cell.Interior.ColorIndex <> 43 Then
bl = False
Else
bl = True
End If
arr(n) = bl
n = n + 1
Next cell
CheckColor = arr
End Function
我使用的公式如下:
=SUMPRODUCT((V40:V50="B")*CheckColor(W40:W50))
我得到的答案是 6,这是错误的。
【问题讨论】:
-
为什么不用
COUNTIF而不是SUMPRODUCT? -
我在某个地方搜索并阅读了 SUMPRODUCT 可以更好地适应功能
-
我认为(但不确定)您的函数将
CheckColor(W40:W50)计算为唯一值,因此执行=SUMPRODUCT(--(V40:V50="B");0)将抛出#Value,因为参数大小不同;你有能力尝试一步一步的公式计算吗? -
哦!我现在知道了。但是我还在学习 VBA,所以我不知道如何实现它
-
也许
= SUMPRODUCT( ( V40:V50 = "B" ) * CheckColor( W40:W50 ) )?
标签: excel excel-formula vba