Hallo liebe Leute.
Ich habe diese Frage bereits in ein anderes Forum gestellt, bin dort leider nicht weitergekommen. Deshalb stelle ich es hier nochmal ein. Danke
HI,
Ich bekomme es leider nicht hin.
Ich habe eine Datei (Tabelle) "Dokumentation" in der ich alle neuen Meldungen erfasse, die einem bestimmten Typ entsprechen.
Ich bekomme aus einem Programm einen Excelauszug "Datenexport (1)" (Name ändert sich) in dem nach dem Typ bereits gefiltert wurde.
Leider stehen in dieser Liste alte und neu Meldungen durcheinander.
In meiner Tabelle steht die Meldungsnummer in der Spalte "D", in der von dem Programm in Spalte "A".
Nun soll erst Festgestellt werden welche Meldungsnummern bereits in meiner Tabelle enthalten sind.
Ist sie nicht enthalten, dann füge die Nummer in meine Tabelle an letzter Stelle ein und Übertrage den Wert aus "Datenexport (1)" "AI" in die "Dokumentation" Spalte "G" letzte Zeile ein.
Im Zweiten Step soll wenn die Meldungsnummer gefunden wurde, vergleiche die Letzte Änderung aus der Spalte "Datenexport (1)" "CU" (Zeile von gefunden)
mit der "Dokumentation" "Y" .
Ist sie gleich mache mit der nächsten Zeile weiter.
Wenn ungleich, Füge das neue Datum in Dokumentation ein
und kopiere den Wert (String) aus "Datenexport (1)" "P" nach "Dokumentation" "X" ein.
Ich habe jetzt versucht aus alten Makros mir das neue anzupassen.
Leider bleibe ich schon im oberen Teil hängen.
Hier mein Beginn des Makros:
Dim QName As Workbook
Dim QSheet As Worksheet
Dim ZPath As String
Dim ZName As String
Dim ZSheet As String
'Set QPath = ActiveWorkbook.Path ' Ich öffne das Makro in der Datei "Datenexport (1)" dessen Namen sich ändert
Set QName = ActiveWorkbook 'Erstellt sich aus aktiver Quelldatei "Datenexport (1)"
Set QSheet = ActiveSheet 'Erstellt sich aus aktiven Quellsheet "Datenexport (1)"
ZPath = "D:\Users\YYY\XXXXXXXXX\Desktop\ADAM Rohdaten\MEM Makro\" ' Mein Pfad zur Zieldatei "Dokumentation"
ZName = "[Test_Makro20221020_Dokumentation_QuickWin_Test_Datenblatt.xlsm]" ' Mein Name der Zieldatei "Dokumentation"
ZSheet = "Dokumentation QuickWin Test" ' Das Zielsheet in der Datei "Dokumentation"
Dim rFinde1 As Range, rSuche1 As Range ' Variablendeklaration
Dim strFirst1 As String
Dim lngReihe1 As Long, lngLetzte1 As Long
Dim I1 As Integer
'Suchen nach der letzten Zeile in "Dokumentation"
With Sheets(ZPath & ZName & ZSheet) ------------Ab hier bleibe ich schon hängen, mit dem Fehler Laufzeitfehler '9' Index außerhalb des gültigen Bereichs----------
lngLetzte1 = IIf(IsEmpty(.Cells(Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count) ' letzte volle Zeile in Sheet "Dokumentation QuickWin Test" ermitteln, da stehen die Suchwerte in den Spalten von Spalte D
End With
Set rFinde1 = Sheets(QSheet).Range("A:A") ' in Spalte A Sheet "Meldung" Datei "Datenexport (1)", stehen die zu vergleichenden Werte
With Sheets(ZPath & ZName & ZSheet)
For I1 = 1 To lngLetzte1 ' Suchschleife, da ja mehr als nur ein Suchwert (Wird bei einem Exklusiven, nur einmal vorhandenen Wert wohl nicht so benötigt, aber wie muss er dann aussehen?)
Set rSuche1 = rFinde1.Find(What:=.Cells(I1, 2), LookAt:=xlWhole) ' .cells.. ist der jeweilige Suchwert
If rSuche1 Is Nothing Then ' wenn, was gefunden wurde
Ich denke wenn der Anfang funktioniert und die Oben genannten Abfragen (Vorhanden /Nicht vorhanden) mit den ersten Kopierfunktionen klappen, kann ich den Rest schon irgendwie einfügen.
Übrigens: Die Meldungsnummern können nur einmal vorhanden sein.
Evtl. Kann mir auch jemand eine "Einfache "Abfrage erstellen, die ich auch verstehen kann.
Oder mir die Abfrage (später) mit Kommentaren versehen, damit ich genau verstehe was dort in der Zeile passiert.
Dann kann ich auch beim nächsten mal die Abfragen besser verstehen und selbst anpassen.
Ich hoffe das das jetzt nicht zu viel verlangt ist und es nicht zu Frech klingt.
Ich finde es immer wieder toll, was ihr realisieren könnt, und möchte es auch verstehen.
Danke
Leider stehen in der Quelle die Daten von verschiedenen Zeiten (z.B.: ab 01.09.2022).
In meiner Auswertung stehen zum Teil die Daten drin, zum Teil auch nicht.
Deshalb kann ich zwar nach dem Datentyp innerhalb der Quelltabelle (ThisWorkbook.ActiveSheet) (Datenexport (1)) suchen und Filtern, aber was bereits in der Dokumentation steht leider nicht.
Da muss ich nachschauen was schon vorhanden ist und was nicht.
Wenn etwas vorhanden ist muss ich das ja auch nicht einfach ignorieren, sondern muss dann in der Spalte "Letzte Änderung" jeweils nachgeschaut werden ob sich etwas verändert hat.
Und zu guter Letzt passen die Spalten nicht in der Reihenfolge der beiden Tabellen zusammen.
leider habe ich deine Suchfunktion nur zum Teil verstanden, sodass ich sie leider nicht anpassen kann.
Ich werde aber versuchen sie zu verstehen.
Ich dachte es gibt eine einfache, für mich verständliche ganz einfache Suchfunktion für Anfänger.
Ich versuche einmal einen Ablauf zu erstellen.
Ich hoffe ich kann damit etwas besser den Ablauf erklären.
Ich hoffe das ich wenn das Gerüst steht, ich die anderen Kopierfunktionen einfügen kann.
Wenn das letzte i durchlaufen = end Sub
Vielen Dank
Bernd

|