AW: 3 Excel-Tabellen verknüpfen
20.01.2011 08:44:52
fcs
Hallo Markus,
hier ist VBA wahrscheinlich der einfachere Weg.
Nachfolgend ein Beispiel code, denn du bezüglich der Tabellennamen und Spalten mit Daten noch anpassen muss.
Gruß
Franz
'In diesem Beispiel haben die Datentabellen Daten von Spalte 1 bis Spalte 6, die Spalten- _
der Daten stehen in Zeile1
'Der Pivotbericht sollte so eingerichtet werden, dass die kompletten Spalten als Datenquelle _
festgelegt werden
Sub PivotDatenZusammenkopieren()
'Altdaten in Zieltabelle löschen
With Worksheets("Tabelle4")
If ZeileLetzte(Worksheets("Tabelle4"), 6) > 1 Then
.Range(.Rows(2), .Rows(ZeileLetzte(Worksheets("Tabelle4"), 6))).ClearContents
End If
End With
'Daten nach Zieltabelle kopieren
Call DatenNachZiel(Worksheets("Tabelle1"), Worksheets("Tabelle4"), 6)
Call DatenNachZiel(Worksheets("Tabelle2"), Worksheets("Tabelle4"), 6)
Call DatenNachZiel(Worksheets("Tabelle3"), Worksheets("Tabelle4"), 6)
End Sub
Private Sub DatenNachZiel(wksQuelle As Worksheet, wksZiel As Worksheet, _
SpalteLetzte As Long, Optional ZeileTitel As Long = 1, Optional Spalte1 As Long = 1)
Dim Zielzeile As Long, ZeileQuelle As Long
Zielzeile = ZeileLetzte(wksZiel, SpalteLetzte) + 1
ZeileQuelle = ZeileLetzte(wksQuelle, SpalteLetzte)
With wksQuelle
.Range(.Cells(ZeileTitel + 1, Spalte1), .Cells(ZeileQuelle, SpalteLetzte)).Copy
End With
wksZiel.Cells(Zielzeile, Spalte1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Sub
Function ZeileLetzte(wks As Worksheet, ByVal lSpalteLetzte, Optional lSPalte1 As Long = 1) As _
Long
Dim Spalte As Long
With wks
For Spalte = lSPalte1 To lSpalteLetzte
If Not IsEmpty(.Cells(1, Spalte)) Then
ZeileLetzte = Application.WorksheetFunction.Max(ZeileLetzte, _
.Cells(.Rows.Count, Spalte).End(xlUp).Row)
End If
Next
End With
End Function