Excel情报局
职场联盟Excel
生产挖掘分享Excel基础技能
Excel爱好者大本营
用1%的Excel基础搞定99%的职场问题
做一个超级实用的Excel公众号
Excel是门手艺玩转需要勇气
数万Excel爱好者聚集地
SUPER EXCEL MAN
1
职场实例
我们都了解,Excel中的“删除重复值”功能只能针对某列竖向的数据下的重复值。如下图所示,如果每行数据中存在重复值,该如何横向按行批量删除重复值呢,删除完成后,将唯一值规则的放在指定的区域中。
2
解题思路
小编查阅了大量的资料。这个问题还是有一定的难度的。如果这种问题在工作中真的遇到,且数据量很大的情况下,确实令人很棘手。
我们可以用VBA代码的方法轻松瞬间完成。这个代码是固定的模板,我们只需要复制粘贴即可使用。
右击工作表名称标签,点击“查看代码”,在弹出的VBA窗口中,复制粘贴代码,然后点击“运行”按钮,点击运行按钮下的“运行子过程/用户窗体”选项,最后点击关闭VBA窗口,当界面回到Excel主界面时,我们发现横向按行批量删除重复值的结果已经出来了。
小编计算了一下时间,用复制VBA代码的方法完成这个难题也不过5秒钟的事儿!
代码模板如下,复制粘贴即用:
Sub test() Dim arr, i, j, k, n arr = [a1:g3].Value ReDim brr(1 To UBound(arr, 1), 1 To UBound(arr, 2)) For i = 1 To UBound(arr, 1) n = 0 For j = 1 To UBound(arr, 2) For k = 1 To j - 1 If arr(i, j) = arr(i, k) Then Exit For Next If k = j Then n = n + 1: brr(i, n) = arr(i, j) End If Next Next [a5].Resize(UBound(brr, 1), UBound(brr, 2)) = brrEnd Sub
注意:
本段代码中[a1:g3]代表的意思是:数据源的区域范围,本例中数据源即需要去重复的数据在a1:g3区域。根据实际情况而更改。
本段代码中 [a5]代表最终完成的数据存放的起始位置,本例中存放在了A5单元格的起始位置。根据实际情况而更改。
回顾关键内容,善用图片表达,学会建立联系,拓展深度广度,浓缩关键概念,应用到行动中,善于归纳总结,尝试进行分享。
标签:arr,批量,重复,UBound,代码,Excel,VBA,按行 From: https://blog.51cto.com/u_15825298/5757958