微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VBA excel比较表

如何解决VBA excel比较表

我有 Table_1、Table_2、Table_3 和 Table_Together。从 Table_1、2 和 3 中,我将从 A10 到最后的列以及 C10 和 E10 到最后的列中获取数据。我的目标是将 Table_Together 中的所有表信息也放在第 10 行。

感谢支持

解决方法

不确定你想要什么,但试试这个

Option Explicit

Sub Makro1()

    Dim i As Integer,r As Long,n As Long
    Dim ws As Worksheet,ws1 As Worksheet,rng As Range
    Dim iLastRow As Long,iTargetRow As Long

    Dim dict As Object,key As String
    Set dict = CreateObject("Scripting.Dictionary")

    Set ws = Worksheets("Table_Together")

     'list of existing records
    iTargetRow = ws.Cells(Rows.Count,"C").End(xlUp).Row
    For r = 10 To iTargetRow
        key = Trim(ws.Cells(r,"C"))
        If Len(key) > 0 Then
            dict(key) = r
        End If
    Next
    If iTargetRow < 9 Then iTargetRow = 9

    For i = 1 To 3
       Set ws1 = Worksheets("Table_" & i)
       iLastRow = ws1.Cells(Rows.Count,"E").End(xlUp).Row

       For r = 10 To iLastRow
           key = Trim(ws1.Cells(r,"E"))
           ' check not existing then copy
           If Not dict.exists(key) Then
                iTargetRow = iTargetRow + 1
                ws1.Cells(r,"A").Copy ws.Cells(iTargetRow,"A")
                ws1.Cells(r,"C").Copy ws.Cells(iTargetRow,"B")
                ws1.Cells(r,"E").Copy ws.Cells(iTargetRow,"C")
                n = n + 1
           End If
       Next r
    Next i
   
    MsgBox n & " rows added to " & ws.Name,vbInformation

End Sub

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。