Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1008to1012
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Vergleich von Daten per VBA

Vergleich von Daten per VBA
10.09.2008 08:48:00
Daten
Hallo Forum,
ich habe gestern nette Hilfe bezüglich eines VBA Problems erhalten.
Bei der Testdatei funktionierte das Makro dann auch prima, in der Originaldatei nicht. Ich habe es angepaßt, weiß aber nun nicht, wo der Fehler in der Syntax liegt.
Problem:
Das Makro verschreibt alle Werte aus dem Tabellenblatt Rohdaten in die Tabelle des Tabellenblatts NC-Terminierung.
https://www.herber.de/bbs/user/55292.xls
Ich möchte aber, daß er die Datensätze, die bereits in der Tabelle des TB Terminierung existieren, aktualisiert und nicht doppelt aufführt. Die Datensätze, die keinen korrespondieren Wert in der Tabelle des TB Terminierung haben, sollen leere Zellen in den Spalten B und C habe.
Referenzwerte sind die Werte der Spalte Meldung.
Vielen Dank für Hilfe im voraus.
Grüße
Karen

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
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

Anzeige
AW: Vergleich von Daten per VBA
10.09.2008 11:04:02
Daten
Hallo Chris,
sorry, hatte das falsche Makro mit reinkopiert.
Jetzt funktioniert alles. Ich habe mich vertippt.
Vielen, vielen Dank nochmals für die Hilfe!
Grüße
Karen

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige