正如我在标题中所说,我可以使用 Excel 单元格的背景颜色或格式作为公式中的条件吗?
例如:我有一个数字和名称网格,如果我想让单元格采用“红色”格式或“绿色”格式,我会手动选择。我还想有一个计数器来显示我有多少个“绿色”和“红色”单元格。
有可能吗?你能想到其他方法来实现类似的效果吗?
答案1
您需要创建一个具有任意名称的命名引用,引用如下:
“GET.CELL(38,“ 是获取带有数字值的背景颜色。
然后将该值放入另一个单元格中:
=CellColor
尽管 CellColor 是您的名字,但您给出的任何名称都是如此。在我的例子中,我将其放在 B17 单元格中。
然后,您可以使用下面的公式检查条件。我将其设置为 D17。
=IF(B17=2,0,C17)
这意味着如果 A17 是浅灰色背景,则获取 D17 的值为 0 或获取 C17 的值。
我刚刚从这个精彩的解释视频中发现了这一点:
https://www.youtube.com/watch?v=WeUrO7YENSg
虽然有点复杂,但确实有效。
答案2
回答您提出的问题:不。
如果您手动设置单元格填充颜色,则需要 VBA 将单元格填充作为公式的输入进行评估。这需要编程,而不仅仅是编写 Excel 单元格公式。
如果您使用条件格式来设置单元格填充颜色,那么可以,您可以使用与条件格式规则相同的逻辑来进一步处理单元格以进行求和或计数。查看 Sumifs() 和 Countifs()。
答案3
是的,您可以在公式中使用单元格背景颜色。
现在,我选择下一个“如何使用公式格式化单元格”。
由于您没有写下以红色和绿色格式化的具体条件,所以我想向您展示如何根据其数据或其他单元格值用颜色填充单元格或单元格范围。
=OR(A2="NY",A2="Moscow",A2="New Delhi")
=AND(A1>1000,B1<500)
=AND(A2>NOW(),A2<=(NOW()+20))
=If(and(A2>=100, A2<=500))
注意: 在上面的例子中,我使用了 A 列。可以测试这些值来格式化其他列,但在这种情况下,您需要先选择“两者”或“所有列”,然后应用公式。
现在,我想解决另一部分“如何设置颜色计数器”。
您可以使用下面编写的 VBA 代码根据背景颜色对单元格进行计数。
Function CountByColour(rColor As Range, rRange As Range, Optional SUM As Boolean)
Dim rCell As Range
Dim lCol As Long
Dim vResult
lCol = rColor.Interior.ColorIndex
If SUM = True Then
For Each rCell In rRange
If rCell.Interior.ColorIndex = lCol Then
vResult = WorksheetFunction.SUM(rCell, vResult)
End If
Next rCell
Else
For Each rCell In rRange
If rCell.Interior.ColorIndex = lCol Then
vResult = 1 + vResult
End If
Next rCell
End If
CountByColour = vResult
End Function
注意:使用 VBA 编辑器将此代码复制并粘贴为 MODULE,并像这样编写公式以使用该函数。
=CountByColour(A2,B2:J6,FALSE)
,其中 A2 是样本单元格,B2:J6 是要计算 A2 等颜色的范围。
笔记,在我将此代码发布到这里之前,我已经对其进行了测试。
希望这对你有帮助。