Hilfe bei Erstellung eines Skriptes mit VBA
#1
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


Angehängte Dateien
.xlsx   Rest.xlsx (Größe: 9,19 KB / Downloads: 2)
.xlsx   Schweben.xlsx (Größe: 9,09 KB / Downloads: 2)
Antworten Top
#2
Hola,
setzt du wenigstens dieses Mal den Hinweis auf das jeweilige andere Forum?
Gruß,
steve1da
Antworten Top
#3
Wenn du mir sagt wo ich des mache dann natürlich!
Antworten Top
#4
Guck in deinen letzten Thread hier oder im ms-office-forum. Dort habe ich das gemacht.
[-] Folgende(r) 1 Nutzer sagt Danke an steve1da für diesen Beitrag:
  • lorwagner12
Antworten Top
#5
Das habe ich bereits für Punkt 1:

Code:
Sub CopyRowE()
Dim LastRowE As Long
Dim LastRowH As Long
Dim LastDataRow As Long
Dim CopyData As Long

With Tabelle1

LastRowE = .Range("E9999").End(xlUp).Row
LastRowH = .Range("H9999").End(xlUp).Row

.Range("E2:E" & LastRowE).Copy
.Range("CA1").PasteSpecial
.Range("H2:H" & LastRowH).Copy
.Range("CB1").PasteSpecial

LastDataRow = .Range("CB999999").End(xlUp).Row
.Range("CA1:CB" & LastDataRow).Copy

Sheets.Add

ActiveSheet.Range("A1").PasteSpecial

.Range("CA1:CB" & LastDataRow).ClearContents

Tabelle1.Select
.Range("A1").Select

End With
End Sub

Habt ihr eine Idee für die anderen Punkt? Wie mache ich das selbe Spiel für eine andere Datei? Also für Daten außerhalb der originalen Datei?
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste