三个表格,如何一秒查重?

小组里有人问标题,确认后 , 答复是“有多个表格,只有一个表格里有一个张三 。”这个通过“删除重复项”,或函数“countif”等 , 也能较快实现的,但要“一秒”,那只能通过程序了 。这里用vba
那我的思路就是,先把所有数据都汇集到一起,然后用循环(本人也是小白,所以花了一天网上查阅和学习,很多说用字典的,还不会),把每个数据都两两比对一遍 。其中需要注意以下几点:
1.去空格,主要针对姓名,输入的时候,特别单名 , 既有可能输成“张三” , 也有可能输成“张 三”;
2.本身是空格的 , 还有数据自身就不要比较了
3.有重复的要标记起来,这里用红底色 。
现在创建示例,一个文件夹下面,设了三个文件(工作簿) , 表1、表2、表3
表1:
张三




李四




王五


表2:
张三三




赵六




孙七




钱多多




孙猴子










小傻瓜




张 三


表3:
张 三




周八




吴九














































李四


同时新建一个“一键查重”的工作簿,并输入代码
代码如下:
Sub 汇集数据()Dim path As StringDim file As StringDim i As IntegerDim m As IntegerDim n As IntegerDim c As RangeDim d As Rangei = 1path = ThisWorkbook.pathChDir (path)file = Dir("")Do While file <> ""If file <> "一秒查重.xlsm" ThenWorkbooks.Open (path & "" & file)Columns(1).SelectSelection.CopyWorkbooks(path & "" & "一秒查重.xlsm").ActivateColumns(i).SelectActiveSheet.Pastei = i1End Iffile = DirLoopWorksheets(1).UsedRange.SelectSelection.CopySelection.Replace What:=" ", Replacement:=""Worksheets(1).UsedRange.SelectSelection.Interior.ColorIndex = iFor Each c In SelectionFor m = 1 To Selection.Columns.CountFor n = 1 To Selection.Rows.CountIf c <> "" ThenIf c.Row <> m Or c.Column <> n ThenIf c.Value = https://www.itzhengshu.com/wps/Cells(m, n).Value Thenc.Interior.ColorIndex = 3Cells(m, n).Interior.ColorIndex = 3End IfEnd IfEnd IfNextNextNext cEnd Sub
大体分成四个区域,实现三部分功能,一是变量定义区,二是数据汇集区,三是空格去除区 , 四是循环查重区 。
最终效果如下
张三
张三三
张三
李四
赵六
周八
王五
孙七
吴九


钱多多




孙猴子










小傻瓜




张三


















李四
【三个表格,如何一秒查重?】原始表式不一样,或者重复标识要求不一样,代码不一定完全适用 。

相关经验推荐