查找重复值、移除重复值,都是Excel中的经典问题,可以使用高级筛选功能,也可以使用复杂的公式,还可以使用VBA。
在VBA中,也有多种方式可以移除重复值,这里介绍RemoveDuplicates方法,一个简洁实用的方法。
示例数据如下图1所示,要求移除数据区域A1:D7中第3列(列C)中的重复值。
图1
实现的VBA代码如下:
代码语言:javascript复制Sub RemoveDuplicates()
Dim rngRange As Range
Dim lngLastRow As Long
lngLastRow = ActiveSheet.Range("A" &Rows.Count).End(xlUp).Row
Set rngRange = ActiveSheet.Range("A1:D" & lngLastRow)
rngRange.RemoveDuplicates Columns:=3, Header:=xlYes
End Sub
很简单!实际上,如果采用硬编码的话,一行代码即可完成:
代码语言:javascript复制ActiveSheet.Range("A1:D7").RemoveDuplicates Columns:=3, Header:=xlYes
RemoveDuplicates方法的参数
从上面的示例可以看出,RemoveDuplicates方法接受2个参数:Columns和Header。其中,参数Columns是必需的,指定想要移除重复值的列。注意,可以指定多列。如果想要指定多个列,使用Array函数:
Range("A1:E15").RemoveDuplicates Columns:=Array(3, 5), Header:=xlYes
此时,如果这两列中的值组合是重复的,则其所在行将会被移除。
参数Header可选,默认值是xlNo,即不包含标题行。也就是说,该参数告诉RemoveDuplicates方法数据区域是否包含标题行。可以使用3个值:xlYes,xlNo和xlGuess。
示例:获取每个超市中销售量最多的区域
下面的数据是各超市在不同区域的销售量,已经按照销售量进行了统一排名,现在要获取每个超市销售量最多的区域,也就是说对于列C中重复出现的超市名称,只需保留第1次出现的超市名称的数据。
图2
这种情形使用RemoveDuplicates方法是再合适不过了。只需要一行代码:
代码语言:javascript复制Range("A1:D15").RemoveDuplicates Columns:=3, Header:=xlYes
结果如下图3所示。
图3
欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。
欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。
学习记录:2022.2.13 17:40-18:30 《普林斯顿微积分读本(修订版)》第9章 指数函数和对数函数 9.1基础知识