如何用VBA在含2024的行下方插入行并在对应列填入2025?
需求说明
从ERP导出的销售历史数据中,需在所有包含2024年的行下方插入空行,并在新行的D列(年份列)填入2025,用于明年的销售预测。
示例数据
Employee.Employee Company Product Year Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Total
Employee.1 Customer A Product A 2023 1 1
Employee.1 Customer A Product A 2024 2 2
Employee.1 Customer A Product B 2024 4 4
Employee.1 Customer A Product C 2024 5 5
Employee.1 Customer A Product D 2024 3 3
Employee.1 Customer A Product E 2024 3 3
Employee.1 Customer A Product F 2023 39 22 61
Employee.1 Customer A Product F 2024 19 19
修改后的VBA代码
Sub AddForecastRows() Dim RngToCheck As Range Set RngToCheck = ThisWorkbook.Sheets("Invoiced Tons by Customer by Mo").Range("D3:D5000") Dim ValToFind As Long ValToFind = 2024 Dim i As Long ' 从下往上遍历,避免插入行影响后续循环顺序 For i = RngToCheck.Rows.Count To 1 Step -1 If RngToCheck(i).Value = ValToFind Then ' 在当前行下方插入新行 RngToCheck(i).Offset(1, 0).EntireRow.Insert ' 为新行的年份列(D列)填充2025 RngToCheck(i).Offset(1, 0).Value = 2025 End If Next i End Sub
代码修改说明
- 保持从下往上遍历的逻辑,确保插入新行后不会打乱未处理行的索引顺序
- 调整插入行的语句为
RngToCheck(i).Offset(1, 0).EntireRow.Insert,更直观地指向当前行的下一行位置 - 新增
RngToCheck(i).Offset(1, 0).Value = 2025,直接在新插入行的D列填入2025 - 若数据范围或工作表名称有变化,可自行修改
Range("D3:D5000")和工作表名称参数
内容的提问来源于stack exchange,提问作者alwago6t6

