分享

Excel VBA 8.3 2列以上的数据同时去重!你会操作吗?Excel没有现成的方法哦

 Excel和VBA 2021-05-26

之前我们介绍了如何通过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,准时再见!

因为公众号没有留言功能(开的比较晚),所以建立一个线下微信群,主要为大家提供一个交流的平台,同时大家也可以提一些对公众号的意见和看法,大家一起学习,一起进步。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多