0

我对如何将多个 Excel 工作表中的数据更新到主工作表中的一列有疑问。每当我们输入新行时,我希望它在主表中自动更新。该值是 id 因此它在多个工作表中是唯一的。例如:

Excel表1:

ID
---
1
2
3
4
5

Excel表2:

ID
---
12
23
34
41
53

Excel表3:

ID
---
123
215
324
445
562

主 Excel 表:

ID
---
1
2
3
4
5
12
23
34
41
53
123
215
324
445
562

每当我输入新值(如 6(对于工作表 1))时,它将更新为主工作表。

我可以这样做吗?我们需要使用宏吗?谢谢。

使用 SheetChange() 更新代码


      With DataEntrySheet
         
         '** Set variables for using the Find method in a loop
        Set loopRng = DataEntrySheet.Columns(1)
        Set lookRng = MasterSheet.Columns(2)
         
         '** Set the range which will be used to write data if found
        Set OldLastCell = DoNotEditSheet.Range( _
        "C65536").End(xlUp).Offset(1)
         
         '** Start the Find loop
        For Each iCel In loopRng
             
             '** Using the Find method to find the cell value.
            Set foundRng = lookRng.Find(iCel.Value, lookRng.Cells(1), _
            xlValues, xlWhole, MatchCase:=True)
             
             '** Test if the variable 'foundRng' is Nothing.  If the value
             '   was not found, the variable will be Nothing, or else it
             '   will be the Range Object of that (first) found value.
            If foundRng Is Nothing Then
                 
                 '** Use the two ranges to transfer data (faster than Copy/Paste).
                OldLastCell.Value = iCel.Value
                OldLastCell.Offset(, -1).Value = iCel.Offset(, -1).Value
                OldLastCell.Offset(, 2).Value = iCel.Offset(, 1).Value
                OldLastCell.Offset(, 5).Value = iCel.Offset(, 2).Value
                OldLastCell.Offset(, 10).Value = iCel.Offset(, 3).Value
                 
                 '** Reset the variable to be one row below where we wrote the
                 '   data to.  This will keep the data organized by rows.
                Set OldLastCell = OldLastCell.Offset(1)
                 
            End If
             
             '** This MUST be set to Nothing before the next iteration.  If not,
             '   and a match is not found (following a good find) then you may
             '   have mismatched iterations with false results.
            Set foundRng = Nothing
        Next iCel
    End With
End Sub
4

1 回答 1

0

您可以使用该SheetChange()事件来更新主工作表,但这可能会大大减慢数据输入的速度。

SheetChange每次有人输入数据并移动到另一个单元格时,该事件都会运行您的代码。理想情况下,您只想在数据集中的每一列都完成时检查新数据。

我建议使用一个按钮,当新行输入完成并准备好输入主表时,您可以按下该按钮。网络上有许多代码示例,它们会将不匹配的行添加到新工作表中。

于 2012-07-26T20:34:15.037 回答