Excel开个挂,数据整理效率暴增!

你知道吗?Excel 表格的数据也是需要整理的。
对于一些不规范的数据,如果不加以整理,根本没有办法进行计算分析。
而 Excel 中最难的一部分,应该就是和各种杂七杂八的数据奋勇斗争了。
这不,有位妹纸抛出了一个难题:
从系统导出的表格中有 ID 1 和 ID 2 两列数据,两列数据中都包含了一个个的 ID,各个 ID 之间用逗号分隔开来。
现在我需要从两列 ID 中挑出重复出现的 ID,要怎么做呢?

为了让你看得更清楚,这还是经过加工的数据。
原始数据中,每个 ID 都很长,而且有上万行。如果肉眼比对,手工输入,一个星期都搞不完。怎么办?
要解决这个问题,有 3 种不同的思路:
思路一:
先对两列数据执行分列,按照逗号拆分到两个表格中,再用数组公式去解决。这会非常复杂,而且运算量太大表格可能会很卡。
思路二:
分列到不同的表格中,再用公式添加行号作为分类标签。再用公式合并到一张表格中,用透视表的差异分析法。这样中间步骤太多,很难解释清楚。
思路三:
直接用 VBA 写几行代码自定义一个函数,让妹纸复制粘贴到自己的 Excel 表中,然后用一个函数批量搞定。
是的,今天就是分享一个 VBA 自定义函数的用法。
即使你没有编程基础也别担心,只要学会复制粘贴,用别人写好的成熟代码,也能解决很多问题,达到事半功倍的目的。

把代码粘贴到模块
打开 Excel 表格后,同时按下【ALT+F11】键,可以打开代码编辑窗口。插入一个模块:

然后将下面灰色区域的代码完整的复制粘贴到模块窗口中(没有计算机编程基础可以忽略具体含义),保存:
Function 提取重复(rg1 As Range, rg2 As Range) '提取两个长串数据中重复的值
Dim arr1, arr2
arr1 = Split(rg1, ",") '将长串数据 1,按逗号拆分成一组数据
arr2 = Split(rg2, ",") '将长串数据 2,按逗号拆分成一组数据
a = ""
For h = 0 To UBound(arr1) '逐个比对两组数
For i = 0 To UBound(arr2)
If arr1(h) = arr2(i) Then
a = a & arr2(i) & ","
End If
Next
Next
Dim arr, d As Object '剔除结果中的重复值
Set d = CreateObject("scripting.dictionary")
arr = Split(Mid(a, 1, Len(a) - 1), ",")
For i = 0 To UBound(arr)
d(arr(i)) = ""
Next i
提取重复 = Join(d.keys, ",")
End Function

输入函数公式
上面的代码实际上是设计了一个自定义函数,它的语法结构非常简单:
=提取重复(数据 1,数据 2)
(功能是将数据 1 和数据 2 分别按逗号拆分,并互相比对,提取出重复出现在两个数据中的 ID,如果多次出现,剔除重复只保留其中一个)
怎么用?超级简单,就跟你使用普通的函数公式一样:

通过这个自定义的函数,几秒钟的时间,就能够把大批量的数据整理好。那效率就跟开挂了一样。

保存数据
需要特别留意的时,如果要保留这个自定义函数及计算结果,需要将工作簿另保存成特殊的文件类型:Excel 启用宏的工作簿,扩展名是 .xlsm。

如此一来,代码就会跟随 Excel 文件,去到其他电脑也能继续使用。
好啦。本文实际上只教你三板斧:
❶ 复制粘贴代码
❷ 输入自定义函数
❸ 保存带宏代码的工作簿
设计自定义函数,仅仅是 VBA 应用的冰山一角而已。
如果你的工作中有大规模的重复操作,需要反复执行,你又有一点点计算机基础,可以考虑学点 VBA,享受享受点一点就完成别人半个月工作量的惬意。
但即使不会 VBA,掌握常用的操作也可以大大提升工作的效率。
我们的《3 天 Excel 集训体验营》,课程内容完全聚焦于普通表哥表妹的日常工作痛点,高效解决各种数据表格问题。
还有各种让你大呼过瘾的骚气小技巧,让你像打怪升级一样,学 Excel 学到根本停不下来!!!
《秋叶 Excel 3 天集训营》
想提升,趁现在!
助你不再被加班支配,不再为表格发愁!
现在报名
还免费赠送【35 个常用函数说明】!
赶紧扫码预约吧!👇👇👇

▲ 报名成功后,自动弹出班主任二维码
记得添加,不要提前退出哦~
*广告