Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

2 Spalten vergleichen und ohne Leerzellen kopieren
#1
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:
Antworten Top
#2
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
Antworten Top
#3
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.
Antworten Top
#4
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  
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste