VBA RemoveDuplicates方法去重复项
RemoveDuplicates后边必须跟参数否则不起作用
ActiveSheet.Range("G21:R36").RemoveDuplicates Columns:=12, Header:=xlYes
其中Columns参数指定要删除重复项的列,如果是1的话,那么第一列中重复项所在行都会被删除,如果是2则只有1,2两列均重复的行才会被删除,以此类推,你的区域12列,那么只有12列均重复的行会被删除。
如果想在12列中只根据某几列的重复来删除,比如,1 3 7列。那么参数写为Columns:=Array(1,3,7)
案例介绍:
1. 仅根据第1列重复项删除整行
源表:黄色标记的都是重复项
VBA语句:
Option Explicit
Option Compare Text
Sub 去重()
Dim sSheet As Worksheet
Set sSheet = ActiveSheet
sSheet.Range("A1:H25").RemoveDuplicates Columns:=, Header:=xlYes
End Sub
或:个人推荐下面这种写法
Option Explicit
Option Compare Text
Sub 去重()
Dim sSheet As Worksheet
Set sSheet = ActiveSheet
sSheet.Range("A1:A25").EntireRow.RemoveDuplicates Columns:=, Header:=xlYes
End Sub
运行后:
去重复项时忽略大小写,示例
源表:
VBA语句:
Option Explicit
Option Compare Text
Sub 去重()
Dim sSheet As Worksheet
Set sSheet = ActiveSheet
sSheet.Range("A1:H25").RemoveDuplicates Columns:=, Header:=xlYes
End Sub
运行后:
RemoveDuplicates 方法去重规则总结:
a.去重时忽略大小写
b.前或后带空格的项却不做为重复项,无法去重,见上面案例。----- 关于这一点,经验验证:WPS 2019 --- 数据 --- 删除重复项 也是无法去除的,因此RemoveDuplicates 方法和工具菜单的方式去重是一样的效果。
2. 仅根据第2列重复项删除整行
源表:
VBA语句:
Option Explicit
Option Compare Text
Sub 去重()
Dim sSheet As Worksheet
Set sSheet = ActiveSheet
sSheet.Range("A1:H25").RemoveDuplicates Columns:=, Header:=xlYes
End Sub
或:sSheet.Range("A1:H25").RemoveDuplicates Columns:=Array(2), Header:=xlYes
运行后:
3. 仅根据第 1 和 2列 重复项删除整行,能否生效?
源表:
VBA语句:
Option Explicit
Option Compare Text
Sub 去重()
Dim sSheet As Worksheet
Set sSheet = ActiveSheet
sSheet.Range("A1:H25").RemoveDuplicates Columns:=Array(, 2), Header:=xlYes
End Sub
运行后:
发现没有效果,重复项没有去除掉!!
再示例: 要过滤的多列重复项 都处在同一行
源表:
VBA语句:
Option Explicit
Option Compare Text
Sub 去重()
Dim sSheet As Worksheet
Set sSheet = ActiveSheet
sSheet.Range("A1:H25").RemoveDuplicates Columns:=Array(, ), Header:=xlYes
End Sub
运行后:
第1列的重复项和第3列的重复项 处于同行,才会去做移除操作,见上图!
另:
http://www.amarindaz.com/excel-vba-remove-duplicates/ Excel VBA Remove Duplicates Method
Header- It determines whether the given range does contain header or not. User can specify three values in header parameter. They are shown below
Header:=xlYes- Choose this value if given range does contain Header
Header:=xlNo – Choose this value if given Range doesn’t contain header
Header:=xlGuess- Choose this value if you want excel to determine the existence of Header
示例1:Header:=xlYes
源表:
VBA语句:
Option Explicit
Option Compare Text
Sub 去重()
Dim sSheet As Worksheet
Set sSheet = ActiveSheet
sSheet.Range("A1:H25").RemoveDuplicates Columns:=, Header:=xlYes
End Sub
运行后:
第1列 与标题行重复项 没有去除掉,其它行重复项已去除。
示例2:Header:=xlNo
源表:
VBA 语句:
Option Explicit
Option Compare Text
Sub 去重()
Dim sSheet As Worksheet
Set sSheet = ActiveSheet
sSheet.Range("A1:H25").RemoveDuplicates Columns:=, Header:=xlNo
End Sub
运行后:
发现与标题行重复项已去除!
示例3:Header:=xlGuess
源表:
VBA语句:
Option Explicit
Option Compare Text
Sub 去重()
Dim sSheet As Worksheet
Set sSheet = ActiveSheet
sSheet.Range("A1:H25").RemoveDuplicates Columns:=, Header:=xlGuess
End Sub
运行后:
VBA RemoveDuplicates方法去重复项的更多相关文章
- [2012-05-31]awk去重复项
参考http://bbs.chinaunix.net/thread-2309494-1-1.html 10.awk '! a[$0]++' 怎么理解? 这是一个非常经典的去重复项的awk语句,虽然短小 ...
- 用泛型的IEqualityComparer<T>接口去重复项
提供者:porschev 题目:下列数据放在一个List中,当ID和Name都相同时,去掉重复数据 ID Name 1 张三 1 李三 1 小伟 1 李三 2 李四 2 李武 ----- ...
- Excel删除重复数据及用公式筛选重复项并标记颜色突出显示
当表格记录比较多时,常常会有重复数据,而重复记录往往只希望保存一条,因此需要把多余的删除:在 Excel 中,删除重复数据有两种方法,一种是用"删除重复数据"删除,另一种是用&qu ...
- js数组和字符串去重复几种方法
js数组去重复几种方法 第一种:也是最笨的吧. Array.prototype.unique1 = function () { var r = new Array(); label:for(var i ...
- ASP.Net【如何合并DataTable,并且去重复方法】
虽然DataTable.Merge可以很好的实现,但以下代码写出来更好理解 DataTable DataTable1 = new DataTable(); DataTable DataTable2 = ...
- Python统计列表中的重复项出现的次数的方法
本文实例展示了Python统计列表中的重复项出现的次数的方法,是一个很实用的功能,适合Python初学者学习借鉴.具体方法如下:对一个列表,比如[1,2,2,2,2,3,3,3,4,4,4,4],现在 ...
- js 数组去重复的方法
数组去重复是js中常用的方法,归纳了四种如下: 1. for + indexOf 去重复 var arr = [3,5,5,4,1,1,2,3,7,2,5]; var target = []; fo ...
- 漫谈数组去重复方法(亮点是ES6的新API)
方法1: 利用遍历的思想来进行. <!DOCTYPE html><html lang="en"><head> <meta charset= ...
- Js数据去重复,时间更换格式,cookie,localStorage和sessionStorage的使用等通用方法
一,数组去重复 function unique(arr) { // 遍历arr,把元素分别放入tmp数组(不存在才放) var tmp = new Array(); for (var i in arr ...
随机推荐
- Xcode 安装ClangFormat 插件
sudo gem install -n /usr/local/bin update_xcode_plugins 安装ClangFormat git clone https://github.com/t ...
- Markdown 语法手册 - 完整版(上)
https://blog.csdn.net/witnessai1/article/details/52551362 1. 斜体和粗体 代码: *斜体*或_斜体_ **粗体** ***加粗斜体*** ~ ...
- Android性能优化-内存优化
原文链接 Manage Your App’s Memory 前言 在任何软件开发环境中,RAM都是比较珍贵的资源.在移动操作系统上更是这样,因为它们的物理内存通常受限.尽管在ART和Dalvik虚拟机 ...
- 【概念原理】四种SQL事务隔离级别和事务ACID特性
摘要: SQL事务隔离级别和事务的ACID特性 事务是一组读写操作,并且具有只有所有操作都成功才算成功的特性. 事务隔离级别 SQL事务隔离级别由弱到强分别是:READ_UNCOMMITTED.R ...
- 配置yum软件仓库(redhat 7.0)
第一步:切换到yum配置文件目录 执行:cd /etc/yum.repos.d/ 第二步:创建文件并进行编辑:vi rhel7.repo 写入如下内容:[rhel7] name=rhel7 ##名字随 ...
- 二值化函数cvThreshold()参数CV_THRESH_OTSU的疑惑【转】
查看OpenCV文档cvThreshold(),在二值化函数cvThreshold(const CvArr* src, CvArr* dst, double threshold, double max ...
- 【C语言】数组名传递给函数,数组的sizeof变为4的原因
C语言中,数组名作为参数传递给函数时,退化为指针,sizeof对指针操作结果应该是4.例子如下: #include<iostream> using namespace std; void ...
- List 比较大小
List<Player> lst = new List<Player>(); lst.Add()); lst.Add()); lst.Add()); lst.Add()); l ...
- vue使用node的入门
1.安装cnpm npm install -g cnpm --registry=https://registry.npm.taobao.org 验证是否安装 cnpm -v 2.安装vue cnpm ...
- [转]在Windows上安装RabbitMQ
原文链接 翻译:xiezc 下载服务器 描述 下载 Windows系统安装程序(来自Bintray) 的RabbitMQ的服务器-3.7.4.exe (签名) Windows系统安装程序(来 ...