Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1944to1948
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
2 Dateien zusammenfügen
28.08.2023 10:56:25
MomoCJ
Hallo,

ich habe 2 Dateien die immer gleich erstellt werden. Aber sie haben zueinander ein unterschiedliches Format. Dennoch sollen die Dateien in einer neuen Exceldatei via Makro zusammengefügt werden. Es handelt sich dabei um Bankdaten. Die eine Datei hat nur die Reihe Betrag, die andere hat den Betrag in Soll und Haben Reihen aufgeteilt, was das ganze nochmal erschwert. Es soll so gesehen eine neue Datei mit Einzelüberschriften entstehen, die die CSV-Dateien selbständig einliest, 4 Informationsreihen einfügt und dann die nächste Datei einliest. Ist das unter den Voraussetzungen überhaupt möglich?

Danke und LG
Monika L.

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nachfrage
28.08.2023 11:05:53
UweD
Hallo

Wie soll das zuordnen der Datensätze erfolgen?
Oder sind die dazugehörenden Sätze in beiden Dateien in der gleichen Reihenfolge und auch gleich viele Sätze?


Kannst du Musterdateien hochladen? und dein händisches Wunschergebnis

LG
Nachfrage
28.08.2023 11:13:49
MomoCJ
Die Datei ist hochgeladen, hoffe das hilft weiter, sind Ausschnitte aus den Dateien
Nachfrage
28.08.2023 12:23:44
MCO
Hallo Momo!

Aufgrund der Ansichten in der Datei konnte ich dir was basteln jedoch nicht testen. Die SWIFT hab ich der 2ten Datei auch nicht identifiziert.
Die Kommentare stehen mit drin, versuch mal, ob du klarkommst.

Sub Bankdaten_zusammenfügen()


Dim datei As Workbook
Dim sh As Worksheet
Dim Bewegung As Range
Dim twb As Workbook
Dim z_sh As Worksheet

Set twb = ThisWorkbook
Set z_sh = twb.ActiveSheet

Set datei = Workbooks("Datei1") 'Pfad von Datei
datei.Open
Set sh = datei.Sheets(1) 'ggf. Sheet-Nummer anpassen

Set sh = ActiveSheet

Z = 24 'erste Zeile im Zielsheet, anpassen
'_____________________________________________________
For Each Bewegung In sh.Range("B:B").SpecialCells(xlCellTypeConstants, xlNumbers)
z_sh.Cells(Z, 1) = sh.Cells(Bewegung.Row, "A")
z_sh.Cells(Z, 2) = sh.Cells(Bewegung.Row, "N")
z_sh.Cells(Z, 3) = sh.Cells(Bewegung.Row, "E")
z_sh.Cells(Z, 4) = sh.Cells(Bewegung.Row, "O")
Z = Z + 1 'Zähler
Next Bewegung
datei.Close 0 'Schließen ohne speichen
'_____________________________________________________

Set datei = Workbooks("Datei2") 'Pfad von Datei
datei.Open
Set sh = datei.Sheets(1) 'ggf. Sheet-Nummer anpassen
'_____________________________________________________
For Each Bewegung In sh.Range("B:B").SpecialCells(xlCellTypeConstants, xlNumbers)
z_sh.Cells(Z, 1) = sh.Cells(Bewegung.Row, "F")
z_sh.Cells(Z, 2) = "?" 'sh.Cells(Bewegung.Row, "N")
z_sh.Cells(Z, 3) = sh.Cells(Bewegung.Row, "E")
z_sh.Cells(Z, 4) = sh.Cells(Bewegung.Row, "L")
Z = Z + 1 'Zähler
Next Bewegung
datei.Close 0 'Schließen ohne speichen
'_____________________________________________________
Set sh = Nothing
Set z_sh = Nothing
Set twb = Nothing
Set datei = Nothing
End Sub


Gruß, MCO
Anzeige
Nachfrage
28.08.2023 12:46:25
MomoCJ
Hallo MCO,

zunächst einmal Danke für deine Mühe. Der Pfad macht aber noch Probleme, wie muss dieser richtig eingetragen werden? Nur bis zum Ordner wo die Datei liegt oder mit Bezeichnung? Ist es egal das es sich um CSV Dateien handelt, weil da workbook steht?

Danke nochmal im Voraus.

LG
Nachfrage
28.08.2023 12:48:50
MCO
Hi!

Da muss der komplette Pfad inkl. Datei rein.
Da csv kompatibel ist, müsste es auf jeden Fall klappen. Ansonsten kannst du den Teil ja mal als Makro aufzeichnen und dir anschauen...

Gruß, MCO
Nachfrage
28.08.2023 12:58:24
MomoCJ
Ah ok, Danke dir, kann es sein das ein Verzeichnis im Pfad mit Leerzeichen im Namen Probleme macht?

LG
Anzeige
workbook.open
28.08.2023 13:19:33
MCO
Möglicherweise hab ich dir eine falsche Methode aufgeschwatzt *Hüstel*

Probier es mal nach folgendem Schema

    Set datei = Workbooks.Open("Datei1")  'Pfad von Datei in Anführungszeichen

Set sh = datei.Sheets(1) 'ggf. Sheet-Nummer anpassen


Unten auch korrigieren!

Gruß, MCO
workbook.open
29.08.2023 08:07:22
MomoCJ
Guten Morgen,
Vielen Dank, jetzt klappt das schonmal, aber er meckert über :

For Each Bewegung In sh.Range("B:B").SpecialCells(xlCellTypeConstants, xlNumbers)

mit Laufzeitfehler '1004' Keine Zellen gefunden. Woran kann das liegen?

Danke und LG
Monika
Anzeige
workbook.open
29.08.2023 09:03:03
MomoCJ
Hallo,
Noch zum Verständnis: Wenn ich es richtig sehe, hat die CSV-Datei ja alle Daten in der ersten Spalte mit Semikolon getrennt. Das Makro wäre doch jetzt auf eine normale Excel-Tabelle ausgelegt, oder nicht? Kann er da überhaupt die Zellen und Spalten usw. finden? Muss er nicht erst die CSV als XLS öffnen und kompilieren?

Lieben Dank im Voraus.

Monika L.
workbook.open
29.08.2023 09:38:15
Rudi Maintaire
Hallo,
alle Daten in der ersten Spalte mit Semikolon getrennt.
da klappt was mit der Konvertierung nicht.
Versuch's mal mit
Set datei = Workbooks.Open(FileName:="Datei1", Local:=True)


Gruß
Rudi
Anzeige
workbook.open
29.08.2023 10:42:32
MomoCJ
Hallo Rudi,

Vielen lieben Dank, das hat funktioniert. Jetzt habe ich noch ein weiteres Problem:
Die Datei 2 hat 2 Spalten mit Betrag aufgeteilt in Soll und Haben. Diese Spalten sollen wie folgt zusammengefasst werden: Wenn Spalte Soll gefüllt ist, kopiere dieses, Sonst kopiere Spalte Haben in die Spalte X. Ist auch das möglich?

Danke im Voraus
LG
Momo
workbook.open
30.08.2023 08:55:36
MomoCJ
P.S. die beiden Spalten müssten solange nach befüllt abgefragt werden bis die Datei ans Ende kommt, weil immer eine der beiden Spalten nur befüllt ist. Sieht man glaube ich auch in der Beispieldatei.
workbook.open
30.08.2023 09:12:39
Rudi Maintaire
Hallo,
sicher geht das

If sh.Cells(Bewegung.Row, "P")>"" then

z_sh.Cells(Z, 4) = sh.Cells(Bewegung.Row, "P")
Else
z_sh.Cells(Z, 4) = sh.Cells(Bewegung.Row, "Q")
End If


Gruß
Rudi
Anzeige
workbook.open
30.08.2023 11:36:30
MCO
Moin!

Da ja immer nur eine Spalte gefüllt ist, kann man sogar ganz ohne Bedingung einfach verknüpfen:

 z_sh.Cells(Z, 4) = sh.Cells(Bewegung.Row, "P") & sh.Cells(Bewegung.Row, "Q")


Gruß, MCO
workbook.open
30.08.2023 13:08:36
MomoCJ
Hallo,


ganz lieben Dank für die Hilfe.

Hat alles geklappt.

Danke LG
Momo

108 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige