19.04.2022, 13:16
(Dieser Beitrag wurde zuletzt bearbeitet: 19.04.2022, 13:39 von lorwagner12.)
Hallo Leute, ich brauche eure Hilfe. Ich soll einen Prozess für die Arbeit automatisieren, mit einem aufgenommen Makro geht es aber leider nicht. Daher richte mich an euch, die Community, in der Hoffnung, dass ihr mir helfen könnt (mit VBA). Ich muss zwei Dateien vergleichen und bei einer Übereinstimmung soll ein bestimmter Wert aus einer bestimmten Zelle ausgespuckt werden. Die beiden Dateien habe ich angehangen. Die eine Datei (Schweben.xslx) ändert sich jeden Tag (also die Anzahl der Zeilen), der VBA-Code solle also automatisch die Länge der Datei erkennen und alle Zeilen bis zum Ende abarbeiten können. Die Datei (Rest.xlsx) ändert sich einmal im Monat. Die Daten in den Dateien sind abgeändert und in der Wirklichkeit viel länger. Auch die Dateinamen habe ich abgeändert, es wäre also sehr nett, wenn ihr mir dann erklären könntet, an welcher Stelle des Codes ich dann denn jeweiligen Dateienname/Dateienpfad ändern muss. Der Code soll folgendes tun können.
1) Die Ausgangsdatei ist die Schwebe.xlsx. Zunächst soll die Spalte H (Nominal (offen)) in Tabelle 1 in die Spalte A in die neu erstellte Tabelle 2 kopiert und eingefügt werden. Die Spalte E (ISIN) soll in Spalte B der Tabelle 2 kopiert werden. (Ohne Überschriften)
2) Anschließend soll die Spalte K (Nominal) der Tabelle 1 (Rest.xlsx) in die Spalte F der Tabelle 2 der Schweben.xlsx kopiert werden. (Ohne Überschrift)
3) Das Gleiche für die Spalte H der Rest.xlsx. Diese soll in Spalte G der Tabelle 2 der Schweben.xlsx kopiert werden. (Ohne Überschrift) Diese Spalte soll nun etwas angepasst werden. Es soll der "Befehl" --> Daten --> Text in Spalten --> Feste Breite --> dann ans Ende der ISIN-Werte schieben --> und Fertigstellen.
4) Nun wird die Spalte D der Rest.xlsx in die Spalte J der Tabelle 2 der Schwebe.xlsx kopiert werden.
5) Nun passiert der Vergleich. Der Grundbefehl schaut in etwa so aus:
=IFERROR(INDEX(J1:J26;MATCH(A1:A19&B1:B19;F1:F26&G1:G26;0));"Keine Übereinstimmung")
Dieser Befehl sollte wie oben bereits erwähnt, sich automatisch an die Länge der Spalten anpassen und immer alles abgleichen. Dieser Befehl soll in Spalte C ausgeführt werden.
6) Als letzter Schritt sollten alle Werte der Spalte C, die ungleich des IFERROR-Wert-Wenn-Fehler sind, automatisch kopiert werden und in eine neue erstellte Datei kopiert werden, die der User manuell dann benennen und abspeichern kann.
Ich freue mich über jede Hilfe. Danke im Voraus
Cross-Post: https://www.ms-office-forum.net/forum/sh...ost2069632
1) Die Ausgangsdatei ist die Schwebe.xlsx. Zunächst soll die Spalte H (Nominal (offen)) in Tabelle 1 in die Spalte A in die neu erstellte Tabelle 2 kopiert und eingefügt werden. Die Spalte E (ISIN) soll in Spalte B der Tabelle 2 kopiert werden. (Ohne Überschriften)
2) Anschließend soll die Spalte K (Nominal) der Tabelle 1 (Rest.xlsx) in die Spalte F der Tabelle 2 der Schweben.xlsx kopiert werden. (Ohne Überschrift)
3) Das Gleiche für die Spalte H der Rest.xlsx. Diese soll in Spalte G der Tabelle 2 der Schweben.xlsx kopiert werden. (Ohne Überschrift) Diese Spalte soll nun etwas angepasst werden. Es soll der "Befehl" --> Daten --> Text in Spalten --> Feste Breite --> dann ans Ende der ISIN-Werte schieben --> und Fertigstellen.
4) Nun wird die Spalte D der Rest.xlsx in die Spalte J der Tabelle 2 der Schwebe.xlsx kopiert werden.
5) Nun passiert der Vergleich. Der Grundbefehl schaut in etwa so aus:
=IFERROR(INDEX(J1:J26;MATCH(A1:A19&B1:B19;F1:F26&G1:G26;0));"Keine Übereinstimmung")
Dieser Befehl sollte wie oben bereits erwähnt, sich automatisch an die Länge der Spalten anpassen und immer alles abgleichen. Dieser Befehl soll in Spalte C ausgeführt werden.
6) Als letzter Schritt sollten alle Werte der Spalte C, die ungleich des IFERROR-Wert-Wenn-Fehler sind, automatisch kopiert werden und in eine neue erstellte Datei kopiert werden, die der User manuell dann benennen und abspeichern kann.
Ich freue mich über jede Hilfe. Danke im Voraus
Cross-Post: https://www.ms-office-forum.net/forum/sh...ost2069632