Excel VBA 插入空行脚本

学习笔记作者:admin日期:2025-06-16点击:17

摘要:编写一个 VBA 脚本,根据当前行的床位数,在其下方插入相应数量的空行,并保留房间号。

Excel VBA 插入空行脚本

      编写一个 VBA 脚本,根据当前行的床位数,在其下方插入相应数量的空行,并保留房间号。

功能描述

      假设你的数据如下(从第2行开始):

房间号 床位数 床位号
05 3
06 2

      脚本会遍历“床位数”列,根据床位数在当前行下方插入相应数量的空行。

VBA 代码


Sub InsertBedRows()
    Dim ws As Worksheet
    Set ws = ActiveSheet  ' 当前工作表

    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row  ' 获取最后一行(基于A列)

    Dim i As Long
    Dim bedCount As Long
    Dim insertRange As Range

    Application.ScreenUpdating = False  ' 提升速度

    ' 从下往上循环,避免插入行影响后续行号
    For i = lastRow To 2 Step -1
        bedCount = ws.Cells(i, 2).Value  ' B列是床位数
        
        If IsNumeric(bedCount) And bedCount > 1 Then
            ' 在当前行下方插入 (bedCount - 1) 行
            ws.Rows(i + 1 & ":" & i + bedCount - 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
            
            ' 可选:复制房间号到新行(只保留第一行有值)
            ws.Range(ws.Cells(i, 1), ws.Cells(i + bedCount - 1, 1)).MergeCells = False
            ws.Cells(i, 1).Copy ws.Range(ws.Cells(i, 1), ws.Cells(i + bedCount - 1, 1))
            
            ' 可选:清空床位数列(如果你只需要保留第一行)
            ws.Range(ws.Cells(i, 2), ws.Cells(i + bedCount - 1, 2)) = ""
        End If
    Next i

    Application.ScreenUpdating = True
    MsgBox "完成插入空行!"
End Sub

使用方法

  1. 按 ALT + F11 打开 VBA 编辑器;
  2. 点击菜单栏「插入」→「模块」;
  3. 把上面的代码粘贴进去;
  4. 回到 Excel,按 ALT + F8,运行宏 InsertBedRows。

效果示例

      原始数据:

房间号 床位数 床位号
05 3
06 2

      运行后变成:

房间号 床位数 床位号
05 3
05
05
06 2
06

上一篇      下一篇