搜索
写经验 领红包

三个表格怎么查重(如何在三个表格里找出相同)

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

三个表格怎么查重(如何在三个表格里找出相同)

小组里有人问标题,确认后,答复是“有多个表格,只有一个表格里有一个张三。”这个通过“删除重复项”,或函数“countif”等,也能较快实现的,但要“一秒”,那只能通过程序了。这里用vba

那我的思路就是,先把所有数据都汇集到一起,然后用循环(本人也是小白,所以花了一天网上查阅和学习,很多说用字典的,还不会),把每个数据都两两比对一遍。其中需要注意以下几点:

1.去空格,主要针对姓名,输入的时候,特别单名,既有可能输成“张三”,也有可能输成“张 三”;

2.本身是空格的,还有数据自身就不要比较了

3.有重复的要标记起来,这里用红底色。

现在创建示例,一个文件夹下面,设了三个文件(工作簿),表1、表2、表3

表1:

张三

李四

王五

表2:

张三三

赵六

孙七

钱多多

孙猴子

小傻瓜

张 三

表3:

张 三

周八

吴九

李四

同时新建一个“一键查重”的工作簿,并输入代码

代码如下:

Sub 汇集数据()    Dim path As String    Dim file As String    Dim i As Integer    Dim m As Integer    Dim n As Integer    Dim c As Range    Dim d As Range    i = 1    path = ThisWorkbook.path    ChDir (path)    file = Dir(&34;)    Do While file <> &34;        If file <> &34; Then            Workbooks.Open (path & &34; & file)            Columns(1).Select            Selection.Copy            Workbooks(path & &34; & &34;).Activate            Columns(i).Select            ActiveSheet.Paste            i = i + 1        End If        file = Dir    Loop        Worksheets(1).UsedRange.Select    Selection.Copy    Selection.Replace What:=&34;, Replacement:=&34;    Worksheets(1).UsedRange.Select    Selection.Interior.ColorIndex = i    For Each c In Selection        For m = 1 To Selection.Columns.Count            For n = 1 To Selection.Rows.Count                If c <> &34; Then                    If c.Row <> m Or c.Column <> n Then                        If c.Value = Cells(m, n).Value Then                                c.Interior.ColorIndex = 3                                Cells(m, n).Interior.ColorIndex = 3                        End If                    End If                End If            Next        Next    Next cEnd Sub

大体分成四个区域,实现三部分功能,一是变量定义区,二是数据汇集区,三是空格去除区,四是循环查重区。

最终效果如下

张三

张三三

张三

李四

赵六

周八

王五

孙七

吴九

钱多多

孙猴子

小傻瓜

张三

李四

原始表式不一样,或者重复标识要求不一样,代码不一定完全适用。

本文内容由小娴整理编辑!