前景提要(文末提供源码下载)
昨天我们学习了针对单列的数据进行获取唯一值的方法,今天我们提升下难度,来尝试下获取已多列为参照物,获取唯一值的方法,昨天有很多小伙伴说还可以用字典的方法更加的简单,其实,针对这个问题,我还是那句话,方法无绝对,多学点终究是好的,针对获取唯一值的方法,我后续几天会展开至少3种方法,大家可以选择自己喜欢的方法来玩。
场景说明
很明显今天的问题,我们无法用常规的去重的方式来实现了,因为去重的方式只能针对某一列的上下文进行操作的,现在我们的操作对象并不仅仅是一列,而是两列,甚至可能是不相邻的两列,也可能是三列。
这就是我们今天构造的模拟数据源,我们来看看今天的效果要如何实现
代码区
多列取唯一值,在我们日常的工作中确实是比较常见的操作,但是牵涉到多列的数据,是不是操作起来非常的困难呢?,其实并不会很难,我们来看看今天的代码
Sub test()Dim l&l = Cells(Rows.Count, 1).End(xlUp).RowWith Range(Cells(1, 1), Cells(l, 3)) .RemoveDuplicates Columns:=Array(1, 2), Header:=xlYesEnd WithEnd Sub
是不是很简单,和上节的代码有很多地方都是非常的相似的,但是又有一些地方不相同
其实我们使用的方式还是我们上节学习过的RemoveDuplicates的方法
先来看看最终的结果是怎么样的
如果我们希望的是不连续的两行是否能够实现呢?
来实现下,我们现在希望在A-C两列之间进行取唯一值的操作
Sub test1()Dim l&l = Cells(Rows.Count, 1).End(xlUp).RowWith Range(Cells(1, 1), Cells(l, 5)) .RemoveDuplicates Columns:=Array(1, 3), Header:=xlYesEnd WithEnd Sub
代码是稍微有一些点修改的,我们一会来讲述下。
从上面的两个动图,我们可以看出来,上面的代码完全满足了我们的需求,那么今天我们来继续深入学习下RemoveDuplicates方法
代码解析
前面我们也说了,今天的功能的关键代码还是RemoveDuplicates方法的运用,上节我们学习了RemoveDuplicates在单列取唯一值的时候的运用,在今天的多列的取唯一值的需求中,依然能够用到RemoveDuplicates
其实我们昨天留下了一个小的伏笔,
那么针对多列的时候,这里要如何写呢?其实你如果仔细的观察代码的话,就会发现了。
.RemoveDuplicates Columns:=Array(1, 3), Header:=xlYes
将1换成了一个类似数组的方式,array()代表的就是数组,想要获取多列的唯一值就是用这样的结构,那么如何表现是第几列呢?
来比较下两个代码的不同
.RemoveDuplicates Columns:=Array(1, 3), Header:=xlYes.RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes
很明显发现了,array()括号内的内容是不相同的,(1,3)代表的就是第一列和第三列合在一起取唯一值,而(1,2)代表的就是第二列和第一列合在一起取唯一值,
这里的第一列第二列都是数据源整体,和单元格具体的位置无关,并且并不受其他列的数据的影响。
1 2 3
这里只有两列,那么如果有多列呢?三列甚至更多列呢?好吧,容我再卖个关子
================================
本节课的案例源码已经上传,需要的小伙伴请按照如下步骤操作,一个不能少哦~~
1.加个粉(已关注的略过这一步)
2.转发下本文章(算是对我的小小支持吧~)
3.后台私信“8-2”
希望大家多支持~~,多多关注 ~ ~
好了,明晚19:00,准时再见!