Excel 2010 VBA 入门 081 数据处理之获取不重复的数据
目录
示例
示例数据表
代码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 数据处理之获取不重复的数据相关推荐
- Excel 2010 VBA 入门 086 数据处理之获取交叉查询结果表
目录 示例 代码 交叉汇总表 建立交叉汇总表的步骤 建立交叉汇总表的优化 示例 如图所示,该表为某公司的销售数据表.现希望建立一个汇总表,按月份和商品名汇总收入,并将月份作为列标题而商品名作为行标题. ...
- Excel 2010 VBA 入门 093 数据处理之建立数组
目录 示例 代码 数组的基本概念 数组的声明 数组的赋值与数组数据的读取 Ubound和Lbound函数获取数组的上下限 ForEach---Next循环遍历数组的注意事项 计算程序运行的时间 数组处 ...
- Excel 2010 VBA 入门 087 数据处理之按单列汇总多个工作表
示例 如图所示,该工作簿中包含若干个工作表,工作表中为各个学校书籍销售明细.如 何使用VBA按其工作表中的图书名称汇总各种图书的数量? 示例数据表 序号 图书名称 版 别 年版 定价 适读范围 订 ...
- Excel 2010 VBA 入门 095 数据处理之用数组实现分列
示例 如图所示,该表为某系统中导出的数据.由于该数据将原本的四列信息合并至一个单元格中,现希望利用数组对该数据进行分列,将其分为四列. 关键词;关注指数;升降幅度;升降位次 小胸钢托聚拢游泳衣;12; ...
- Excel 2010 VBA 入门 088 数据处理之汇总列数不相等的多个工作表
目录 示例 代码1 合并汇总(Consolidate)方法 Array函数 Evaluate方法构造数组 代码2 示例 如图所示,该工作簿中有若干个工资表,由于每个月发放的工资项目不同,因而造成每个工 ...
- Excel 2010 VBA 入门 082 数据处理之对比两个表的数据
示例: 如图所示,该工作簿中有两个来自不同数据源的材料表,这两个表中的数据可能不同.如何使用VBA比较两张表的编号与数量,并建立一张对照表,分别列出两张表的不同:编号同时存在但数量不同:编号在其中一张 ...
- Excel 2010 VBA 入门 077 数据处理之合计汇总
目录 示例 代码1 代码2 代码3 示例 如图所示,该表为某公司年度销售表.如何使用VBA求出每个销售员的年度销售额合计以及公司月度销售合计? 销售员 1月 2月 3月 4月 5月 6月 7月 8月 ...
- Excel 2010 VBA 入门 076 数据处理之计算个人所得税
目录 个人所得税税率表(月度综合所得,适用于2019年及以后取得的综合所得) 代码 个人所得税税率表(月度综合所得,适用于2019年及以后取得的综合所得) (非居民个人工资.薪金所得,劳务报酬所得,稿 ...
- Excel 2010 VBA 入门 034 创建图片批注
目录 批注(Comment)对象 批注的添加与删除 FiIIFormat对象 OnError语句 示例: 批注(Comment)对象 Comment对象是单元格的一个属性,表示单元格的批注.Comme ...
最新文章
- [JS]请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组。
- 计算机视觉还能撑多久?
- mysql 常用命令集_mysql 常用命令集锦[绝对精华]
- python爬虫好学不_python爬虫好学吗
- HTML绘制机器人代码,C#编写机器人PCSDK程序-界面程序上画机器人跟着画
- jquery 表单 清空
- eclipse主题改变
- 2021,属于Golang和Gopher的全新纪元
- 乘客网上订票系统MVC
- MxCAD云图DWG转PDF
- 微机 —— 8086微处理器的内部结构
- 炫酷渐变色背景粒子线条折线连接canvas动画
- 卡通头像生成器Avataaars generator
- vue组件中ctrl键和shift键操作多选
- ios android 跨平台工具,15个很优秀的跨平台的移动开发工具
- Sails.js简介
- android ios9 rom,谁说安卓不如苹果?看Android7.0如何逆袭iOS9.3
- 中国阀门驱动装置行业运行状况与前景趋势研究报告2022-2028年
- Linux下通过NetLink获取网口信息
- 自学HarmonyOS应用开发(64)- 处理屏幕旋转