Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1448to1452
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
Inhaltsverzeichnis

csv-formatieren

csv-formatieren
01.10.2015 10:48:24
svenja
Liebes Forum,
ich habe ein Makro geschrieben, durch das die Daten aus einer .csv-Datei nach gewünschten Spalten verschoben werden:
1. die ursprunglichen Datensätze von jeweiligen Spalten in der csv-Datei sind z.B.:
A: "NCR-ID"
B: der Wert von "NCR-ID"
C: "Name"
D: der Wert von "Name"
E: "Datum"
F: der Wert von "Datum"
.
.
.
2. Nun werden die Definitionsspalten A, C, E...gelöscht, und die Werte von diesen Definition in anderen Spalten (bleiben aber erstmal in dieser Datei) verschoben werden, sodass diese Werte in einer richtigen (gewünschten) Reihenfolge stehen, kopiert werden können und in eine andere Excel-Liste eingefügt werden können.
Genaue Verschiebrichtungen möchte ich wie folgt:
die Werte von Spalte () nach Spalte () verschieben (ausschneiden & einfügen)
B --> G
D --> M
F --> N
H --> D
J --> E
L --> H
N --> I
P --> L
R --> O
T --> P
V --> Q
X --> R
Z --> S
AB --> C
AD --> J
Mein Makro ist so:

Sub csvformatieren()
Range("A:A,C:C,E:E,G:G,I:I,K:K,M:M,O:O,Q:Q,S:S,U:U,W:W,Y:Y,AA:AA,AC:AC,AE:AE").Select
Selection.Delete Shift:=xlToLeft
Cells.Select
Cells.EntireColumn.AutoFit
Range("A:A").Select
Selection.Insert Shift:=xlToRight
Selection.Insert Shift:=xlToRight
Range("D:E").Select
Selection.Cut
Range("K:K").Select
Selection.Insert Shift:=xlToRight
Range("F:F").Select
Selection.Insert Shift:=xlToRight
Range("Q:Q").Select
Selection.Cut
Range("G:G").Select
Selection.Insert Shift:=xlToRight
Range("H:I").Select
Range("R:R").Select
Selection.Cut
Range("J:J").Select
Selection.Insert Shift:=xlToRight
Range("H:I").Select
Range("K:K").Select
Selection.Insert Shift:=xlToRight
End Sub
Das ist aber die dumme Lösung. Könnte jemand dabei helfen, um das Makro kompakter zu schreiben?
Vielen Dank schonmal im Voraus!
lg
Svenja

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: csv-formatieren
01.10.2015 11:13:11
Armin
Hallo Svenja,
es wäre einfacher Du lädst eine csv-Datei und ein Excel-Sheet hoch wie es ausschauen soll, dann kann man das gleich beim importieren an die richtige Stelle schreiben. Wichtig ist noch wo sind die csv gespeichert im gleichen Verzeichnis oder in einem Verz. darunter oder ganz wo anders. Evtl. auch dynamisch in verschieden Verzeichnissen?
Gruß Armin

AW: csv-formatieren
01.10.2015 13:26:56
svenja
Hallo Armin,
gerade hatte ich Text unter falschem Beitrag geschrieben...hier nochmal:
eine csv-Datei kann nicht hochgeladen werden, deshalb habe ich die Daten in eine normale excel-Datei rein kopiert:
https://www.herber.de/bbs/user/100525.xlsx
Die Werte jeweiliger Definition aus dieser Datei müssen nun mit einer richtigen Reihenfolge in folgender Infoliste eingefügt werden:
https://www.herber.de/bbs/user/100526.xlsx
Die csv können erstmal im Verzeichnis darunter gespeichert und später die ganze Zeile kopiert bzw. nach der Infoliste eingefügt werden. Etwas kompakter habe ich das Makro wie folgt geändert:
Sub csvformatieren()
Range("A:A,C:C,E:E,G:G,I:I,K:K,M:M,O:O,Q:Q,S:S,U:U,W:W,Y:Y,AA:AA,AC:AC").Select
Selection.Delete Shift:=xlToLeft
Cells.Select
Cells.EntireColumn.AutoFit
Range("A:A").Select
'Leerzeile Einfügen
Selection.Insert Shift:=xlToRight
'Leerzeile Einfügen
Selection.Insert Shift:=xlToRight
With .activepage
.Cells(2, "G") = Cells.Offset(1, "C")
.Cells(2, "M") = Cells.Offset(1, "D")
.Cells(2, "N") = Cells.Offset(1, "E")
.Cells(2, "D") = Cells.Offset(1, "F")
.Cells(2, "E") = Cells.Offset(1, "G")
.Cells(2, "H") = Cells.Offset(1, "H")
.Cells(2, "I") = Cells.Offset(1, "I")
.Cells(2, "L") = Cells.Offset(1, "J")
.Cells(2, "O") = Cells.Offset(1, "K")
.Cells(2, "P") = Cells.Offset(1, "L")
.Cells(2, "Q") = Cells.Offset(1, "M")
.Cells(2, "R") = Cells.Offset(1, "N")
.Cells(2, "S") = Cells.Offset(1, "O")
.Cells(2, "C") = Cells.Offset(1, "P")
.Cells(2, "J") = Cells.Offset(1, "Q")
End With
End Sub
Aber es funktioniert nicht richtig mit dem "With" Operator. Kannst Du bitte darum helfen?
lg
Svenja

Anzeige
AW: csv-formatieren
01.10.2015 17:11:55
Armin
Hallo Svenja,
nach meinen Gefühl fehlt noch etwas. Was ist mit den Spalten A bis D und dann die Leerspalten sind die in der csv als leere ";;" vorhanden? Ich brauche eine genaue Zuordnung Reihenfolge csv - Reihenfolge Excel-Sheet. Was für einen Feldtrenner wird in der csv verwendet (meißt ;)?
Übrigens wenn Du die Dateien zip's kannst Du alles hochladen.
Gruß Armin

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige