目录

示例

示例数据表

代码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).ClearFor rowData = 2 To Range("A1").CurrentRegion.Rows.CountsKey = Cells(rowData, "G").Valuebln = TrueFor i = 2 To rowNew - 1If Cells(i, "J").Value = sKey Thenbln = FalseExit ForEnd IfNext iIf bln ThenCells(rowNew, "J").Value = sKeyrowNew = rowNew + 1End IfNext rowData
End Sub

代码3

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

Sub 获取不重复数据3()Dim rowNew As LongDim rowData As LongDim Rng As RangeDim sKey As StringrowNew = 2Range("J2:j" & Rows.Count).ClearFor rowData = 2 To Range("A1").CurrentRegion.Rows.CountsKey = Cells(rowData, "G").ValueSet Rng = Range("J:J").Find(sKey, lookat:=xlWhole)If Rng Is Nothing ThenCells(rowNew, "J").Value = sKeyrowNew = rowNew + 1End IfNext rowData
End Sub

Excel 2010 VBA 入门 081 数据处理之获取不重复的数据相关推荐

  1. Excel 2010 VBA 入门 086 数据处理之获取交叉查询结果表

    目录 示例 代码 交叉汇总表 建立交叉汇总表的步骤 建立交叉汇总表的优化 示例 如图所示,该表为某公司的销售数据表.现希望建立一个汇总表,按月份和商品名汇总收入,并将月份作为列标题而商品名作为行标题. ...

  2. Excel 2010 VBA 入门 093 数据处理之建立数组

    目录 示例 代码 数组的基本概念 数组的声明 数组的赋值与数组数据的读取 Ubound和Lbound函数获取数组的上下限 ForEach---Next循环遍历数组的注意事项 计算程序运行的时间 数组处 ...

  3. Excel 2010 VBA 入门 087 数据处理之按单列汇总多个工作表

    示例 如图所示,该工作簿中包含若干个工作表,工作表中为各个学校书籍销售明细.如  何使用VBA按其工作表中的图书名称汇总各种图书的数量? 示例数据表 序号 图书名称 版  别 年版 定价 适读范围 订 ...

  4. Excel 2010 VBA 入门 095 数据处理之用数组实现分列

    示例 如图所示,该表为某系统中导出的数据.由于该数据将原本的四列信息合并至一个单元格中,现希望利用数组对该数据进行分列,将其分为四列. 关键词;关注指数;升降幅度;升降位次 小胸钢托聚拢游泳衣;12; ...

  5. Excel 2010 VBA 入门 088 数据处理之汇总列数不相等的多个工作表

    目录 示例 代码1 合并汇总(Consolidate)方法 Array函数 Evaluate方法构造数组 代码2 示例 如图所示,该工作簿中有若干个工资表,由于每个月发放的工资项目不同,因而造成每个工 ...

  6. Excel 2010 VBA 入门 082 数据处理之对比两个表的数据

    示例: 如图所示,该工作簿中有两个来自不同数据源的材料表,这两个表中的数据可能不同.如何使用VBA比较两张表的编号与数量,并建立一张对照表,分别列出两张表的不同:编号同时存在但数量不同:编号在其中一张 ...

  7. Excel 2010 VBA 入门 077 数据处理之合计汇总

    目录 示例 代码1 代码2 代码3 示例 如图所示,该表为某公司年度销售表.如何使用VBA求出每个销售员的年度销售额合计以及公司月度销售合计? 销售员 1月 2月 3月 4月 5月 6月 7月 8月 ...

  8. Excel 2010 VBA 入门 076 数据处理之计算个人所得税

    目录 个人所得税税率表(月度综合所得,适用于2019年及以后取得的综合所得) 代码 个人所得税税率表(月度综合所得,适用于2019年及以后取得的综合所得) (非居民个人工资.薪金所得,劳务报酬所得,稿 ...

  9. Excel 2010 VBA 入门 034 创建图片批注

    目录 批注(Comment)对象 批注的添加与删除 FiIIFormat对象 OnError语句 示例: 批注(Comment)对象 Comment对象是单元格的一个属性,表示单元格的批注.Comme ...

最新文章

  1. [JS]请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组。
  2. 计算机视觉还能撑多久?
  3. mysql 常用命令集_mysql 常用命令集锦[绝对精华]
  4. python爬虫好学不_python爬虫好学吗
  5. HTML绘制机器人代码,C#编写机器人PCSDK程序-界面程序上画机器人跟着画
  6. jquery 表单 清空
  7. eclipse主题改变
  8. 2021,属于Golang和Gopher的全新纪元
  9. 乘客网上订票系统MVC
  10. MxCAD云图DWG转PDF
  11. 微机 —— 8086微处理器的内部结构
  12. 炫酷渐变色背景粒子线条折线连接canvas动画
  13. 卡通头像生成器Avataaars generator
  14. vue组件中ctrl键和shift键操作多选
  15. ios android 跨平台工具,15个很优秀的跨平台的移动开发工具
  16. Sails.js简介
  17. android ios9 rom,谁说安卓不如苹果?看Android7.0如何逆袭iOS9.3
  18. 中国阀门驱动装置行业运行状况与前景趋势研究报告2022-2028年
  19. Linux下通过NetLink获取网口信息
  20. 自学HarmonyOS应用开发(64)- 处理屏幕旋转

热门文章

  1. Setting up Basic Access Control
  2. stm32f407探索者开发板资料
  3. 计算机信息机房,计算机信息机房工程全面解决方案模板.docx
  4. 没有人能比快递员更懂通信协议(sig mesh协议栈之网络架构)
  5. VC++钩子使用之全局键盘钩子
  6. vue药物管理系统nodejs
  7. Mathcad的数组使用
  8. matlab中za是什么意思,MATLAB基础
  9. Ansible简介及各模块用法实操
  10. Chp2-1 线性表