Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Wenn ungleich leer, dann Werte übertragen

Wenn ungleich leer, dann Werte übertragen
21.01.2019 11:32:36
Christian
Moin alle zusammen,
es geht im folgenden Quelltext um die schwarz markierte Zeile. Mit der Funktion übertrage ich alle Daten die das Kriterium in Zelle C2 erfüllt.
Ich möchte jedoch nur die Werte übertragen, welche in der Spalte W in der Zielquelle ungleich leer sind. Die Spalte W habe ich überprüft und alle Werte mit Hilfe einer Formel "leer" gemacht. Jetzt sind nur noch die Werte vorhanden, die ich auch übertragen möchte. Dennoch überträgt er mir auch alle leeren.
Wo könnte mein Fehler liegen?

Sub KopiereDaten3()
Dim wsZiel As Worksheet
Dim lngLZeileQuelle As Long
Dim lngLZeileZiel As Long
Dim lngAktZeile As Long
Dim wsQuelleShip As Worksheet
Set wsQuelleShip = tabShipset 'Ziel_Data_Comp
Set wsZiel = TabWO 'WO Monitor
lngLZeileQuelle = wsQuelleShip.Cells.Find("*", wsQuelleShip.Range("A1"), xlFormulas, xlWhole,  _
xlByRows, xlPrevious).Row
lngLZeileZiel = wsZiel.Cells.Find("*", wsZiel.Range("A1"), xlFormulas, xlWhole, xlByRows,  _
xlPrevious).Row
wsQuelleShip.Range("A1").AutoFilter Field:=Columns("A").Column, Criteria1:=Range("C2")
wsZiel.Range("B11:H" & lngLZeileQuelle).Clear
If wsQuelleShip.Range("W" & lngLZeileQuelle).Value  "" Then
wsQuelleShip.Range("E2:E" & lngLZeileQuelle).Copy wsZiel.Range("B11")
wsQuelleShip.Range("W2:W" & lngLZeileQuelle).Copy wsZiel.Range("C11")
End If
End Sub

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn ungleich leer, dann Werte übertragen
21.01.2019 11:40:51
Werner
Hallo Christian,
die Zelle ist nicht leer (ist ja ne Formel drin), versuch mal so:
If Len(wsQuelleShip.Range("W" & lngLZeileQuelle)) > 0 Then
Gruß Werner
AW: Wenn ungleich leer, dann Werte übertragen
21.01.2019 12:31:21
Christian
Moin Werner,
vielen Dank für deine schnelle Antwort. Leider überträgt er dennoch alle Werte ungeachtet von Len. Und es macht kein Unterschied ob ich If Len(wsQuelleShip.Range("W" & lngLZeileQuelle)) "" Then oder If Len(wsQuelleShip.Range("W" & lngLZeileQuelle)) > 0 Then verwende
Sub KopiereDaten3()
Dim wsZiel As Worksheet
Dim lngLZeileQuelle As Long
Dim lngLZeileZiel As Long
Dim lngAktZeile As Long
Dim wsQuelleShip As Worksheet
Set wsQuelleShip = tabShipset 'Ziel_Data_Comp
Set wsZiel = TabWO 'WO Monitor
lngLZeileQuelle = wsQuelleShip.Cells.Find("*", wsQuelleShip.Range("A1"), xlFormulas, xlWhole,  _
xlByRows, xlPrevious).Row
lngLZeileZiel = wsZiel.Cells.Find("*", wsZiel.Range("A1"), xlFormulas, xlWhole, xlByRows,  _
xlPrevious).Row
wsQuelleShip.Range("A1").AutoFilter Field:=Columns("A").Column, Criteria1:=Range("C2")
wsZiel.Range("B11:H" & lngLZeileQuelle).Clear
If Len(wsQuelleShip.Range("W" & lngLZeileQuelle))  "" Then
wsQuelleShip.Range("E2:E" & lngLZeileQuelle).Copy wsZiel.Range("B11")
wsQuelleShip.Range("W2:W" & lngLZeileQuelle).Copy wsZiel.Range("C11")
End If
End Sub
Beste Grüße
Christian
Anzeige
AW: Wenn ungleich leer, dann Werte übertragen
21.01.2019 19:44:04
Werner
Hallo Christian,
na ja, bei mir gehts und deine Datei kenne ich nicht.
Lad mal deine Mappe hoch.
Gruß Werner
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Werte übertragen, wenn ungleich leer in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Erstelle ein neues Modul, indem du mit der rechten Maustaste auf "VBAProject" klickst und "Einfügen" > "Modul" wählst.
  3. Füge den folgenden Code ein:
Sub KopiereDaten3()
    Dim wsZiel As Worksheet
    Dim lngLZeileQuelle As Long
    Dim lngLZeileZiel As Long
    Dim wsQuelleShip As Worksheet
    Set wsQuelleShip = tabShipset 'Ziel_Data_Comp
    Set wsZiel = TabWO 'WO Monitor

    lngLZeileQuelle = wsQuelleShip.Cells.Find("*", wsQuelleShip.Range("A1"), xlFormulas, xlWhole, _
        xlByRows, xlPrevious).Row
    wsQuelleShip.Range("A1").AutoFilter Field:=1, Criteria1:=wsZiel.Range("C2").Value
    wsZiel.Range("B11:H" & lngLZeileZiel).Clear

    Dim i As Long
    For i = 2 To lngLZeileQuelle
        If Len(wsQuelleShip.Range("W" & i).Value) > 0 Then ' Prüfe, ob W ungleich leer ist
            wsZiel.Range("B" & i + 9).Value = wsQuelleShip.Range("E" & i).Value
            wsZiel.Range("C" & i + 9).Value = wsQuelleShip.Range("W" & i).Value
        End If
    Next i
End Sub
  1. Achte darauf, dass die Quell- und Zielblätter korrekt zugewiesen sind (z.B. tabShipset und TabWO).
  2. Führe das Makro aus, um die Werte zu übertragen, die in der Spalte W ungleich leer sind.

Häufige Fehler und Lösungen

  • Problem: Es werden auch leere Werte übertragen.

    • Lösung: Stelle sicher, dass du If Len(wsQuelleShip.Range("W" & i).Value) > 0 Then verwendest, um nur dann die Werte zu übertragen, wenn die Zelle nicht leer ist.
  • Problem: Die Filterung funktioniert nicht korrekt.

    • Lösung: Überprüfe, ob die Kriterien in wsZiel.Range("C2").Value korrekt gesetzt sind und die Filterfunktion richtig angewendet wird.

Alternative Methoden

Eine andere Möglichkeit, Werte zu übertragen, besteht darin, die WENN-Funktion in Kombination mit VBA zu verwenden:

If wsQuelleShip.Range("W" & i).Value <> "" Then
    ' Werte übertragen
End If

Diese Methode verwendet die Ungleich-Bedingung, um sicherzustellen, dass nur nicht-leere Werte verarbeitet werden.


Praktische Beispiele

Wenn du beispielsweise die Werte aus Spalte E in die Zielspalte B und die Werte aus Spalte W in die Zielspalte C übertragen möchtest, kannst du das folgende Beispiel verwenden:

If wsQuelleShip.Range("W" & i).Value <> "" Then
    wsZiel.Range("B" & i + 9).Value = wsQuelleShip.Range("E" & i).Value
    wsZiel.Range("C" & i + 9).Value = wsQuelleShip.Range("W" & i).Value
End If

Dieses Beispiel zeigt, wie man in VBA die wenn ungleich-Bedingung anwendet, um nur die gewünschten Werte zu übertragen.


Tipps für Profis

  • Verwende die Len-Funktion, um die Länge von Zellenwerten zu überprüfen. Dies ist besonders nützlich, wenn du sicherstellen möchtest, dass Formeln nicht als leere Zellen gezählt werden.

  • Nutze Debug.Print, um den Inhalt von Variablen während der Ausführung des Codes zu überprüfen. Dies kann dir helfen, Fehler schneller zu finden.

  • Halte deinen Code modular, indem du Funktionen für wiederkehrende Aufgaben erstellst. So bleibt dein Code übersichtlich und wartungsfreundlich.


FAQ: Häufige Fragen

1. Warum funktioniert mein If-Befehl nicht? Es könnte sein, dass die Zelle eine Formel enthält, die als leer betrachtet wird. Verwende Len, um sicherzustellen, dass die Zelle wirklich leer ist.

2. Wie kann ich sicherstellen, dass ich nur die gewünschten Werte übertrage? Verwende die WENN-Bedingung in Kombination mit VBA, um sicherzustellen, dass du nur ungleiche Werte überträgst.

3. Was mache ich, wenn der Code nicht funktioniert? Überprüfe die Zuweisungen für die Arbeitsblätter und die Filterkriterien. Debugge den Code mit Debug.Print, um den Fluss der Daten zu verfolgen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige