VBA Spaltenvergleich
13.12.2005 21:15:35
Sebastian
..das Makro von peterchen funktioniert bestens. Allerdings nicht ganz nach meinen Bedürfnissen, habe selber schon versucht es zu modifizieren, bin allerdings nur gescheitert.
Hier erstmal der code von Peterchen:
Sub gleiche_spalten( _
ByRef sp1 As Range, _
ByRef sp2 As Range, _
ByRef spz As Range _
)
Dim zelle1 As Range
Dim zelle2 As Range
Dim ziel_zeile As Long
ziel_zeile = spz.Row
For Each zelle1 In sp1.Cells
If zelle1.Value = "" Then Exit For
For Each zelle2 In sp2.Cells
If zelle2.Value = "" Then Exit For
If zelle1.Value = zelle2.Value Then
spz.Parent.Cells(ziel_zeile, spz.Column).Value = zelle1.Value
ziel_zeile = ziel_zeile + 1
End If
Next
Next
End Sub
Sub test()
Dim sp1 As Range
Dim sp2 As Range
Dim spz As Range
Set sp1 = GetRange("Quelle 1", "Tabelle1", "A")
If sp1 Is Nothing Then Exit Sub
Set sp2 = GetRange("Quelle 2", "Tabelle2", "A")
If sp2 Is Nothing Then Exit Sub
Set spz = GetRange("Ziel", "Tabelle3", "A")
If spz Is Nothing Then Exit Sub
Call gleiche_spalten(sp1, sp2, spz)
End Sub
Function GetRange( _
ByVal titel As String, _
Optional ByVal tabelle As String = "", _
Optional ByVal spalte As String = "" _
) As Range
On Error Resume Next
Do
tabelle = InputBox(titel & " Tabelle:", titel, tabelle)
If tabelle <> "" Then _
spalte = InputBox(titel & "Spalte 1", titel, spalte)
If tabelle = "" Or spalte = "" Then
Set GetRange = Nothing
Exit Function
End If
Set GetRange = Worksheets(tabelle).Columns(spalte)
If Err.Number = 0 Then Exit Do
MsgBox "Fehler bei der Eingabe, bitte wiederholen."
Err.Clear
Loop
End Function
Da meine Werte in der Tabelle nicht beispielsweise bei A1 anfangen und meistens noch etwas darüber steht oder Leerzeilen vorhanden sind, wirkt das eigentliche Makro nicht mehr!
Gibt es irgendeine Möglichkeit, einen bestimmten Punkt der Spalte z.B. A5 einzugeben?
Und 2. wie kann man das Problem mit den Leerzeilen angehen, das trotz Leerzeile das Makro nicht auffhört zu vergleichen? Ist so etwas möglich?
Zum Schluss noch, der Vergleich sollte die Werte wie folgt einordnen: eine Spalte = nicht in Tabelle A, eine Spalte nicht in Tabelle B und die Letzte Spalte = in Beiden Tabellen!
Ich weis das ist ne Menge Arbeit, aber ich wäre echt über jede Hilfe dankbar!!
Dankeschön
Sebastian