如何在Excel中对动态范围数据求和并设置汇总单元格格式
Excel G/H列动态范围求和VBA实现
下面是适配动态行数、自动设置汇总格式的可用代码:
Sub 两列动态求和() Dim lastRow As Long ' 从G列底部往上查找最后一行有数据的行号,兼容列内有空行的场景 lastRow = Cells(Rows.Count, "G").End(xlUp).Row ' 分别写入G、H列的求和公式,求和范围为第1行到最后一行数据 Range("G" & lastRow + 1).FormulaR1C1 = "=SUM(R1C:R[-1]C)" Range("H" & lastRow + 1).FormulaR1C1 = "=SUM(R1C:R[-1]C)" ' 批量设置汇总单元格格式 With Range("G" & lastRow + 1 & ":H" & lastRow + 1) ' 设置字体加粗 .Font.Bold = True ' 一次性设置所有边框为细实线 .Borders.LineStyle = xlContinuous .Borders.Weight = xlThin .Borders.ColorIndex = 0 ' 移除对角线边框 .Borders(xlDiagonalDown).LineStyle = xlNone .Borders(xlDiagonalUp).LineStyle = xlNone End With ' 光标定位到汇总行旁的I列单元格,和原代码逻辑保持一致 Range("I" & lastRow).Select End Sub
核心优化点
- 动态行数适配:自动识别G列最后一行数据的位置,无论导出的数据有多少行都能正确匹配求和范围
- 代码精简:删除了原代码中冗余的
Select/Activate操作,运行效率更高,不会触发屏幕闪烁 - 格式设置简化:批量设置全边框属性,无需逐个定义每一条边框的参数,代码可读性更强
补充说明
如果你的导出数据保证G列没有中间空行,也可以将lastRow的获取代码替换为lastRow = Range("G1").End(xlDown).Row,逻辑完全一致。
内容的提问来源于stack exchange,提问作者T-Larsen
相关产品推荐
相关产品推荐

