Excel VBA 8.3 2列以上的数据同时去重!你会操作吗?Excel没有现成的方法哦
之前我们介绍了如何通过RemoveDuplicates的方法来实现快速去重并提取唯一值的,RemoveDuplicates方法不仅仅能够实现针对某一列的去重,同时还可以实现2列的数据去重,但是有时候可能我们并不仅仅是针对1列,2列这么简单,我们需要针对多列同时进行去重并提取唯一值,多列?用字段循环那吗?好像是可以,但是应该不是最简的方法,今天我们来在学习一个新方法
场景说明
这是我们今天模拟的这个工作表,我们需要在这三列中提取唯一值并组成新的工作表,如果说手工操作的话,应该是每列不断的筛选才能够实现的,数据操作的过程中也会存在不少的问题,比方说数据操作了筛选,你不知道复制的结果应该如何安放了。
代码区
好了,说了那么多的废话,我们请出今天的主角吧
AdvancedFilter
Sub test()
ActiveSheet.UsedRange.AdvancedFilter _
Action:=xlFilterCopy, Unique:=True, _
CopyToRange:=ActiveSheet.Range("H1")
End Sub
excuse me!这么短!是的,你没错,虽然代码很短,但是功能和学问还是很大的,来看看效果
不管你有几行,这个代码都可以轻松的实现
代码解析
其实今天的代码很简单,我们只需要了解AdvancedFilter这个方法的实用就好了。我们先来看看官方给出来的这个方法的用法
AdvancedFilter( Action , CriteriaRange , CopyToRange , Unique )
这里我们对照着用法就可以理解了,首先第一个action,代表了你的操作是要在原数据的基础上修改,还是在不破坏原数据的基础上,在其他地方展示
Action:=xlFilterCopy
而在我们的代码中,我们是选择了copy方法,类似于之前学习的RemoveDuplicates方法,不过RemoveDuplicates本身就会破坏原始数据,我们只能讲原始数据复制之后再进行操作,而这里AdvancedFilter就更加人人性化了,可以给我们选择的方法
既然我们是复制数据的,那么肯定要有一个复制的区域,这就是CopyToRange 方法的运用了,从单纯的字面意思上来说,都能够知道,它是需要我们提供粘贴的单元格区域。
留意截图圈中的地方,这里都是重点,只有是action=xlFilterCopy的时候,我们才需要使用CopyToRange,否则是在元数据修改,并不需要任何的数据支撑。
本节课的案例源码已经上传,需要的小伙伴后台私信“8-3-F9”,希望大家多支持~~,多多关注 ~ ~
好了,明晚21:00,准时再见!
因为公众号没有留言功能(开的比较晚),所以建立一个线下微信群,主要为大家提供一个交流的平台,同时大家也可以提一些对公众号的意见和看法,大家一起学习,一起进步。