AW: Vergleich von Daten per VBA
10.09.2008 10:13:00
Daten
Servus Karen,
nimmst du jetzt das Makro zur Übertragung, oder doch ein anderes?
Sub Daten_übertragen()
Dim rSuche As Range, rFinde As Range, i As Long
If IIf(IsEmpty(Sheets("Rohdaten").Cells(Rows.Count, 4)), Sheets("Rohdaten").Cells(Rows.Count, 4) _
.End(xlUp).Row, Rows.Count) > 7 Then
Set rFinde = Sheets("Terminierung").Range("A:A")
For i = 7 To IIf(IsEmpty(Sheets("Rohdaten").Cells(Rows.Count, 4)), Sheets("Rohdaten").Cells( _
Rows.Count, 4).End(xlUp).Row, Rows.Count)
Set rSuche = rFinde.Find(what:=Sheets("Rohdaten").Cells(i, 4), LookAT:=xlWhole, LookIn:= _
xlValues)
If Not rSuche Is Nothing Then
MsgBox rSuche
With Sheets("Rohdaten")
Cells(rSuche.Row, 1) = .Cells(i, 4)
Cells(rSuche.Row, 2) = .Cells(i, 8)
Cells(rSuche.Row, 3) = .Cells(i, 11)
End With
Else
With Sheets("Rohdaten")
Cells(65536, 1).End(xlUp).Offset(1, 0) = .Cells(i, 4)
Cells(65536, 2).End(xlUp).Offset(1, 0) = .Cells(i, 8)
Cells(65536, 3).End(xlUp).Offset(1, 0) = .Cells(i, 11)
End With
End If
Next i
End If
For i = 7 To IIf(IsEmpty(Sheets("Terminierung").Cells(Rows.Count, 1)), Sheets("Terminierung"). _
Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
Set rFinde = Sheets("Rohdaten").Range("D:D")
Set rSuche = rFinde.Find(what:=Sheets("Terminierung").Cells(i, 1), LookAT:=xlWhole, LookIn:= _
xlValues)
If rSuche Is Nothing Then
Sheets("Terminierung").Range("B" & i & ":C" & i).ClearContents
End If
Next i
Set rSuche = Nothing
Set rFinde = Nothing
End Sub
Entscheidend hier war, dass du rSuche = rFInde.Find(what:=Sheets("Rohdaten").Cells(i,8)... geschrieben hast, also den text aus Spalte H in Rohdaten mit Spalte A verglichen hast und da hier keine Treffer vorhanden sein können, natürlich die Else-Anweisung greift und somit alle Daten übertragen werden.
Eds muss heißen: .Cells(i,4)
Gruß
chris