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
使用说明&小提示
- 打开你的Excel工作簿,按
Alt + F11打开VBA编辑器 - 右键点击左侧工作簿名称 → 插入 → 模块,把上面的代码粘贴进去
- 回到Excel界面,按
Alt + F8,选择「提取指定颜色单元格并汇总」点击执行即可 - 如果你的模板表头不在第1行,或者用的是自定义颜色,直接修改代码里对应的行数/颜色值就行
内容的提问来源于stack exchange,提问作者Paulo Araújo
相关产品推荐
相关产品推荐

