You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用VBA统计指定单元格区域内各填充颜色的出现次数?

修正后的VBA单元格颜色统计函数

原代码的问题

  • 最终返回字符串时,深红色对应的变量错误,写成了R(红色的统计变量),应该用Re
  • 直接硬编码RGB值可能和Excel中实际填充颜色不匹配(比如主题色的RGB会随主题变化),如果是自定义颜色,建议先提取目标单元格的颜色值再对比

修正后的代码

Function lbrHrsTot(Rng As Range) As String
    Dim R As Long, G As Long, B As Long, Re As Long, Y As Long, S As Long
    Dim Cell As Range
    
    For Each Cell In Rng
        Select Case Cell.Interior.Color
            Case RGB(255, 0, 0) '红色
                R = R + 1
            Case RGB(0, 176, 80) '绿色
                G = G + 1
            Case RGB(0, 176, 240) '蓝色
                B = B + 1
            Case RGB(166, 166, 166) '银色
                S = S + 1
            Case RGB(255, 192, 0) '黄色
                Y = Y + 1
            Case RGB(192, 0, 0) '深红色
                Re = Re + 1
        End Select
    Next Cell
    
    '优化返回格式,用换行分隔更清晰
    lbrHrsTot = "红色: " & R & vbCrLf & _
                "绿色: " & G & vbCrLf & _
                "蓝色: " & B & vbCrLf & _
                "银色: " & S & vbCrLf & _
                "黄色: " & Y & vbCrLf & _
                "深红色: " & Re
End Function

额外提示

如果发现颜色还是匹配不上,可以先运行下面的小宏获取目标单元格的RGB值,替换到代码中:

Sub GetCellRGB()
    Dim c As Range
    Set c = Selection
    MsgBox "RGB(" & c.Interior.ColorMod(2) & ", " & c.Interior.ColorMod(1) & ", " & c.Interior.ColorMod(0) & ")"
End Sub

内容的提问来源于stack exchange,提问作者Mecca Miles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 20:40:48