Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Werte werden nach Vergleich von zwei Spalten nicht kopiert

Werte werden nach Vergleich von zwei Spalten nicht kopiert
15.08.2024 09:05:22
Olli
Hallo

Um die Zellwerte der Spalte A, Tabelle 2 mit den Zellwerten in Spalte Q, Tabelle 1 zu vergleichen und bei gleichem Wert soll die nachfolgenden Zellen B,C,D,E,F, Tabelle 2 in die entsprechend Zeile (des gleichen Wertes) in die Zellen R,S,T,U,V,W kopiert werden, habe ich ein VBA, welches zwar ohne Bug durchläuft, jedoch werden die vgt. Zellen nicht in das Tabellenblatt 1 kopiert. Hat jemand eine Idee, warum dies nicht kopiert wird:

Sub WerteVergleichenUndKopieren()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim lastRow1 As Long
Dim lastRow2 As Long
Dim i As Long
Dim j As Long

' Arbeitsblätter definieren
Set ws1 = ThisWorkbook.Sheets("Tabelle1")
Set ws2 = ThisWorkbook.Sheets("Tabelle2")

' Letzte Zeile in beiden Tabellen bestimmen
lastRow1 = ws1.Cells(ws1.Rows.Count, 18).End(xlUp).Row
lastRow2 = ws2.Cells(ws2.Rows.Count, 1).End(xlUp).Row

' Durchlaufe alle Zeilen in Tabelle 2, Spalte A
For i = 2 To lastRow2
' Durchlaufe alle Zeilen in Tabelle 1, Spalte Q

Set gef = ws1.Range("Q:Q").Find(ws2.Cells(i, 1).Value)
If Not gef Is Nothing Then
j = gef.Row
' Wenn gleich, kopiere die Werte
ws1.Cells(j, 19).Value = ws2.Cells(i, 2).Value ' Kopiere B -> S
ws1.Cells(j, 20).Value = ws2.Cells(i, 3).Value ' Kopiere C -> T
ws1.Cells(j, 21).Value = ws2.Cells(i, 4).Value ' Kopiere D -> U
ws1.Cells(j, 22).Value = ws2.Cells(i, 5).Value ' Kopiere E -> V
ws1.Cells(j, 23).Value = ws2.Cells(i, 6).Value ' Kopiere F -> W
End If
Next i

MsgBox "Werte wurden erfolgreich kopiert!", vbInformation

End Sub

Gruss

Olli
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte werden nach Vergleich von zwei Spalten nicht kopiert
15.08.2024 09:23:29
ralf_b
möglicherweise stehen die Suchparameter falsch. Ich würde immer lookin und lookat bei range.find() mit eintragen. Die gelten nämlich excelweit und bei Änderung der Suche bleiben die Werte erhalten.
AW: Werte werden nach Vergleich von zwei Spalten nicht kopiert
15.08.2024 09:43:09
hary
Moin
Gib mal den Parameter mit. Z.B.
Set gef = ws1.Range("Q:Q").Find(ws2.Cells(i, 1).Value, Lookat:=xlWhole)

gruss hary
Anzeige
AW: Werte werden nach Vergleich von zwei Spalten nicht kopiert
15.08.2024 09:46:33
MCO
Hallo Olli!

Der Code läuft bei mir nach wie vor erfolgreich durch, check mal deine Zellbezüge. Zum Abgleich kannst du immer mal ein [DeinRange].select einbauen um es abzugleichen. Solltest du allerdings wieder rauslöschen.

Ich hab das VBA nochmal etwas erweitert.
  • Die Anregung von ralf_b hab ich mit eingefügt

  • Die Suche nimmt nur noch gefüllte Zeilen aus Spalte "A"

  • Nicht gefundene Werte werden als fehlerhaft gemeldet

  • gefunden/nicht gefunden wird farbig gekennzeichnet


  • Probiers mal

    Sub WerteVergleichenUndKopieren2()
    
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Dim i As Long
    Dim j As Long
    Dim werte_rng As Range
    Dim Wert As Range

    ' Arbeitsblätter definieren
    Set ws1 = ThisWorkbook.Sheets("Tabelle1")
    Set ws2 = ThisWorkbook.Sheets("Tabelle2")
    Set werte_rng = ws2.Range("A:A").SpecialCells(xlConstants)

    ' Durchlaufe alle werte_rng in Tabelle 2, Spalte A
    For Each Wert In werte_rng

    i = Wert.Row
    Set gef = ws1.Range("Q:Q").Find(what:=Wert, LookIn:=xlValues, lookat:=xlWhole) ' Findet alle Werte in Tabelle 1, Spalte Q
    If Not gef Is Nothing Then
    Wert.Interior.Color = vbGreen
    j = gef.Row
    ' Wenn gleich, kopiere die Werte
    ws1.Cells(j, 19).Value = ws2.Cells(i, 2).Value ' Kopiere B -> S
    ws1.Cells(j, 20).Value = ws2.Cells(i, 3).Value ' Kopiere C -> T
    ws1.Cells(j, 21).Value = ws2.Cells(i, 4).Value ' Kopiere D -> U
    ws1.Cells(j, 22).Value = ws2.Cells(i, 5).Value ' Kopiere E -> V
    ws1.Cells(j, 23).Value = ws2.Cells(i, 6).Value ' Kopiere F -> W
    Else 'nicht gefunden!
    fehl_txt = fehl_txt & Chr(10) & Wert & " nicht gefunden"
    Wert.Interior.Color = vbRed
    End If
    Next Wert

    If fehl_txt > "" Then
    MsgBox fehl_txt, vbCritical
    Else
    MsgBox "Werte wurden erfolgreich kopiert!", vbInformation
    End If
    End Sub

    Gruß, MCO
    Anzeige
    AW: Werte werden nach Vergleich von zwei Spalten nicht kopiert
    15.08.2024 11:04:25
    Olli
    Hallo MCO

    Besten Dank für deine Hilfe und Tipps! Nun funktioniert es genau nach Wunsch!
    Ein Dank auch an die anderen, welche mit Lösungsvorschläge geantwortet haben!

    Gruss

    Olli
    ;

    Forumthreads zu verwandten Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige
    Entdecke relevante Threads

    Schau dir verwandte Threads basierend auf dem aktuellen Thema an

    Alle relevanten Threads mit Inhaltsvorschau entdecken
    Anzeige

    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