【发布时间】:2014-05-19 15:58:03
【问题描述】:
如果单元格具有特定的背景填充颜色(由参考单元格给出),我有以下 VBA 代码用于对单元格进行计数或求和:
Function ColorFunction(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 Count = True Then
For Each rCell In rRange
If rCell.Interior.ColorIndex = lCol Then
vResult = WorksheetFunction.Count(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
ColorFunction = vResult
End Function
由于我不熟悉 VBA 环境,如何修改此代码以接受 2 个单元格作为背景填充颜色的“基线”,并在一行单元格包含两个输入时输出范围的计数/总和颜色?
【问题讨论】:
-
Count设置在哪里?您是要查看背景颜色和前景色,还是您的意思是任何一个单元格都是特定颜色?如果您想查看加色,那么我们是简单地将这些值相加(RGB),还是您只对原色进行操作? -
@SeanCheshire 我的意思是我想修改函数以接受两种“输入”颜色和一个总和/计数范围。也就是说,例如,如果我有两个输入单元格 A1 和 B1,并且我的总和/计数范围为单元格 C1:D20,如果只有单元格 C10 和 D10 具有 A1 和 B1 中指定的颜色,则计数将返回 1 (即它逐行检查)。我不想将颜色加在一起,只是计算单元格或根据背景填充颜色对内容求和。
-
我假设
Count应该是SUM。如果您是unfamiliar with the VBA environment,那么如果发布了答案,您就不太可能理解答案。在网上搜索“Excel VBA 教程”以访问一个好的库并查看他们的 Excel VBA Primers。您花在学习 VBA 上的时间会很快得到回报。 -
@TonyDallimore 我很欣赏这种情绪,但我可以用 C++ 和 Python 编写代码,而不是 VB。我有能力理解它,但我不确定语法等。另外,这段代码是直接从另一个论坛复制的......
-
除了展示如何访问内部颜色索引之外,我认为发布的代码对于创建您寻求的功能几乎没有价值。当前函数按单元格循环遍历一个范围。您想将 rRange 拆分为行,然后将其拆分为每行中的单元格。 VBA 的语法是一个小问题。理解 Excel 对象模型对您来说是个大问题。