使用1个固定列将VBA中的不同工作表的列复制到主工作表中

我试图比较从所有合作伙伴收到的报价。 我制作了一本工作手册,其中所有合作伙伴的报价都join了不同的工作表。 在这里,所有供应商的第一列是相同的。 产品细节。 报价比较表即 主表应显示所有合作伙伴的报价。

例如。 工作簿的所有工作表(主工作表以及其他工作表)中的列A值是相同的。 母表中的列“B,C … n”是空白的,而其他所有的表都在列B中有一些值。我需要一个macros来从表1中复制值B列并粘贴(粘贴特殊)到主。 B列。类似地,来自图表2.列B的值将被粘贴到Master.Column C中,并且应该被重复用于工作簿(表格3,4 … n)中的所有其他表格到Master.Column(D, E..n)。

我试了下面的代码:

Sub Summary() Dim ws As Worksheet Application.ScreenUpdating = False For Each ws In ActiveWorkbook.Worksheets If ws.Name <> "Master" Then ws.Range("C2:C10").Copy Sheets("Master").Cells(Rows.Count, 3).End(xlUp).Offset(1).PasteSpecial xlPasteValues End If Next Application.ScreenUpdating = True End Sub 

但是,这里的输出会在同一列而不是在下一个相邻列中粘贴到另一个的下方。

输出图像 - 堆叠

它在相应的相邻列中是必需的。

希望我明确解释这个要求。 请让我知道如何让“n”表中的列B在主表中的相邻列中。

如果不使用上面的代码就可以完成,这也是好的。

试试下面的代码:

 Sub Summary() Dim ws As Worksheet Dim EmptyCol As Long Application.ScreenUpdating = False For Each ws In ThisWorkbook.Worksheets If ws.Name <> "Master" Then ws.Range("B2:B" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row).Copy '<-- copy all values in column B With Sheets("Master") EmptyCol = .Cells(1, .Columns.Count).End(xlToLeft).Column + 1 .Range(.Cells(1, EmptyCol), .Cells(1, EmptyCol)).PasteSpecial xlPasteValues End With End If Next Application.ScreenUpdating = True End Sub 

这就是我们的INDIRECTfunction。 说sheet2包含这个:

在这里输入图像说明

同样,Sheet3有4,5,6和Sheet4有7,8,9那么我们可以得到所有这些值:

在这里输入图像说明

用一个INDIRECT公式。 把它放在B2中,然后向下拖/拖

 =INDIRECT(B$1&"!" & ADDRESS($A2,1)) 

有一个游戏,让我知道如果你不能让你的设置工作