AW: Tabellen vergleichen
18.10.2007 01:46:00
Daniel
HI
dein VBA-Level wäre doch mit "VBA nur mit Recorder" ganz gut beschrieben.
zumindest weisst du mal, was ein Makro ist und wie man es erstellt.
warum sollen die 3 Tabellenblätter nicht zusammenkopiert werden?
der einzige mir bekannte Grund dafür wäre, daß die 65536-Zeilengrenze überschritten wird, aber bis dahin dürfte meine Methode auch als Makro mit zu den schnellsten und kürzesten gehören.
hier mal der Code dafür:
die Namen stehen ohne überschrift in den Blättern "Tabelle1" bis "Tabelle3", die Liste wird in "Tabelle4" erzeugt, diese muss bereits vorhanden sein.
Sub Namen_aus_allen_Blättern()
With Sheets("Tabelle4")
.Cells.Clear
Sheets("Tabelle1").Range("A1").CurrentRegion.Copy .Range("A1")
Sheets("Tabelle2").Range("A1").CurrentRegion.Copy .Range("A65536").End(xlUp).Offset(1, 0)
Sheets("Tabelle3").Range("A1").CurrentRegion.Copy .Range("A65536").End(xlUp).Offset(1, 0)
.Range("A2").CurrentRegion.Sort key1:=.Range("A2"), key2:=.Range("B2"), header:=xlNo
End With
With Sheets("Tabelle4").Range("A1").CurrentRegion.Offset(0, 2).Resize(, 1)
.FormulaR1C1Local = "=WENN(ZS(-2)&ZS(-1)=Z(2)S(-2)&Z(2)S(-1);Zeile();WAHR)"
.Formula = .Value
End With
With Sheets("Tabelle4")
.Range("A1").CurrentRegion.Sort key1:=Range("C1"), header:=xlNo
.Range("C:C").SpecialCells(xlCellTypeConstants, 4).Offset(0, -2).Resize(, 3).Delete shift:= _
xlUp
.Range("C:c").Delete
End With
End Sub
Gruß, Daniel