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

场景说明

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




sql server如何让一列有值但是又不显示 sql显示列唯一值_多列


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

代码区

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

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

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


sql server如何让一列有值但是又不显示 sql显示列唯一值_sql 筛选唯一值_02


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

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


sql server如何让一列有值但是又不显示 sql显示列唯一值_数据_03


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

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

代码解析

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

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


sql server如何让一列有值但是又不显示 sql显示列唯一值_数组_04


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

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

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


sql server如何让一列有值但是又不显示 sql显示列唯一值_数组_05


1 2 3

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

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

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