我有以下功能可根据单元格颜色对一系列单元格求和。
Function SumByColor(CellColor As Range, R As Range)
Dim x As Double: x = 0
Dim i As Long: i = CellColor.Interior.Color
For Each Item In R
If Item.Interior.Color = i Then x = x + Item.Value
Next Item
SumByColor = x
End Function
当我第一次使用它时,它工作正常。但是,当我将它复制/粘贴到第二个单元格时,结果是原始值 - 这是有意义的,因为我使用我想要结果的单元格作为函数调用的第一个参数,并且它随着复制粘贴。但是,我改变了细胞颜色,结果并没有改变我期望的方式。
第一个函数调用:
=sumbycolor(J5,$E$1:$E$58)
该功能在单元格J5中,为绿色,结果为xxxx
复制/粘贴函数调用:
=sumbycolor(J8,$E$1:$E$58)
该功能在单元格J8中,复制/粘贴变为绿色,结果为xxxx
然后我将单元格J8的颜色更改为蓝色,这应该将结果从xxxx更改为yyyy - 但它没有。
手动重新计算工作表不起作用,也没有保存工作簿,关闭它并重新打开它。将函数调用键入新的(蓝色)单元格可以得到正确的yyyy结果。更改原始单元格中单元格的颜色也不会导致结果按预期更改。
如果我使用不同的单元格来获取颜色代码,它也不起作用 - 即使用单元格J8中的颜色和K8中的函数调用。第一次获得正确的总和,但如果我在J8中更改颜色,则不会更新。
当我说“更改单元格的颜色”时,我正在使用下拉菜单来更改它 - 而不是公式或功能。当我这样做时,看起来单元格的Color属性没有得到更新 - 我还需要在函数中做些什么才能确保用当前的Color设置重新计算?