Excel怎样快速列举不重复数据序号、位置和值

修法布施得聪明智慧 , 多分享让生活更美好 。 从海量数据中筛选出不重复值(处理数据经常遇到 , 如笔者经验《Excel数据批量转置(二列转多列)》、《Excel怎样快速根据重复字段合并其它列数据》、《Excel怎样从数据集选r个数据排列组合列表(一)》等也用到) , 如果是行数据可以通过【筛选】中【高级】功能来达到 , 如果是列或单元格区域数据就不能处理 , 下面分享怎样快速列举不重复数据序号、位置和值的处理方法 。 1Excel数据批量转置(二列转多列)
1Excel如何快速按照反复字段归并其它列数据
2Excel如何从数据集选r个数据摆列组合列表(一)

Excel怎样快速列举不重复数据序号、位置和值

文章插图

需要这些哦
Microsoft Office Excel 2007
Excel VBA
处置方式/
1起首打开Microsoft Office Excel 2007 , 新建文档并保留文件名《Excel如何快速列举不反复数据序号、位置和值 .xlsm》(演示文件 , 下面代码复制到能运行宏的工作簿都可以)如图 。
Excel怎样快速列举不重复数据序号、位置和值

文章插图

2然后按下快捷键ALT+F11打开VBA(宏)编纂界面 , 然后点菜单栏【插入】下拉中列表中点【模块(M)】如图 。
Excel怎样快速列举不重复数据序号、位置和值

文章插图

3然后插入了一个模块1 , 在代码框中复制如下代码:
Option Base 1
Sub 选数据列举不反复()
    '2020-8-7 22:46:52
    Dim myrange As Range, myranges As Range, zhtj(), i As Long, a As Long
    Set myranges = Selection
    ReDim zhtj(myranges.Count, 2)
    i = 0
    a = 0
    On Error Resume Next
    With CreateObject("scripting.dictionary")
        For Each myrange In myranges
【Excel怎样快速列举不重复数据序号、位置和值】            a = a + 1
            If myrange.Value <> "" Then
                i = i + 1
                .Add myrange.Value, myrange.Address(RowAbsolute:=False, ColumnAbsolute:=False)
                zhtj(i, 1) = i
                zhtj(i, 2) = a
                If Err.Number <> 0 Then
                    i = i - 1
                If
                Err.Clear
            If
        Next myrange
        Set myrange = Application.InputBox(Prompt:="选择提取数据输出一个单位格", Type:=8)
        myrange.Resize(1, 4) = Array("序号", "原数据序号", "单位格地址", "不反复数值")
        myrange.Offset(1, 0).Resize(i, 2) = zhtj
        myrange.Offset(1, 2).Resize(i, 1) = WorksheetFunction.Transpose(.items)
        myrange.Offset(1, 3).Resize(i, 1) = WorksheetFunction.Transpose(.keys)
    With
Sub
Excel怎样快速列举不重复数据序号、位置和值

文章插图

4以上操作动态过程如下:
Excel怎样快速列举不重复数据序号、位置和值

推荐阅读