实时将来自多个工作表的数据合并到汇总工作表中

我有多个数据工作表中的数据要结合到摘要工作表。 当用户更新任何数据工作表中的数据时,它将自动将信息复制到摘要工作表。

例如

(input)数据工作表1

| A | B | C | Cat Red Male Dog Green Female 

(input)数据工作表2

  | A | B | C | Monkey Brown Male Ant Blue Male Bird White Female 

(输出)汇总工作表

  | A | B | C | Cat Red Male Dog Green Female Monkey Brown Male Ant Blue Male Bird White Female 

现在我的代码运行好了一个数据工作表。 但是,当我尝试切换到另一个数据工作表时,摘要工作表上的数据将不会更正。 当我删除所有信息或更改代码(我需要重新打开它)时,它也有一些错误。

这是我的代码

的ThisWorkbook

 Public Sub Workbook_Open() Set WB = ThisWorkbook Set ActWS = WB.ActiveSheet Set MainWS = WB.Worksheets("Main") ActWSPreLastRow = ActWS.Cells(ActWS.Rows.Count, "A").End(xlUp).Row MainWSPreLastRow = MainWS.Cells(MainWS.Rows.Count, "A").End(xlUp).Row End Sub 

 Public WB As Workbook Public ActWS As Worksheet Public MainWS As Worksheet Public ActWSPreLastRow As Long Public ActWSStoredLastRow As Long Public MainWSPreLastRow As Long Public MainWSStoredLastRow As Long Public MainWSEndLastRow As Long Public I As Long Public Sub DoCopy() Set WB = ThisWorkbook Set ActWS = WB.ActiveSheet Set MainWS = WB.Worksheets("Main") ActWSPreLastRow = ActWS.Cells(ActWS.Rows.Count, "A").End(xlUp).Row MainWSPreLastRow = MainWS.Cells(MainWS.Rows.Count, "A").End(xlUp).Row I = MainWSStoredLastRow + (ActWSPreLastRow - ActWSStoredLastRow) MainWS.Range("A" & MainWSStoredLastRow + 1, "AQ" & I).Value = _ ActWS.Range("A" & ActWSStoredLastRow + 1, "AQ" & ActWSPreLastRow).Value MainWSPreLastRow = MainWS.Cells(MainWS.Rows.Count, "A").End(xlUp).Row End Sub Public Sub StoreOld() ActWSStoredLastRow = ActWSPreLastRow MainWSStoredLastRow = MainWSPreLastRow End Sub 

其他工作表

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Me.Range("A5:AQ1000")) Is Nothing Then Call StoreOld Call DoCopy End If End Sub 

微软查询救援:

 SELECT A,B,C FROM [Sheet1$] UNION ALL SELECT A,B,C FROM [Sheet2$] 

Data->From Other Sources->Microsoft Query或随意使用我的加载项 。

然后只需刷新查询(通过1行VBA或右键单击表并单击刷新)。

细节

假设Sheet1Sheet2的结构是:

(input)数据工作表1(带行号)

  1 | A | B | C | 2 Cat Red Male 3 Dog Green Female 

(input)数据工作表2(带行号)

  1 | A | B | C | 2 Monkey Brown Male 3 Ant Blue Male 4 Bird White Female 

然后:

  1. 创build一个新的工作表(Sheet3)

  2. 用上面的SQL创build查询。

如果要添加条件,请将WHERE子句添加到一个或两个SELECTs