Excel2013:[59]匹配不同工作表记录

2025-10-20 11:35:46

如何匹配不同工作表中的记录?假如有多个工作表,第一个工作表作为基本表,用于和其他几个表匹配记录,假如一条记录同时出现在了基本表和其他表中,我们就在基本表中标识出来。怎么实现这个过程?

Excel2013:[59]匹配不同工作表记录

    首先将Excel文件存为可以执行vba的格式,xlsm格式

    Excel2013:[59]匹配不同工作表记录

    我们利用SN号作为一条记录是否重复的指标,假如两条记录SN号相同,则认为两条记录匹配

    Excel2013:[59]匹配不同工作表记录

    打开开发工具下的visual basic,或者可以按下快捷键alt+F11

    Excel2013:[59]匹配不同工作表记录

    打开vb界面,我们双击 thisworkbook,大概一个代码界面

    Excel2013:[59]匹配不同工作表记录

    复制以下代码到代码界面

    Excel2013:[59]匹配不同工作表记录

    将鼠标光标移动到代码的任意位置,按下快捷键F5即可执行代码,执行结果可见:在第一个工作表的最后一列标志出了某条记录出现在哪一个工作表中,如果所有工作表都没有匹配,则输出无匹配。

    Excel2013:[59]匹配不同工作表记录

    注意基本工作表总是位于最前面。也是Excel认为的第一个工作表,代码总是用第一个表中的数据与其他表中的数据去匹配,匹配成功则输出工作表的名称。

    Excel2013:[59]匹配不同工作表记录

    本教程用到的代码:复制可用。

    Sub pipei()

        Set d = CreateObject("scripting.dictionary")

        For i = 2 To Worksheets.Count

            For j = 1 To Sheets(i).Cells(1, 300).End(xlToLeft).Column

                If Sheets(i).Cells(1, j).Text = "SN号" Then

                    For r = 2 To Sheets(i).Cells(65536, j).End(xlUp).Row

                        If Not (Sheets(i).Cells(r, j).Value = 0 Or Sheets(i).Cells(r, j).Text = "") Then

                            d.Add Sheets(i).Cells(r, j).Text, Sheets(i).Name

                        End If

                    Next r

                End If

            Next j

        Next i

        Sheets(1).Activate

        max_col = Cells(1, 300).End(xlToLeft).Column

        For c = 1 To max_col

            If Cells(1, c).Text = "SN号" Then

                For r = 2 To Cells(65536, c).End(xlUp).Row

                    If d.exists(Cells(r, c).Text) Then

                        Cells(r, max_col + 1) = d.Item(Cells(r, c).Text)

                    Else

                        Cells(r, max_col + 1) = "无匹配"

                    End If

                Next r

            End If

        Next c

        MsgBox "ok"

    End Sub

(共篇)上一篇:文本日期如何改变...
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢