AW: VBA - Suche in Quellatei Datei und Ausgabe in Ziel
19.12.2017 11:48:53
Daniel
Hallo Günther,
danke fürs Nachfragen. Ich hatte erst heute Zeit, nochmal zu testen. Ich habe die Offsets so eingestellt, wie du vorgeschlagen hast und es auch nach meinem Verständnis logisch wäre:
rgAktplace.Range(rgAktplace.Offset(0, 4), rgAktplace.Offset(0, 2)).Copy
rgZielplace.PasteSpecial xlPasteValues
rgAktplace.Range(rgAktplace.Offset(0, 4), rgAktplace.Offset(0, 5)).Copy
rgZielplace.Offset(0, 2).PasteSpecial xlPasteValues
Als Ergebnis erhalte ich nun bei der Suche nach "Muster" folgende Ergebnisse:
ok ok ok
Fehler 4 ok ok
ok ok ok
ok ok Fehler 13
Fehler 10 ok ok
Zeile 1 und 3 hätten gar nicht angezeigt werden dürfen, da sie nicht den Kriterien entsprechen.
Zeile 2 und 4 sind korrekt.
Zeile 5 ist falsch, da hier der Suchbegriff gar nicht vorkommt.
Außerdem sind das nicht die Spalten, die ich zurückgeben möchte, sondern sie sind um eine oder ein paar Spalten nach rechts verschoben.
Außerdem fehlen noch vier Zeilen dazwischen, auf die die Kriterien zutreffen.
Nun stelle ich die Offsets ein, die ich in meinem vorigen Beitrag beschrieben habe:
rgAktplace.Range(rgAktplace.Offset(-1, 1), rgAktplace.Offset(-1, 2)).Copy
rgZielplace.PasteSpecial xlPasteValues
rgAktplace.Range(rgAktplace.Offset(-1, 4), rgAktplace.Offset(-1, 5)).Copy
rgZielplace.Offset(0, 2).PasteSpecial xlPasteValues
Jetzt sieht das Ergebnis folgendermaßen aus:
1 Fehler 1 ok ok
7 ok ok ok
9 ok ok ok
15 Fehler 5 ok ok
29 ok ok Fehler 14
Zu Allererst: es werden nun die richtigen Spalten ausgegeben.
Aber: Zeilen 2 und 3 sind falsch, hier treffen die Kriterien nicht zu.
Zeilen 1 und 4 sind korrekt.
Zeile 5 ist falsch, da hier der Suchbegriff nicht vorkommt.
Außerdem fehlen auch hier vier Zeilen dazwischen, die den Kriterien entsprechen würden.
Ich weiß, dass Find die Spalte D durchsucht. Ich möchte beim Eintreffen meiner Kriterien Spalten H, I, K und L ausgeben. Logisch wäre, hier das Offset auf (0, 4), (0, 5), (0, 7) und (0, 8) zu setzen. Dann gibt es aber die Spalten I, J, L und M aus.
Setze ich das Offset auf (-1, 1), (-1, 2), (-1, 4) und (-1, 5), dann gibt es mir H, I, K und L aus. Hier sogar mit der ersten Zeile, in der der Fehler auftritt. Ersetze ich die -1 mit 0, wird die erste Fehlerzeile einfach übergangen, die restlichen Ergebnisse sind aber genauso teilweise falsch und einfach unvollständig:
2 ok ok ok
8 Fehler 4 ok ok
10 ok ok ok
16 ok ok Fehler 13
30 Fehler 10 ok ok
Das alles tritt bei der Suche nach "Muster" auf. Wende ich meinen zweiten Suchbegriff "Mann" an, der in meiner Test-Quelldatei genauso oft wie "Muster" in der Liste vorkommt, kopiert es mir nur leere Zeilen in meine Zieldatei, weil es dann um etwa 10 Zeilen nach unten verrutscht. Diese 10 Zeilen werden allerdings nirgendwo im Code angegeben.
Verstehst du meine Verwirrung? Entweder verhält sich das Programm unlogisch, oder ich denke in die falsche Richtung. Hast du eine Idee, was falsch sein könnte?
Viele Grüße
Daniel