本帖最后由 ittech 于 2024-7-14 15:40 编辑
众所周知,Excel里给含有合并单元格的列插入序号时不是很方便,直接拖拽肯定是错的。
这种情况应该会经常碰到,网上呢有一些用公式解决的我自己试了一下并不理想,还是VBA简单粗暴。
新建个宏运行即可,大家应该都会哈。
此时,通过使用VBA代码,可以完美解决此问题,如图所示
代码直接放下边喽。
Sub FillSerialNumbersConsecutively()
Dim rng As Range
Dim cell As Range
Dim serialNum As Long
' 弹出窗口让用户选择范围
Set rng = Application.InputBox("请选择填充序号的范围(例如A1:A100):", "选择范围", Type:=8)
If rng Is Nothing Then
MsgBox "未选择范围,序号填充已取消。"
Exit Sub
End If
' 初始化序号
serialNum = 1
' 按行遍历用户选择的范围
For Each cell In rng
' 如果当前单元格是合并单元格的一部分,则跳过,直到遇到合并单元格的起始单元格
If cell.MergeCells Then
If cell.Address = cell.MergeArea(1, 1).Address Then
' 为合并单元格的起始单元格分配序号
cell.Value = serialNum
serialNum = serialNum + 1
End If
Else
' 为非合并单元格分配序号
cell.Value = serialNum
serialNum = serialNum + 1
End If
Next cell
End Sub
|