EXCEL 同一单元格内进行自动编号/序号

背景:

有时候为了使得每行单元格一一对应,又要使得一些无法一一对应的杂项顺序分明,故而需要一列放置有序列的杂项,其它列进行一一对应。

办法:

第一步、将当前excel文件保存为.xlsm文件

第二步、在菜单栏/文件/选项/自定义功能区勾选开发工具

第三步、在菜单栏/开发工具中点击Visual Basic

第四步、如图示,在“工程-VBAProject”窗口下找到VBAProject (当前文件名称.xlsm),右键点击->插入->模块

第五步、如图示,将下面的代码粘贴至右边的空白窗口中

Option Base 1

Sub 选单元格内容每段加序号()

    '2020-1-2 22:21:42

    Dim m As String
    Dim i As Long
    Dim j As Long
    Dim mm As String
    Dim lines() As String

    Dim cmt As Range

    For Each cmt In Selection
        m = cmt.Text
        If cmt.Text <> "" Then
            lines = Split(m, Chr(10))
            mm = ""
            j = 0

            For i = LBound(lines) To UBound(lines)
                If Not (j > 1 And Left(lines(i), 2) = j & ".") Then
                    j = j + 1
                    mm = mm & j & ". " & lines(i) & Chr(10)
                Else
                    mm = mm & lines(i) & Chr(10)
                End If
            Next i

            cmt.Value = Left(mm, Len(mm) - 1) ' 移除末尾的换行符
        End If
    Next cmt
End Sub

第六步、保存代码、运行之。

第七步、选中希望添加序号的单元格(已经填写了内容的),然后点击菜单栏/开发工具/宏,然后选择刚才创建的函数模块,再点击执行即可。

参考:

代码来源:https://www.zhihu.com/question/508637411/answer/3259774764

excelVBA教程来源:编写你的第一个 VBA 宏 - 懒人Excel (lanrenexcel.com)

### 回答1: 很高兴为您解答,可以使用VBA函数来去除Excel单元格内重复的数据。首先,打开VBA编辑器,在模块中添以下代码:Sub Remove_Dupes()Dim Lrow As Long, Dic As Object, K As VariantSet Dic = CreateObject("Scripting.Dictionary")With Sheets("Sheet1")Lrow = .Cells(Rows.Count, "A").End(xlUp).RowFor i = 2 To LrowK = .Cells(i, 1).ValueIf Not Dic.exists(K) ThenDic.Add K, NothingElse.Cells(i, 1).ClearContentsEnd IfNext iEnd WithEnd Sub然后运行该函数,即可完成去重操作。 ### 回答2: 使用VBA可以轻松地进行Excel工作表中同一单元格内容的去重操作。下面是一种实现方法: 1. 首先,打开Excel工作表,按下`ALT + F11`进入VBA编辑器。 2. 在VBA编辑器中,选择当前工作簿的VBA项目,在项目浏览器窗口中右击,选择"插入" -> "模块",在VBA项目中创建一个新的模块。 3. 在新建的模块中,输入以下代码: ```vba Sub 去重() Dim ws As Worksheet Dim rng As Range Dim cell As Range Set ws = ThisWorkbook.ActiveSheet Set rng = ws.UsedRange ' 范围可以根据具体需求修改 For Each cell In rng If cell.Value <> "" Then ' 确保单元格不为空 cell.Value = application.Trim(cell.Value) ' 去除字符串两边的空格 cell.Value = application.WorksheetFunction.Trim(cell.Value) ' 去除字符串中间的多余空格 End If Next cell rng.RemoveDuplicates Columns:=1, Header:=xlNo ' 去重操作 Set rng = Nothing Set ws = Nothing End Sub ``` 4. 运行完以上代码后,可以按下`F5`或点击运行按钮,即可执行去重操作。 以上代码实现的去重操作是针对选定的范围(在代码中的`rng`)进行的。可以根据具体需求修改范围。此外,代码中使用`Trim`函数去除字符串两边的空格,可以避免潜在的去重错误。 希望以上解答能对您有所帮助! ### 回答3: 使用VBA可以轻松将Excel中的同一单元格内容去重。下面是一种简单的方法: 1. 打开Excel并按下`ALT+F11`打开VBA编辑器。 2. 在VBA编辑器中,选择`插入`> `模块`以创建一个新模块。 3. 在新模块中输入以下代码: ``` Sub RemoveDuplicates() Dim rng As Range Dim cell As Range '选择需要去重的单元格范围 Set rng = Range("A1:A10") '将"A1:A10"替换为你要去重的单元格范围 '循环遍历选中的单元格范围 For Each cell In rng '使用RemoveDuplicates方法去重 cell.RemoveDuplicates Columns:=1, Header:=xlNo Next cell End Sub ``` 4. 替换代码中的范围`"A1:A10"`为你所需去重的单元格范围。例如,如果要去重的是A列的所有单元格,则可以使用`"A:A"`。 5. 按下`F5`运行代码。 6. 单元格范围内的重复内容将被删除,只保留唯一值。 请记住保存你的更改并备份你的数据,以防止不必要的数据损失。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值