ittech 发表于 2024-7-14 15:31

[VBA] Excel/WPS 给一列插入序号,支持合并单元格

本帖最后由 ittech 于 2024-7-14 15:40 编辑

众所周知,Excel里给含有合并单元格的列插入序号时不是很方便,直接拖拽肯定是错的。
这种情况应该会经常碰到,网上呢有一些用公式解决的我自己试了一下并不理想,还是VBA简单粗暴。
新建个宏运行即可,大家应该都会哈。


https://pic.imgdb.cn/item/6693807ed9c307b7e97f306b.gif

此时,通过使用VBA代码,可以完美解决此问题,如图所示

https://pic.imgdb.cn/item/66938011d9c307b7e97ea040.gif


代码直接放下边喽。

```
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

```

lisongmei 发表于 2024-7-15 10:07

用公式也挺简单的 =COUNTA($G$1:G1)+1

236560739 发表于 2024-7-18 11:57

大佬,能不能出个合并Excel的代码,工作会遇到把中文表格翻译成中英文,目前我说把中文表格丢谷歌翻译,然后得到英文表格,然后用的python进行合并,但是格式全乱了。

xingdh 发表于 2024-7-14 21:49

好用好用,强力支持!

jori 发表于 2024-7-14 22:01

还是VBA简单粗暴,这种优秀的代码多贴几贴,尤其与工程预算计算相关的

SmallRadar 发表于 2024-7-14 22:02

支持原创代码{:1_921:},以前都是用ff格子工具,

xushengld1 发表于 2024-7-14 22:09

真不错,以前我都是一个一个敲

meigui6431 发表于 2024-7-14 23:11

先生大义,感谢分享

ittech 发表于 2024-7-15 09:18

SmallRadar 发表于 2024-7-14 22:02
支持原创代码,以前都是用ff格子工具,

FF格子那个序号功能我也试过了,它只能排除空行,面对合并单元格会按自然行数填,比如1、3、8这样的,序号不连续。

supernox 发表于 2024-7-15 11:22

非常感谢。。。

ittech 发表于 2024-7-15 18:59

lisongmei 发表于 2024-7-15 10:07
用公式也挺简单的 =COUNTA($G$1:G1)+1

谢谢回复,,公式也ok的{:1_893:}

只不过公式还要在fx(输入栏)ctrl+回车,,而且就我的经验来看在办公场所,发的表能不带公式最好不带,还有就是公式对于单元格格式有要求
页: [1] 2
查看完整版本: [VBA] Excel/WPS 给一列插入序号,支持合并单元格