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
使用方法
- 按 ALT + F11 打开 VBA 编辑器;
- 点击菜单栏「插入」→「模块」;
- 把上面的代码粘贴进去;
- 回到 Excel,按 ALT + F8,运行宏 InsertBedRows。
效果示例
原始数据:
房间号 | 床位数 | 床位号 |
---|---|---|
05 | 3 | |
06 | 2 |
运行后变成:
房间号 | 床位数 | 床位号 |
---|---|---|
05 | 3 | |
05 | ||
05 | ||
06 | 2 | |
06 |