Clever-Excel-Forum

Normale Version: 2 Spalten vergleichen und ohne Leerzellen kopieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Moin zusammen,

ich bin blutiger VBA-Anfänger und leider deshalb auch nicht allein in der Lage ein ganz einfaches Makro zu bauen...

Ich möchte das
1. die Zellen in Spalte C in Blatt 1 (Übersicht) geprüft werden ob sie ein "x" enthalten
2. und wenn ja, sollen die direkt links daneben stehenden Zellen aus Spalte B in Blatt 2 (Vehicles) ab Zelle A2 kopiert werden

Aber ich bekomme es einfach nicht hin.
Erschwerend dazu kommt auch das ich noch nicht mal die dazu benötigtern Befehle dazu kenne.

Ich hab bereits versucht den Hauptteil als ein fertiges Makro (das ich aus einem Forum kopiert habe)
zu übernehmen und es dann auf meine Datei anzupassen.
Aber das hat natürlich nicht so geklappt, als Fehlermeldung kommt immer "Typen unverträglich"  Huh

Sub Kopieren()

Dim Zelle As Range
Dim i%
i = 12
For Each Zelle In Sheets("Übersicht").Range("B:C")
 
  If Range("C4:C138").Value = "x" And Range("B4:B138") <> "" Then
    Range("B4:B138").Copy
    Sheets("Vehicles).Cells(i, "A2").PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
    i = i + 1
  End If
Next
End Sub

Über Hilfestellung jeglicher Art würde ich mich sehr freuen
:100:
Hallo

das habe ich so getestet
Code:
Sub Kopieren()
   Dim lngZiel As Long
   Dim lngLetzte As Long
   Dim i As Long
   lngZiel = 2
   With Sheets("Übersicht")
       lngLetzte = .Cells(.Rows.Count, 3).End(xlUp).Row
       For i = 4 To lngLetzte
           If .Cells(i, 3).Value = "x" And .Cells(i, 2).Value <> "" Then
               Sheets("Vehicles").Cells(lngZiel, 1).Value = .Cells(i, 2).Value
               lngZiel = lngZiel + 1
           End If
       Next
   End With
End Sub
MfG Tom
Es funktioniert, wow , vielen Dank ! (der ist für Dich, Tom  :18:)


Auch wenn ich kein Wort von dem Macro verstehe, ich werde mir das mal ganz in Ruhe anschauen und versuchen zu verstehen was wo steht.
Und dann schaff ich sowas das nächste Mal vielleicht auch alleine.
Ansonsten weiß ich jetzt wo ich gut aufgehoben bin.
Hallo Susanne

dein Fehler liegt hier, ein logischer Denkfehler  (passiert mir auch)  If Range("C4:C138").Value = "x" And Range("B4:B138") <> "" Then

du willst gleich den gesamten Range Bereich auf "x" und <> "" auswerten, das geht nicht!  Excel lann nur jede Zelle einzeln prüfen, keinen Bereich! Crazy Tom hat eine For Next Schleife aufgebaut und fragt Zeile 4 bis Letzte Zeile ab ob If Then stimmt. Dann kopiert er nicht den ganzen Bereich, sondern füllt jede Zeile einzeln aus. Dazu braucht er die Variable lngZiel + 1 als Zeilenzaehler, damit im Zielblatt keine Leerzeilen entstehen.

Probiere Spasshalber mal aus was passiert wenn du lngZiel + 1 durch "i" ersetzt und in der Quelldatei Leerzeilen sind. Dann begreifst du am schnellsten wie simpel aber effektiv CrazyTom den Code aufgebaut hat. Versuch macht klug!!

mfg  Gast 123