Zeile kopieren wenn Zelleninhalte Bedingung erfüllen

  • Excel

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von petaod.

    Zeile kopieren wenn Zelleninhalte Bedingung erfüllen

    Hallo liebe Gemeinde,
    ich versuche per VBA in Excel 2010 den Inhalt meiner Zeilen aus meiner "Tabelle1" in eine zweite leere Tabelle "Tabelle2" zu kopieren. Hierbei soll überprüft werden, ob der Zelleninhalt von Parameter A z.B. Zelle B3 identisch zum vorigen Zelleninhalt ist also B2. Sind die Inhalte der beiden Zellen nicht identisch, dann soll die Zeile mit der Zelle B3 in "Tabelle2" in den nächstfreien Eintrag kopiert werden. Wenn die Inhalte der beiden Zellen identisch sind, dann soll die Zeile wo sich die Zelle B3 drin befindet nicht kopiert werden und der nächste Zelleninhalt überprüft werden (also Inhalt von B4 mit Inhalt von B3).
    So sehen beispielhaft die beiden Tabellenblätter aus:

    Tabelle2:
    Modell
    A
    B
    Spezifikation
    km-Stand
    Datum
    122-45
    10
    3
    5.Gang Automatik
    6035
    11.04.15































    Tabelle1:
    Modell
    A
    B
    Spezifikation
    km Stand
    Datum
    122-45
    10
    3
    5.Gang Automatik
    6035
    11.04.15
    122-45
    10
    3
    5.Gang Automatik
    6035
    11.04.15
    122-45
    5,5
    4,26
    DCT
    7543
    25.05.15
    122-45
    14
    12,63
    DCT
    7900
    27.05.15
    122-45
    22
    1
    Automatik
    9521
    13.06.15
    122-45
    22
    1
    Automatik
    9521
    13.06.15

    Ich habe mich auch schon selber daran ausprobiert... verzweifele jedoch langsam, da ich schon nur beim Kopieren der Zeile dauernd Laufzeitfehler rausbekomme (Copy Befehl funktioniert nicht) oder Excel hängt sich komplett auf bei der Ausführung meines Codes. Leider finde ich auch nicht den Fehler darin. Ich bin auch noch ein ziemlicher Neuling in VBA und auch das liebe Internet konnte mir jetzt nicht mehr weiterhelfen.
    Hier ist der von mir erstellte Code:

    Visual Basic-Quellcode

    1. Option Explicit
    2. Sub KopiereRange()
    3. Dim Tab1, Tab2
    4. Dim I As Integer
    5. Dim k As Integer
    6. Dim Vorg
    7. Dim Vergl
    8. Set Tab1 = Worksheets("Tabelle1")
    9. Set Tab2 = Worksheets("Tabelle2")
    10. I = Tab1.Rows.Count 'zählt die beschriebenen Zellen durch
    11. Vorg = Tab1.Cells(2, 2).Value
    12. Vergl = Tab1.Cells(3, 2).Value
    13. For k = 3 To I Step 1
    14. If Vorg <> Vergl Then
    15. Tab1.Cells(k, 2).Copy
    16. Tab2.Paste Destination:=Cells(k, 1)
    17. Else
    18. Tab1.Cells(k + 1, 2).Copy
    19. Tab2.Paste Destination:=Cells(k + 1, 1)
    20. End If
    21. Next
    22. End Sub


    Vielleicht gibt es hier jemanden, der da einen besseren Durchblick hat als ich und mir da auf die Sprünge helfen kann.
    Ich würde mich sehr freuen wenn mir hier jemand helfen könnte :)
    VG, Chantrall
    So richtig habe ich nicht kapiert, was du machen willst, aber

    Chantrall schrieb:

    Tab1.Cells(k, 2).Copy
    Tab2.Paste Destination:=Cells(k, 1)
    ist Blödsinn.
    Besser:
    Tab1.Cells(k, 2).Copy Destination:=Tab2.Cells(k, 1)
    oder, falls es nur auf die Werte ankommt:
    Tab2.Cells(k, 1).Value = Tab1.Cells(k, 2).Value
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --