You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:基于指定条件批量插入行的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 01:45:45