Excel 找到匹配项后,将行从一张工作表复制到宏中找到匹配项的行

Excel 找到匹配项后,将行从一张工作表复制到宏中找到匹配项的行,excel,vba,Excel,Vba,我在MainDashboard上有一个由宏更新的表。它复制选定图纸中的数据并更新此主表。这是我的代码,但我被卡住了。我需要它: 循环浏览图纸列表中的每个图纸 循环遍历每张图纸上表格第一列中的每个值 检查这些ID是否在主仪表板表的第一列中 如果是,请复制该行上的所有内容,并将其粘贴到主仪表板表上找到该值的同一行上 如果否,则将其添加到行的底部 完成后,有一个MsgBox,上面写着,您已经修改了x个条目并添加了x个新条目 Sub Update() Dim SheetList As Vari

我在MainDashboard上有一个由宏更新的表。它复制选定图纸中的数据并更新此主表。这是我的代码,但我被卡住了。我需要它:

循环浏览图纸列表中的每个图纸

循环遍历每张图纸上表格第一列中的每个值

检查这些ID是否在主仪表板表的第一列中

如果是,请复制该行上的所有内容,并将其粘贴到主仪表板表上找到该值的同一行上

如果否,则将其添加到行的底部

完成后,有一个MsgBox,上面写着,您已经修改了x个条目并添加了x个新条目

Sub Update()

    Dim SheetList As Variant
    Dim x As Long
    Dim TaskListTable As Range
    Dim TaskList As ListObject
    Dim SortColumn As Range
    Dim TaskId As Integer
    Dim LastRow As Range
    Dim MDLastRow As Range
    
    'What I want the Excel program to do before I start
    With Application
        .ScreenUpdating = False
        .StatusBar = "Running..."
    End With
    
    'List Sheet Names into an Array Variable
    SheetList = Array(S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14)
    
    'Loop through list
    For x = LBound(SheetList) To UBound(SheetList)
        'Code will fail unless you activate the sheet first
        SheetList(x).Activate
        
        'Loop for b15 in column 1 down for every row to last row
        LastRow = Range("B" & Rows.Count).End(xlUp).Row
        MDLastRow = Range("B" & Rows.Count).End(xlUp).Row
        
        For Each TaskID In Range("B15": LastRow)
            If WorksheetFunction.Match(Range("B15:MDLastRow"),  Then
            SheetList(x).Range("TaskID").End(xlRight).Copy
            
            'PASTE TO ENTIRE ROW WHERE THE MATCH WAS FOUND
            End If
            
            'Else add row to the bottom
            SheetList(x).Range("TaskID").End(xlRight).Copy
            MainDashboard.Range("B" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteAll
    Next x
    
    MainDashboard.Activate
    
    'MsgBox
    'You have Modified X tasks
    'You have Added X tasks
    
    'Sort the table by the latest Date
    Set TaskList = MainDashboard.ListObjects("Task_List")
    Set SortColumn = Range("Task_List[DATE]")
    With TaskList.Sort
       .SortFields.Clear
       .SortFields.Add Key:=SortColumn, SortOn:=xlSortOnValues, Order:=xlAscending
       .Header = xlYes
       .Apply
    End With
    
    'What I want the Excel program to do after I have finished
   With Application
        .ScreenUpdating = True
        .StatusBar = "Complete"
        .CutCopyMode = False
    End With
    
End Sub

“提前感谢”

是我今天早些时候做的一个解决方案。不过这是一张工作表。它很容易测试。让我知道,如果这是你需要的,这样我就可以重写更多的工作表。在解决方案中,
Sheet1
是主要(目标)工作表。总是有助于解释您面临的具体问题。列出您希望发生的事情,并包含代码,而不解释代码的不足之处/原因,只会让我们做更多的工作…@vbasic208非常感谢!我想做什么就做什么。