分享

【技巧&VBA】重复值不再怕!单列多列轻松提取唯一值!

 L罗乐 2018-03-19

从一堆重复数据里提取唯一值用来进行后续的统计,是很多朋友在工作中经常遇到的问题。

【单列情况】

以下面的北京市大学名单为例(数据来自教育部2015年5月21日正式发布的全国高等学校名单,北京地区)

比如希望按照所属部门进行统计,但所属部门究竟有哪些呢?如何快速从C列中提取到不重复项呢?

对单列关键数据的情况,有两种很好用的方法:

1
方法一:删除

【数据】-> 【数据工具】-> 【删除重复项】

这种方法比较粗暴,真的删除了多条整行数据,要慎重使用。


2
方法二:筛选

【数据】-> 【筛选】 -> 【高级】,勾选“选择不重复的记录”

与方法一不同的是,方法二的操作只是筛选,并没有删除数据,所以小梁更推荐使用筛选。筛选功能提供了两种方式:

方式一:在原有区域显示筛选结果

筛选的结果可以直接ctrl c/v复制粘贴到别处使用(隐藏的数据不会拷贝的);

点击上面的【清除,即可取消筛选。


方式二:将筛选结果复制到其他位置

连手动拷贝的步骤都省了,直接复制筛选结果到指定的位置,Excel真是太给力啦。


【多列情况】

如果拿到下面这样一份名单(模拟人员安排等类似情况),该如何统计都有哪些老师参与活动了呢?


要在三列数据中的进行筛选,仅使用菜单是很难自动完成的。

用VBA的话,有很多种方式可以实现这一功能。但既然咱们已经对菜单里的【删除】和【筛选】很熟悉了,那下面小梁就介绍一款直接翻译这两个功能的代码组合吧:)

Sub myFilter()


    Dim nextRow As Integer

   

    '清空F列数据

    range('F:F').ClearContents

   

    '【方法二】筛选第1列,并复制到F列

    Columns('A').AdvancedFilter Action:=xlFilterCopy, CopyToRange:=range('F1'), Unique:=True

   

    '【方法二】筛选第2列,并复制到F列数据下面

    nextRow = Cells(1000, 'F').End(xlUp).Row 1

    Columns('B').AdvancedFilter Action:=xlFilterCopy, CopyToRange:=range('F' & nextRow), Unique:=True

   

    '【方法二】筛选第3列,并复制到F列数据下面

    nextRow = Cells(1000, 'F').End(xlUp).Row 1

    Columns('C').AdvancedFilter Action:=xlFilterCopy, CopyToRange:=range('F' & nextRow), Unique:=True


    '【方法一】删除F列重复值

    range('F:F').RemoveDuplicates Columns:=1, Header:=xlNo


End Sub

怎么样,这段代码是不是很容易读:)

运行一下看看效果吧:

恩,可以看到筛选和删除的过程呢,呵呵~~

只要稍加改造代码,就可以一键完成多列数据的去重问题啦:)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多