当Excel工作表包含具有微妙颜色渐变的单元格(例如,相同颜色的20%,40%重音)时,仅使用内部颜色索引的基于颜色的计数不会给出准确的结果 - 不在我的工作中, 至少。因此,我有一个明智的想法,即基于RGB颜色进行比较和后续计数。
我修改了我在网络上找到的一个函数,其中一个函数是here(下面称为 帮助 函数),以便进行比较和计数将取决于更细粒度的RGB值(输出为文本)。
Function CountRGB(CellColor As Range, SumRange As Range)
'
' SumByColor Function
' VBA and Macros for Microsoft Excel by Bill Jelen "Mr.Excel"
' Page 84
'
' Modified 02/04/2007 by Stanley D. Grom, Jr.
Dim oneCell As Range
Dim myCell As Range
Dim iCol As Integer
Dim myTotal As Integer
Dim N As Double
Dim a As Variant
Dim b As Variant
iCol = CellColor.Interior.ColorIndex
a = Str(iCol Mod 256) & ", " & Str(Int(iCol / 256) Mod 256) & ", " & Str(Int(iCol / 256 / 256) Mod 256)
For Each myCell In SumRange
N = myCell.Interior.ColorIndex
b = Str(N Mod 256) & ", " & Str(Int(N / 256) Mod 256) & ", " & Str(Int(N / 256 / 256) Mod 256)
If b = a Then
myTotal = myTotal + 1
End If
Next myCell
CountRGB = myTotal
End Function
辅助函数正在为这些阴影输出不同的文本值,电子表格中这些文本输出的比较会产生正确的结果(但显然不在VBA代码中):
我尝试使用代码中的EXACT
工作表函数来改进代码,但在我的Excel版本(Excel for Mac,版本14.4.2)中,此函数是在VBA中不可用。
我在stackoverflow中读到的一些讨论建议在条件语句中使用用于颜色编码的标准来进行计数(例如,here) - 这不是我感兴趣的解决方法。
是否有某种方法可以修改此代码以使其正常工作?
感谢您的考虑。