Zeilen vergleichen und kopieren

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Label
Bild

Betrifft: Zeilen vergleichen und kopieren
von: Tanja
Geschrieben am: 19.05.2015 09:28:32

Hallo Zusammen,
ich hoffe ihr könnt mir bei meinem Problem helfen. Da ich nur VBA Grundkenntnisse habe, ist es etwas zu komplex für mich..
Hier ist schon mal die Beispieldatei:
https://www.herber.de/bbs/user/97713.xlsm
Ich habe 4 Tabellenblätter. Im TB "Ursprungsbuchungen", die alle ein bestimmtes Label haben (Spalte A).
In manchen Fällen taucht diese Ursprungsbuchung (manchmal leicht verändert) auch in den beiden Tabellenblättern "Weltbuchung" und "C3 Buchung" auf. Im TB "Weltbuchung" würde im Label zusätzlich ein "W" vorne dran stehen und im TB "C3 Buchung" ein "C3".
Ziel ist es die Buchungen im TB "Gesamtübersicht" zu sortieren. D.h. jede Ursprungsbuchung soll in die Gesamtübersicht kopiert werden. Wenn es zu der Buchung auch eine W- oder C3- Buchung gibt, soll diese direkt darunter kopiert werden. Dann eine Leerzeile, dann die nächste Buchung. Sodass am Ende in der Gesamtübersicht alle Buchungen aus allen 3 TB auftauchen und die mit dem gleichen Label untereinander stehen.
In der Beispieldatei habe ich das mal manuell gemacht, wie es am Ende aussehen soll.
Ich hoffe das war einigermaßen verständlich und mir kann jemand helfen...
Viele Grüße,
Tanja

Bild

Betrifft: AW: Zeilen vergleichen und kopieren
von: Michael
Geschrieben am: 20.05.2015 17:32:46
Hi Tanja,
ich kopiere erst alles untereinander und schreibe ein paar Hilfsspalten für die automatische Sortierung in Excel.
Hier das Makro:


Option Explicit
Sub kopieren()
Dim von%, z0%, z%, i%, bis%, n%
Dim bez$
z0 = 2
z = z0
' 1. alles zusammenkopieren...
Sheets("Ursprungsbuchung").Activate
bis = Range("a1").End(xlDown).Row
von = 2
Range("A" & von & ":E" & bis).Copy Sheets("Gesamtübersicht").Range("a" & z)
z = z + bis - von + 1
Sheets("Weltbuchung").Activate
bis = Range("a1").End(xlDown).Row
von = 2
Range("A" & von & ":E" & bis).Copy Sheets("Gesamtübersicht").Range("a" & z)
z = z + bis - von + 1
Sheets("C3 Buchung").Activate
bis = Range("a1").End(xlDown).Row
von = 2
Range("A" & von & ":E" & bis).Copy Sheets("Gesamtübersicht").Range("a" & z)
z = z + bis - von
Sheets("Gesamtübersicht").Activate
' 2. Hilfsspalten für Sortierung
For i = z0 To z
  n = 1
  bez = Range("A" & i)
  If Mid(bez, 1, 1) = "W" Then
    n = 2
    bez = Mid(bez, 2)
  End If
  If Mid(bez, 1, 1) = "C" Then
    n = 3
    bez = Mid(bez, 3)
  End If
  Range("F" & i) = n
  Range("G" & i) = i
  Range("H" & i) = bez
Next
' 3. Sortieren
Range("A" & z0 & ":H" & z).Sort key1:=Range("H" & z0), key2:=Range("F" & z0), key3:=Range("G" &  _
z0)
' 4. Leerzeilen markieren ...
Range("G" & z0 + 1).FormulaLocal = "=H3<>H2"
Range("G" & z0 + 1).Copy Range("G" & z0 + 2 & ":G" & z)
' und einfügen
For i = z0 + 1 To 2 * z
  If Range("G" & i) Then
    Range("G" & i).EntireRow.Insert
    Range("A" & i & ":E" & i).Interior.Color = xlNone
    i = i + 1
  End If
Next
' 5. Hilfsspalten entfernen
End Sub
und die Datei: https://www.herber.de/bbs/user/97747.xlsm
Schöne Grüße,
Michael

Bild

Betrifft: AW: Zeilen vergleichen und kopieren
von: Tanja
Geschrieben am: 21.05.2015 13:25:37
Wow! Super, vielen Dank Michael. Klappt einwandfrei! Auf so eine Idee wäre ich im Leben nicht gekommen...

Bild

Betrifft: freut mich, danke für die Rückmeldung owT
von: Michael
Geschrieben am: 21.05.2015 14:50:56


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zeilen vergleichen und kopieren"