Excel VBA按C列内容插入行时避免改动表头的代码修改咨询
VBA代码修改方案
修改后完整代码
Sub InsertRowOnCColumnChange() Dim lastRow As Long ' 获取C列最后一个包含内容的行号 lastRow = Cells(Cells.Rows.Count, "C").End(xlUp).Row ' 从最后一行向上遍历,到第16行停止,不会处理表头所在的第15行及以上区域 For sRow = lastRow To 16 Step -1 If Cells(sRow, "C") <> Cells(sRow - 1, "C") Then Rows(sRow).EntireRow.Insert End If Next sRow End Sub
核心修改说明
- 原代码循环终止值为
3,会一直向上遍历对比到第3行,导致表头区域被误插入行。将终止值修改为16后,遍历只会执行到第16行为止,仅处理数据区域。 - 修正了原代码中声明
lRow变量但未实际使用的问题,改用lastRow存储C列最后有效行号,逻辑更规范。 - 如果不需要在表头和第一条数据之间插入空行,可将循环终止值调整为
17,此时只会对比两条数据行之间的C列内容,不会触发表头和第一条数据之间的插入逻辑。
内容的提问来源于stack exchange,提问作者Justin White
相关产品推荐
相关产品推荐

