sql 筛选唯一值_多列数据获取唯一值?你再肉眼筛选的时候,我已经下班了

前景提要(文末提供源码下载)

昨天我们学习了针对单列的数据进行获取唯一值的方法,今天我们提升下难度,来尝试下获取已多列为参照物,获取唯一值的方法,昨天有很多小伙伴说还可以用字典的方法更加的简单,其实,针对这个问题,我还是那句话,方法无绝对,多学点终究是好的,针对获取唯一值的方法,我后续几天会展开至少3种方法,大家可以选择自己喜欢的方法来玩。

场景说明

很明显今天的问题,我们无法用常规的去重的方式来实现了,因为去重的方式只能针对某一列的上下文进行操作的,现在我们的操作对象并不仅仅是一列,而是两列,甚至可能是不相邻的两列,也可能是三列。

7e249e76112556669058c1224d1ba375.png

这就是我们今天构造的模拟数据源,我们来看看今天的效果要如何实现

代码区

多列取唯一值,在我们日常的工作中确实是比较常见的操作,但是牵涉到多列的数据,是不是操作起来非常的困难呢?,其实并不会很难,我们来看看今天的代码

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的方法

先来看看最终的结果是怎么样的

4f3b654a1e7610e9846100552d76ebc2.gif

如果我们希望的是不连续的两行是否能够实现呢?

来实现下,我们现在希望在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
aee0789c7c401c83640e335f684f4a97.gif

代码是稍微有一些点修改的,我们一会来讲述下。

从上面的两个动图,我们可以看出来,上面的代码完全满足了我们的需求,那么今天我们来继续深入学习下RemoveDuplicates方法

代码解析

前面我们也说了,今天的功能的关键代码还是RemoveDuplicates方法的运用,上节我们学习了RemoveDuplicates在单列取唯一值的时候的运用,在今天的多列的取唯一值的需求中,依然能够用到RemoveDuplicates

其实我们昨天留下了一个小的伏笔,

d7e0f3a19c8a820db910704f2ddc0718.png

那么针对多列的时候,这里要如何写呢?其实你如果仔细的观察代码的话,就会发现了。

.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)代表的就是第二列和第一列合在一起取唯一值,

这里的第一列第二列都是数据源整体,和单元格具体的位置无关,并且并不受其他列的数据的影响。

a3bad1ef6a055363d0bbc03614db7419.png

1 2 3

这里只有两列,那么如果有多列呢?三列甚至更多列呢?好吧,容我再卖个关子

================================

本节课的案例源码已经上传,需要的小伙伴请按照如下步骤操作,一个不能少哦~~

1.加个粉(已关注的略过这一步)

2.转发下本文章(算是对我的小小支持吧~)

3.后台私信“8-2”

希望大家多支持~~,多多关注 ~ ~

好了,明晚19:00,准时再见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值