2017-02-28 12 views
2

Ich versuche, einen Vergleich der Angebote von allen Partnern erhalten. Ich habe ein Arbeitsbuch erstellt, in dem die Angebote aller Partner in verschiedenen Tabellen hinzugefügt werden. Hier ist die 1. Spalte für alle Lieferanten gleich. die Produktdetails. Das Angebotsvergleichsblatt viz. Das Masterblatt sollte die Angebote aller Partner anzeigen.Kopieren Sie Spalten aus verschiedenen Blättern in Master-Blatt in VBA mit 1 festen Spalte

z. Spalte A-Werte in allen Blättern der Arbeitsmappe (Master-Blatt sowie andere Blätter) ist identisch. Spalte "B, C ... n" in Masterblatt sind leer, während alle anderen Blätter über einige Werte in Spalte B verfügen. Ich benötige ein Makro, um Werte aus Blatt 1.Column B zu kopieren, und es (Master) in dem Master einzufügen. Spalte B. In ähnlicher Weise werden Werte aus Blatt 2.Spalte B in Master.Spalte C eingefügt und sollten für alle anderen Blätter in der Arbeitsmappe (Blätter 3, 4 ... n) in Master.Spalte (D, E..n).

Ich habe versucht, den folgenden Code:

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 

jedoch hier die Ausgabe untereinander statt in den nächsten benachbarten Spalten in der gleichen Spalte eingefügt wird.

Output image - stacked

Es ist in entsprechenden benachbarten Spalten erforderlich.

Hoffe ich bin klar in der Erklärung der Anforderung. Bitte lassen Sie mich wissen, wie Sie die Spalte B von "n" Blättern in benachbarten Spalten im Masterblatt erhalten.

Wenn es ohne die oben genannten Codes durchgeführt werden kann, ist es auch in Ordnung.

Antwort

1

Versuchen Sie den Code unten:

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

Das funktioniert. Danke vielmals! –

1

Das ist, was wir haben die INDIRECT Funktion für. sagen sheet2 enthält:

enter image description here

und in ähnlicher Weise hat Sheet3 4,5,6 und Sheet4 hat 7,8,9 dann können wir alle diese Werte wie diese:

enter image description here

... mit einem INDIRECT Formel. Legen Sie diese in B2 und nach unten ziehen/über

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

ein Spiel Haben Sie sich um und lassen Sie mich wissen, wenn Sie nicht bekommen kann es in Ihrem Setup arbeiten

+0

Ich brauche einen dynamischen Vergleich der Daten, da sich die Anzahl der Partnerblätter ständig ändert. Also auf der Suche nach einer makrobasierten Lösung. Habe diese Lösung auch zur Kenntnis genommen. Vielen Dank! –

Verwandte Themen