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

技术求助:基于单元格颜色为Excel单元格赋值并计算行平均

基于单元格颜色计算项目进度平均值解决方案

方法一:自定义VBA函数(直接高效)

Excel原生函数无法直接识别单元格填充颜色,通过自定义VBA函数可实现颜色到数值的映射及平均值计算:

  1. 打开VBA编辑器:按下Alt + F11组合键
  2. 插入模块:右键点击左侧工程窗口中的工作簿名称→插入→模块
  3. 粘贴以下代码:
' 根据单元格颜色返回对应进度值
Function GetColorValue(cell As Range) As Double
    Select Case cell.Interior.Color
        Case RGB(0, 176, 240) ' 蓝色(可替换为你实际使用的蓝色RGB值)
            GetColorValue = 1
        Case RGB(0, 255, 0) ' 绿色(可替换为实际RGB值)
            GetColorValue = 0.5
        Case RGB(255, 255, 0) ' 黄色(可替换为实际RGB值)
            GetColorValue = 0.3
        Case RGB(255, 0, 0) ' 红色(可替换为实际RGB值)
            GetColorValue = 0.2
        Case Else ' 白色/无填充颜色
            GetColorValue = 0
    End Select
End Function

' 计算指定区域的颜色进度平均值
Function AverageColor(rng As Range) As Double
    Dim total As Double
    Dim cell As Range
    total = 0
    For Each cell In rng
        total = total + GetColorValue(cell)
    Next cell
    AverageColor = total / rng.Count
End Function
  1. 返回工作表使用函数:在需要显示平均值的单元格中输入=AverageColor(B2:E2)(将B2:E2替换为你每行的4个状态单元格区域),按回车即可自动计算。

注意:使用此方法需将工作簿保存为启用宏的工作簿(.xlsm格式),否则宏会失效。

方法二:辅助列+自定义名称(无需宏)

如果不想启用宏,可通过自定义名称获取颜色索引,结合辅助列实现计算:

  1. 定义颜色索引名称:
    • 点击「公式」选项卡→「定义名称」
    • 名称输入CellColor,引用位置输入=GET.CELL(63,Sheet1!A1)(将Sheet1替换为你的工作表名称)
  2. 添加辅助列:
    • 在每个状态列右侧插入辅助列,比如B列对应C列,C2单元格输入=CellColor,下拉填充至所有行,该单元格会返回对应状态单元格的颜色索引值
  3. 映射进度值:
    • 在辅助列右侧再插入一列(如D列),D2输入嵌套IF公式(替换公式中的颜色索引为你实际使用的颜色对应值,可通过选中颜色单元格后在VBA立即窗口输入?ActiveCell.Interior.ColorIndex获取):
      =IF(C2=37,1,IF(C2=43,0.5,IF(C2=44,0.3,IF(C2=3,0.2,0))))
      
  4. 计算平均值:
    • 在目标单元格输入=AVERAGE(D2:G2)(将D2:G2替换为该行的4个进度值辅助列区域)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 12:47:07