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

VBA宏开发需求:批量提取模板工作表指定单元格并汇总

Excel VBA宏:多工作表指定颜色单元格提取与合并汇总

嘿,刚接触VBA就想着用宏节省时间,这思路超赞!我给你写了一个完全贴合需求的宏,它会自动遍历工作簿里的所有模板工作表,提取黄色、灰色、绿色单元格的值,合并到一张汇总表,保留原模板表头,还能自动添加各列总计,上手很简单。

实现思路

  • 自动创建/复用「汇总表」:如果没有汇总表就新建并复制模板表头,有则清空旧数据保留表头
  • 遍历所有模板工作表:跳过汇总表,只处理同模板的其他工作表
  • 精准提取指定颜色单元格:识别黄色、灰色、绿色单元格,按原列位置把值追加到汇总表
  • 自动计算总计:在数据末尾添加总计行,对每列数据求和并格式化

完整VBA代码

Sub 提取指定颜色单元格并汇总()
    Dim ws As Worksheet
    Dim summaryWs As Worksheet
    Dim lastRow As Long
    Dim cell As Range
    Dim totalRow As Long
    
    ' 处理汇总表:不存在则新建并复制表头,存在则清空旧数据
    On Error Resume Next
    Set summaryWs = ThisWorkbook.Worksheets("汇总表")
    On Error GoTo 0
    If summaryWs Is Nothing Then
        Set summaryWs = ThisWorkbook.Worksheets.Add(After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count))
        summaryWs.Name = "汇总表"
        ' 复制第一个模板工作表的第1行作为表头(如果表头不在第1行,改这里的行数)
        ThisWorkbook.Worksheets(1).Rows(1).Copy summaryWs.Rows(1)
    Else
        ' 清空汇总表除表头外的所有内容
        summaryWs.Range("2:" & summaryWs.Rows.Count).ClearContents
    End If
    
    ' 遍历所有工作表,跳过汇总表
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> "汇总表" Then
            ' 遍历当前工作表所有单元格,筛选指定颜色
            ' 注意:这里用的是Excel默认颜色索引,黄色=6、灰色=15、绿色=10
            ' 如果是自定义主题色,替换成 cell.Color = RGB(xx,xx,xx) 格式即可
            For Each cell In ws.UsedRange
                If cell.ColorIndex = 6 Or cell.ColorIndex = 15 Or cell.ColorIndex = 10 Then
                    ' 找到汇总表对应列的最后一行,追加值
                    lastRow = summaryWs.Cells(summaryWs.Rows.Count, cell.Column).End(xlUp).Row + 1
                    summaryWs.Cells(lastRow, cell.Column).Value = cell.Value
                End If
            Next cell
        End If
    Next ws
    
    ' 添加总计行
    totalRow = summaryWs.Cells(summaryWs.Rows.Count, 1).End(xlUp).Row + 1
    summaryWs.Cells(totalRow, 1).Value = "总计"
    summaryWs.Cells(totalRow, 1).Font.Bold = True
    
    ' 对每列数据计算求和
    For col = 2 To summaryWs.Cells(1, summaryWs.Columns.Count).End(xlToLeft).Column
        summaryWs.Cells(totalRow, col).Formula = "=SUM(" & summaryWs.Cells(2, col).Address & ":" & summaryWs.Cells(totalRow - 1, col).Address & ")"
        ' 总计单元格加粗,更醒目
        summaryWs.Cells(totalRow, col).Font.Bold = True
    Next col
    
    ' 自动调整列宽,让内容更美观
    summaryWs.Columns.AutoFit
    
    MsgBox "汇总完成啦!", vbInformation
End Sub

使用说明&小提示

  1. 打开你的Excel工作簿,按Alt + F11打开VBA编辑器
  2. 右键点击左侧工作簿名称 → 插入 → 模块,把上面的代码粘贴进去
  3. 回到Excel界面,按Alt + F8,选择「提取指定颜色单元格并汇总」点击执行即可
  4. 如果你的模板表头不在第1行,或者用的是自定义颜色,直接修改代码里对应的行数/颜色值就行

内容的提问来源于stack exchange,提问作者Paulo Araújo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:21:11