2017-02-28 66 views
2

我試圖比較從所有合作伙伴收到的提議。我製作了一本工作手冊,其中所有合作伙伴的報價都添加在不同的工作表中。在這裏,第一列對於所有供應商即相同。產品細節。報價比較表即主表應顯示所有合作伙伴的報價。將不同工作表中的列複製到帶有1個固定列的VBA中的主工作表

例如。工作簿中所有工作表(主工作表以及其他工作表)中的A列值是相同的。主表中的列「B,C ... n」是空的,而所有其他表中的某些值在列B中。我需要一個宏來複製表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 

然而,這裏的輸出在同一列中,而不是在下一相鄰列被粘貼一個在另一個之下。

Output image - stacked

,要求在相應的相鄰列。

希望我在解釋要求時很清楚。請讓我知道如何讓「n」表的B列在主表中的相鄰列中。

如果可以在不使用上述代碼的情況下完成,也可以。

回答

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 
+0

工作。萬分感謝! –

1

這就是我們得到的INDIRECT函數。說Sheet2中包含此:

enter image description here

同樣,表Sheet 3具有4,5,6和Sheet4具有7,8,9那麼我們就可以得到所有這些值是這樣的:

enter image description here

...有INDIRECT式。將此放在B2和拖累/跨

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

周圍有一齣戲,讓我知道,如果你不能讓它在你的設置工作

+0

我需要對數據進行動態比較,因爲合作伙伴表的所有時間都會改變。所以尋找一個基於宏觀的解決方案。已經注意到這個解決方案。謝謝! –

相關問題