Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将不同图纸中的列复制到VBA中具有1个固定列的主图纸中_Vba_Excel - Fatal编程技术网

将不同图纸中的列复制到VBA中具有1个固定列的主图纸中

将不同图纸中的列复制到VBA中具有1个固定列的主图纸中,vba,excel,Vba,Excel,我试图对所有合作伙伴的报价进行比较。我制作了一个工作簿,其中所有合作伙伴的报价都添加在不同的表格中。此处,第1列与所有供应商相同,即:。产品详细信息。报价对比表,即:。主表应显示所有合作伙伴的报价 工作簿所有工作表(主工作表和其他工作表)中的A列值相同。母版工作表中的“B,C…n”列为空,而所有其他工作表的B列中都有一些值。我需要一个宏来复制工作表1中的值。B列并将其粘贴到母版工作表的B列中(特殊粘贴)。同样,工作表2中的值。B列将粘贴到母版工作表的C列中,并且应重复用于工作簿中的所有其他工作表

我试图对所有合作伙伴的报价进行比较。我制作了一个工作簿,其中所有合作伙伴的报价都添加在不同的表格中。此处,第1列与所有供应商相同,即:。产品详细信息。报价对比表,即:。主表应显示所有合作伙伴的报价

工作簿所有工作表(主工作表和其他工作表)中的A列值相同。母版工作表中的“B,C…n”列为空,而所有其他工作表的B列中都有一些值。我需要一个宏来复制工作表1中的值。B列并将其粘贴到母版工作表的B列中(特殊粘贴)。同样,工作表2中的值。B列将粘贴到母版工作表的C列中,并且应重复用于工作簿中的所有其他工作表(第3、4、n页)插入主列(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
子摘要()
将ws设置为工作表
Application.ScreenUpdating=False
对于ActiveWorkbook.Worksheets中的每个ws
如果ws.Name为“Master”,那么
ws.范围(“C2:C10”)。副本
图纸(“主”)。单元格(行数,3)。结束(xlUp)。偏移量(1)。粘贴特殊xlPasteValues
如果结束
下一个
Application.ScreenUpdating=True
端接头
但是,此处的输出将一个粘贴到同一列中的另一个下,而不是粘贴到下一个相邻列中

在相应的相邻列中需要

希望我能清楚地解释要求。请让我知道如何在母版页的相邻栏中获得“n”页的B栏


如果不使用上述代码也可以完成,也可以。

这就是我们的
间接功能。假设sheet2包含以下内容:

同样,表3有
4,5,6
,表4有
7,8,9
,我们可以得到所有这些值,如下所示:

…使用
间接
公式。将其放置在B2中并向下/横向拖动

=INDIRECT(B$1&"!" & ADDRESS($A2,1))
试玩一下,如果您的设置无法使其正常工作,请告诉我。请尝试以下代码:

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
子摘要()
将ws设置为工作表
淡而无味
Application.ScreenUpdating=False
对于此工作簿中的每个ws。工作表
如果ws.Name为“Master”,那么

ws.Range(“B2:B”和ws.Cells(ws.Rows.Count,“B”).End(xlUp.Row)。Copy“我需要对数据进行动态比较,因为合作伙伴工作表的数量会一直更改。因此正在寻找基于宏的解决方案。我也注意到了此解决方案。谢谢!