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

求可按相邻区域特定文本统计指定颜色单元格数量的VBA代码

修正后的条件颜色统计VBA函数

原代码存在几个导致运行异常的问题:

  • 条件区域的单元格引用逻辑错误,直接从第1列开始遍历,未匹配传入的rCondRange实际位置
  • 统计变量vResult未初始化,首次累加时会因类型错误报错
  • 变量类型定义不严谨,可能引发数值溢出或类型不匹配

以下是修正后的完整代码:

Function ConditionalColorFunction(rColor As Range, rColoredRange As Range, StrCond As String, rCondRange As Range) As Long
    Dim rColoredCell As Range
    Dim lCol As Long
    Dim condRow As Range
    Dim vResult As Long ' 定义为Long类型,避免类型错误
    
    lCol = rColor.Interior.Color
    vResult = 0 ' 初始化统计值为0
    
    For Each rColoredCell In rColoredRange
        ' 检查当前单元格颜色是否匹配指定颜色
        If rColoredCell.Interior.Color = lCol Then
            ' 获取条件区域中与当前单元格同行的区域
            Set condRow = Intersect(rCondRange, rColoredCell.EntireRow)
            ' 检查该行条件区域是否存在指定文本
            If Not condRow Is Nothing Then
                If Application.CountIf(condRow, StrCond) > 0 Then
                    vResult = vResult + 1
                End If
            End If
        End If
    Next rColoredCell
    
    ConditionalColorFunction = vResult
End Function

参数说明

  • rColor:单个单元格,用于指定要匹配的背景色(取该单元格的填充色)
  • rColoredRange:需要统计的目标单元格区域(遍历该区域检查颜色)
  • StrCond:需要匹配的特定文本内容
  • rCondRange:存放条件文本的区域(与目标区域的行一一对应)

使用示例

在Excel单元格中输入公式:

=ConditionalColorFunction($A$1, $C:$C, "已完成", $B:$B)

该公式的作用是:统计C列中,背景色与A1单元格相同,且同一行B列包含"已完成"文本的单元格总数。

内容的提问来源于stack exchange,提问作者Robert Buchanan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:07:48