精华内容
下载资源
问答
  • 现希望得知有哪些户的居民已登记,因而希望获取“户号”不重复值,并存储在J。该如何用VBA实现? 示例数据表 姓名 街路巷 户别 与户主关系 性别 民族 户号 甲1 清水乡双井村 农村...

    目录

    示例

    示例数据表

    代码1

    去除重复值(RemoveDuplicates)方法

    代码2

    代码3


    示例

        如图所示,该表为某村人口登记表。现希望得知有哪些户的居民已登记,因而希望获取“户号”列的不重复值,并存储在J列。该如何用VBA实现?

    示例数据表

    姓名街路巷户别与户主关系性别民族户号
    甲1清水乡双井村农村居民家庭户户主汉族310000122
    甲2清水乡双井村农村居民家庭户汉族310000122
    甲3清水乡红岩村农村居民家庭户汉族310000148
    甲4清水乡红岩村农村居民家庭户汉族310000148
    甲5清水乡红岩村农村居民家庭户汉族310000148
    甲6清水乡红岩村农村居民家庭户二女汉族310000148
    甲7清水乡红岩村农村居民家庭户户主汉族310000148
    甲8清水乡银鸽村农村居民家庭户户主汉族310000157
    甲9清水乡银鸽村农村居民家庭户长女汉族310000157
    甲10清水乡银鸽村农村居民家庭户汉族310000157
    甲11清水乡银鸽村农村居民家庭户汉族310000157
    甲12清水乡街道城镇居民家庭户户主汉族310000168
    甲13清水乡银鸽村农村居民家庭户户主汉族310000179
    甲14清水乡双井村农村居民家庭户汉族310000219
    甲15清水乡双井村农村居民家庭户户主汉族310000219
    甲16清水乡双井村农村居民家庭户汉族310000219
    甲17清水乡老银村农村居民家庭户长子汉族310000395
    甲18清水乡银鸽村农村居民家庭户汉族310000429
    甲19清水乡银鸽村农村居民家庭户汉族310000429
    甲20清水乡银鸽村农村居民家庭户汉族310000429
    甲21清水乡银鸽村农村居民家庭户户主汉族310000429
    甲22清水乡老银村农村居民家庭户户主汉族310000441
    甲23清水乡万书村农村居民家庭户汉族310000450
    甲24清水乡万书村农村居民家庭户汉族310000450
    甲25清水乡万书村农村居民家庭户孙女汉族310000450
    甲26清水乡万书村农村居民家庭户户主汉族310000450
    甲27清水乡街道城镇居民家庭户户主汉族310000541

    代码1

    使用单元格区域的RemoveDuplicates方法可以去除重复值,从而获取不重复值列表。

    Sub 获取不重复数据1()
        Range("G:G").Copy Range("J:J")
        Range("J:J").RemoveDuplicates Columns:=1, Header:=xlYes
    End Sub
    

    去除重复值(RemoveDuplicates)方法

        RemoveDuplicates方法是单元格对象(Range)的一个方法,可以利用该方法去除重复值,其语法为

    Range.RemoveDuplicates([[Columns],Header])

    其中,Range表示单元格区域对象。
        参数Columns为带有重复信息的列数组,本例中为1列,所以为1。当有多列时,可以以Array (CoIN1,CoIN2)的形式表示。
        参数Header表示单元格区域是否含有标题行,可以为xIYes(有标题行)、xINo(无标题行)或者xIGuess(由Excel进行判断)。

    代码2

        将G列中的数据逐一取出,利用循环判断J列中是否有当前的数据,若不存在,则将该数据复制到J列首个空白行。重复以上步骤,直到G列数据均被访问过一次。

    Sub 获取不重复数据2()
        Dim rowNew As Long          '结果数据行号
        Dim rowData As Long         '原始数据行号
        Dim i As Long               '各号计数
        Dim sKey As String          '关键字
        Dim bln As Boolean          '查询结果标志
        
        rowNew = 2                  '设定结果初始行号
        '清空结果域
        Range("J2:J" & Rows.Count).Clear
        For rowData = 2 To Range("A1").CurrentRegion.Rows.Count
            sKey = Cells(rowData, "G").Value
            bln = True
            For i = 2 To rowNew - 1
                If Cells(i, "J").Value = sKey Then
                    bln = False
                    Exit For
                End If
            Next i
            If bln Then
                Cells(rowNew, "J").Value = sKey
                rowNew = rowNew + 1
            End If
        Next rowData
    End Sub
    

    代码3

        将G列中的数据逐个取出,利用Find方法查找J列中含有当前数据的单元格,若不存在,则将该数据复制到J列首个空白行。重复以上步骤,直到G列数据均被访问过一次。
     

    Sub 获取不重复数据3()
        Dim rowNew As Long
        Dim rowData As Long
        Dim Rng As Range
        Dim sKey As String
        
        rowNew = 2
        Range("J2:j" & Rows.Count).Clear
        For rowData = 2 To Range("A1").CurrentRegion.Rows.Count
            sKey = Cells(rowData, "G").Value
            Set Rng = Range("J:J").Find(sKey, lookat:=xlWhole)
            If Rng Is Nothing Then
                Cells(rowNew, "J").Value = sKey
                rowNew = rowNew + 1
            End If
        Next rowData
    End Sub
    

     

    展开全文
  • VBA 获取多列不重复

    千次阅读 2016-07-22 16:42:34
    Sub Uniquedata() Dim EachCell As Range 'Creat UniqDicictionary object Set UniqDic = CreateObject("Scripting.Dictionary") 'Traverse selected area For Each EachCell In Range("A2:C11") ...
    Sub Uniquedata()
    	Dim EachCell As Range
    	'Creat UniqDicictionary object
    	Set UniqDic = CreateObject("Scripting.Dictionary")
    	'Traverse selected area
    	For Each EachCell In Range("A2:C11")
    	'Judge whether each cell is NULL
    	If EachCell <> "" Then
    	'Add key and value into UniqDic if UniqDic dont' have value of this cell
    	If Not UniqDic.exists(EachCell.Value) Then UniqDic.Add EachCell.Value, EachCell.Value
    	End If
    	Next
    	'clear content what you select
    	Range("F2:F" & Range("F2").End(xlDown).Row).ClearContents
    	'input unique data into column you select 
    	Range("F2").Resize(UniqDic.Count) = WorksheetFunction.Transpose(UniqDic.Items)
    End Sub

    展开全文
  • Sub CheckDiff() Dim r%, i% Dim arr, brr Dim d As Object Set d = CreateObject("scripting.dictionary") With Worksheets("sheetName") r = .Cells(.Rows.Count, 1).End(xlUp).Row ...
    Sub CheckDiff()
        Dim r%, i%
        Dim arr, brr
        Dim d As Object
        Set d = CreateObject("scripting.dictionary")
        With Worksheets("sheetName")
            r = .Cells(.Rows.Count, 1).End(xlUp).Row
            arr = .Range("a2:a" & r)
            For i = 1 To UBound(arr)
              d(arr(i, 1)) = ""
            Next
            r = .Cells(.Rows.Count, 2).End(xlUp).Row
            arr = .Range("b2:b" & r)
            ReDim brr(1 To UBound(arr), 1 To 1)
            m = 0
            For i = 1 To UBound(arr)
              If Not d.exists(arr(i, 1)) Then
                m = m + 1
                brr(m, 1) = arr(i, 1)
              End If
            Next
            .Range("c2").Resize(m, 1) = brr
        End With
    End Sub

    参考:http://club.excelhome.net/thread-1383635-1-1.html

    展开全文
  • 利用VBA筛选重复数据

    千次阅读 2019-06-17 14:30:02
    目标:在重复数据中按照一定规则提取、组合。 Sub match() Dim i, j, z, n, flag, A, B, C Set A = Worksheets("Sheet1").UsedRange Set B = Worksheets("Sheet2").UsedRange Set C = Worksheets("Sheet3")....

    目标:在重复数据中按照一定规则提取、组合。

    Sub match()
        Dim i, j, z, n, flag, A, B, C
        
        Set A = Worksheets("Sheet1").UsedRange
        Set B = Worksheets("Sheet2").UsedRange
        Set C = Worksheets("Sheet3").UsedRange
        
        For i = 3 To A.Rows.Count
            For j = 2 To B.Rows.Count
                If A.Cells(i, 1) = B.Cells(j, 2) Then
                     '险种名称
                     Debug.Print B.Cells(j, 2)
                     Select Case B.Cells(j, 3)
                        Case Is = A.Cells(1, 3)
                            '城镇职工基本医疗保险
                            '缴费基数  赋值列不同
                            A.Cells(i, 2) = Val(B.Cells(j, 6))
                            '缴纳金   赋值列不同
                            A.Cells(i, 3) = Val(B.Cells(j, 8))
                            A.Cells(i, 4) = Val(B.Cells(j, 9))
                        Case Is = A.Cells(1, 6)
                            '城镇企业职工基本养老保险
                            '缴费基数
                            A.Cells(i, 5) = Val(B.Cells(j, 6))
                            '缴纳金
                            A.Cells(i, 6) = Val(B.Cells(j, 8))
                            A.Cells(i, 7) = Val(B.Cells(j, 9))
                        Case Is = A.Cells(1, 8)
                            '公务员医疗补助
                            '缴费基数
                            A.Cells(i, 5) = Val(B.Cells(j, 6))
                            '缴纳金
                            A.Cells(i, 8) = Val(B.Cells(j, 8))
                            A.Cells(i, 9) = Val(B.Cells(j, 9))
                        Case Is = A.Cells(1, 10)
                            '生育保险
                            '缴费基数
                            A.Cells(i, 5) = Val(B.Cells(j, 6))
                            '缴纳金
                            A.Cells(i, 10) = Val(B.Cells(j, 8))
                            A.Cells(i, 11) = Val(B.Cells(j, 9))
                        Case Is = A.Cells(1, 12)
                            '工伤保险
                            '缴费基数
                            A.Cells(i, 5) = Val(B.Cells(j, 6))
                            '缴纳金
                            A.Cells(i, 12) = Val(B.Cells(j, 8))
                            A.Cells(i, 13) = Val(B.Cells(j, 9))
                        Case Is = A.Cells(1, 14)
                            '失业保险
                            '缴费基数
                            A.Cells(i, 5) = Val(B.Cells(j, 6))
                            '缴纳金
                            A.Cells(i, 14) = Val(B.Cells(j, 8))
                            A.Cells(i, 15) = Val(B.Cells(j, 9))
                        Case Else
    
                    End Select
    
                End If
            Next
        Next
        
        '把名字找到,然后将属性整合
        
        j = 3
        flag = 0
        'Debug.Print C.Cells(j, 1)
        
        For i = 3 To A.Rows.Count
            If C.Cells(j, 1) = "" Then
                For z = 3 To j   'z用于控制待写入数据和前面数据的重复比较次数
                    'Debug.Print z
                    If C.Cells(z, 1) = A.Cells(i, 1) Then
                        If C.Cells(z, 1) <> "" Then
                            flag = 1   'flag用于判断待写入数据是否和前面的数据重复
                            Debug.Print z
                        End If
                    End If
                Next
                
                If flag = 0 Then   '只有经过上面的重复数据循环判断,才能确定这个数据不是重复数据
                    C.Cells(j, 1) = A.Cells(i, 1)
                    For n = 2 To 15   'n 用于控制写出数据的列数
                        C.Cells(j, n) = A.Cells(i, n)
                    Next
                    Debug.Print C.Cells(j, 1)
                    j = j + 1    '
                End If
                
            End If
            flag = 0
        Next
    
        
        Debug.Print "Done"
        
    End Sub
    
    
    展开全文
  • VBA查找重复单元格

    2011-08-18 10:34:53
    我的excel中有两列值,第一列的值有: A B C D .. 等等26个英文字母。 第二列空白。 第三列的值是: A D R G R W Z ..等等不重复的字母。 我希望能够在第二列里,显示第一列当前行的字母,是否在第三列中出现过;...
  • VBA 数组不同值统计

    2011-04-24 20:23:36
    VBA 数组不同值统计 VBA 数组不同值统计
  • 文章目录使用Excel 的vba宏将同行数据合并到同一单元格、效果展示二、创建变量三、将excel数据存入变量中四、拼接处理五、拼接后插入 、效果展示 图:未拼接前 图二:拼接后效果 二、创建变量 'vbCrLf 为...
  • 如何利用VBA数组提取列不重复的值,并存放于新表中? 日期 销售经理 客户分类 区域 分配业务员 回款地 所属公司 产品分类 客户名称 销售数量 单价 销售金额 送货单号 2010...
  • 在已经输入的数据中,找到并复制想要的数据,然后粘贴到指定的地方,是再自然不过的操作了。或者从工作表的个单元格区域复制到同一工作表中另外的单元格区域,或者从工作表的个单元格区域复制到另工作表中的...
  • 数据匹配之VBA

    2020-06-16 18:56:33
    它与传统的宏语言不同,传统的宏语言具有高级语言的特征,没有面向对象的程序设计概念和方法。而VBA 提供了面向对象的程序设计方法,提供了相当完整的程序设计语言。VBA 易于学习掌握,可以使用宏记录器记录用户的...
  • 实例需求:数据保存在A中,需要在其中提取多组数据分别写入B:E中。如果A列数据以反斜杠结尾,例如A4单元格100g787×1092-白牛皮沙龙纹A/,提取物料名称时需要去除末尾的反斜杠;对于非反斜杠结尾的数据,年提取...
  • Excel使用过程中,有很多场合都需要获取数据不重复值。获取不重复值的方法有很多,例如高级筛选法、透视表法、基础操作法和公式法。本例分别向大家介绍这四种方法如何使用。 工具/原料 Excel 高级筛选...
  • VBA种很久远的编程语言,但并过时。在满足以下两个条件时,借助 VBA 可以极大的提升生产率,降低出错率:你的电脑上允许自主安装软件; 你需要执行的工作中大部分的步骤都是固定且重复的。项目背景近期接到...
  • 相信大家对Excel并陌生,因为但凡了解Windows系统的童鞋,都知道Word、Excel、PowerPoint是Windows的办公软件中最最常用的软件。...还是知道VBA是什么呢。OK。我们先举个别的例子,什么例子呢?大家都知道Window
  • '表格建立完成后发现第一列和后面的数据错开了一行,有问题,故在A1插入一个空格,然后将前两个空行删除 Sheets(Sheets( "省公司" ).Cells(n, "A" ).Value).Range( "A1" ).Insert Shift:=xlDown Sheets(Sheets( ...
  • 在excel表中利用IF函数按最新日期(条件)查询返回不重复的记录
  • 本文介绍了利用 Excel 中的 Power Query 与 VBA 实现 CSV 格式数据清洗的关键步骤及思路,对实操过程中的性能提升等具体问题给出了解决办法,最后对此类问题给出了通用的注意事项,具备一定的指导性。
  • Sub lqxs() Dim Arr, i&, x, y, z Dim d, k, t Set d = CreateObject("Scripting.Dictionary") Set s = CreateObject("Scripting.Dictionary") Sheet1.Activate [f:g].ClearContents ...Arr = [a1].CurrentRegio
  • excel vba 数据分析

    千次阅读 2019-01-20 12:20:00
    VBA(Visual Basic for Application)是Microsoft Office系列软件的内置编程语言,其语法结构与Visual Basic编程语言互相兼容,采用的是面向对象的编程机制和可视化的编程环境。 第节 标识符 .定义 标识符是...
  • VBA+批处理实现WORD转EXCEL数据分析开发日志WORD程序转EXCEL并处理数据项目目的开发日志2020-09-01(批处理)开发日志V1.2.1 2020-09-05业务流程分以下几步:当前版主要的问题当前版次要的问题技术小结2020-09-05 ...
  • 2015-04-01|@Excel报表顾问因为是要保留源数据的,所以此处允许用删除重复项等一些操作。本文介绍种函数和vba代码,进行运算。源数据如下:函数的方式是D1=INDEX(A:A,SMALL(IF(MATCH($A$1:$A$10,$A$1:$A$10,...
  • Sub 工作表拆分2() '通过筛选方法完成需求,速度快,但当有合并单元格时就能用。读者可以根据实际情况选用 Dim SplitCol As String, ColNum As Integer, HeadRows As Byte, arr, lastrow, i, ShtIndex, only As ...
  • 众数函数的用法 │ ├2-56 再谈自定义函数-VLOOKUPS │ ├2-57 判断成绩所在区间的人数-Frequency的经典用法1 │ ├2-58 统计不重复的个数-Frequency的经典用法2 │ ├2-59 提取不重复的价格,按从大到小的顺序...
  • 前两天在工作中遇到一个小需求,如果将一列相同内容的数据合并到一个单元格?如下图所示,如将等级一样的城市合并到一个单元格,城市之间用逗号分隔开来,如何实现?两个解决方法,分享给大家!方法一 IF函数法在...
  • 用 xlwings 处理 Excel 中的重复数据

    千次阅读 2020-04-25 04:32:43
    and myList[i][2].strip()==myList[j][2].strip(): # 移除重复数据 myList.remove(myList[j]) # 补偿删除造成的数据迁移 i-=1 i+=1 sht['F1'].value = myList # sht['F1'].current_region.autofit() # sht['F1']....
  • 实例需求:规格数据保存在第一列,其中包含多种不同格式,现在需要拆分为三列:主尺寸、负偏差和正偏差。 无偏差数据的填入0 负偏差列加入负号 偏差数据为简写小数需要补全小数点之前的零(A6和A7) ±偏差数据分别...
  • 现希望建立个汇总表,按月份和商品名汇总收入,并将月份作为标题而商品名作为行标题。该如何用VBA实现? 日期 商品代码 商品名 数量 收入 2011/8/17 01.0032 ASWDVBN 0.05 4273.5 ...
  • 在制造业公司的生产管理,经营管理,采购管理,财务管理等工作中,都有大量的数据处理的任务,通过繁复的excel手工运算...以下通过一些案例,展示利用excel公式和VBA进行自动化数据分析,数据汇总,网页表单自动提...
  • 关于VBA数据透视表的操作使用

    万次阅读 2015-08-25 17:05:28
    小弟不才,初来乍到EH论坛...在学习VBA学习E表的过程中,对于数据透视表的操作,这两天处处碰壁。...希望能以此使其他的朋友在刚接触VBA数据透视表的时候,能少走我走过的弯路。主要还是描述性的介绍相关的语法含义
  • EXCEL第一列内容相同的,第二列单元格内容相应合并在同一个单元格Excel 问题描述抽取第一列中的相同内容抽取第二列内容道绿框中第二列 Excel 问题描述 红色框是原始的数据,我的目的是想要通过红色框的转换成绿色框...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 986
精华内容 394
关键字:

vba提取一列不重复数据