求助:基于指定条件批量插入行的VBA解决方案
VBA 解决方案:根据输入行生成递增输出行
以下是满足需求的VBA代码,你可根据实际列位置调整参数:
Sub GenerateOutputRows() Dim ws As Worksheet Dim lastRow As Long Dim i As Long, j As Long Dim rowCount As Integer Dim baseValue As String Dim baseDate As Date ' 设置目标工作表(替换为你的实际表名) Set ws = ThisWorkbook.Worksheets("Sheet1") ' 获取输入数据最后一行 lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' 从后向前遍历,避免插入行打乱循环顺序 For i = lastRow To 2 Step -1 ' 获取需要生成的行数(假设"No of rows"在C列) rowCount = ws.Cells(i, "C").Value If rowCount > 1 Then ' 获取基础拼接值(假设目标单元格在A列) baseValue = ws.Cells(i, "A").Value ' 获取基础日期(假设日期在B列) baseDate = ws.Cells(i, "B").Value ' 插入对应数量的行 ws.Rows(i + 1 & ":" & i + rowCount - 1).Insert Shift:=xlDown ' 填充每一行数据 For j = 0 To rowCount - 1 ' 拼接递增数值 ws.Cells(i + j, "A").Value = baseValue & (j + 1) ' 日期逐日递增 ws.Cells(i + j, "B").Value = baseDate + j ' 复制其他列数据(从D列开始,按需调整) ws.Cells(i, "D").EntireColumn.Copy ws.Cells(i + j, "D") Next j End If Next i MsgBox "生成完成!" End Sub
自定义说明:
- 替换
Sheet1为你的实际工作表名称 - 根据数据列位置修改对应标识:
"A":需要拼接递增数值的单元格所在列"B":日期所在列"C":"No of rows"所在列"D":需要复制的其他数据起始列
- 确保输入数据表头在第一行,数据从第二行开始
内容的提问来源于stack exchange,提问作者Cris
相关产品推荐
相关产品推荐

