suvv7777
Goto Top

Textdatei in Excel importieren - Pro Zeile eine Excel-Spalte

Hallo zusammen,

ich stehe vor folgender Aufgabe:

ich habe eine Textdatei, die Datensätze enthält, die wie folgt aussehen (Beispiel):

Name
Vorname
Telefonnummer
Schuhgröße
Gehalt
Name
Vorname
Telefonnummer
Schuhgröße
Gehalt
Name
Vorname
Telefonnummer
Schuhgröße
Gehalt

usw.

Ich hätte nun gerne eine Excel Datei, die jede txt-Zeile in eine Zelle einfügt, die ersten 5 nebeneinander, und dann wieder von vorne, so dass ich dann pro Attribut genau eine Spalte habe.

Es soll dann ungefähr so aussehen:
6dccc17c446d572779f048faa1b075ed

Schön wäre, wenn dies in Excel 2003 möglich wäre. Zur Not ginge auch 2010.

Vielen Dank für eure Hilfe und liebe Grüße,

Chris

Content-ID: 170428

Url: https://administrator.de/contentid/170428

Ausgedruckt am: 22.11.2024 um 08:11 Uhr

kristov
kristov 26.07.2011 um 14:21:00 Uhr
Goto Top
Hallo,

lacht mich bitte nicht aus, aber ich würd das nach meiner Methode so machen:

  • Text in Word kopieren
  • Alle Zeilenumbrüche durch einen Strichpunkt ersetzen: Suchen nach ^13 ersetzen durch ; - wobei ^11 für einen geschützten Zeilenumbruch (Shift-Enter) dieses eckige Pfeilchen) steht, ^13 wäre die Absatzmarke (Enter, schaut aus wie der Buchstabe pi)
  • Nochmal eine Ersetzung, diesmal Suchen nach Gehalt; ersetzen durch Gehalt^13
  • das ganze als txt abspeichern
  • jetzt in Excel importieren

Bin mir sicher, daß das hier jemand eleganter gelöst kriegt face-wink

lg,
kristov
BigWim
BigWim 26.07.2011 um 14:26:00 Uhr
Goto Top
Moin,

ich würde mir die Textdatei vorformatieren. Mit dem beigefügten Script kannst Du Dir die entsprechende CSV-Datei basteln.

Viel Erfolg
Markus

@echo off & setlocal

Set AnzahlSpalten=5
Set Trennzeichen=;
Set Count=0
Set NameInputDatei=l2.txt
Set NameOutputdatei=l2.csv

if exist %NameOutputdatei% del %NameOutputdatei%

for /f %%z in (%NameInputDatei%)do call :Machwat %%z
goto :eof


:MachWat
Set Spalte=%1
Set /a Count=Count+1

if %Count% GTR %AnzahlSpalten% (
	echo %Zeile%
	echo %Zeile% >>%NameOutputdatei%
	Set Count=1
	Set Zeile=
)

if %Count% GTR 1 (
	Set Zeile=%Zeile%%Trennzeichen%%Spalte%
) else (
	Set Zeile=%Spalte%
)
TsukiSan
TsukiSan 26.07.2011 um 15:41:16 Uhr
Goto Top
man könnte (konjunktiv!) das ganze auch mittels VBS direkt nach Excel exportieren.
Beispiel:
Dim objXL
Dim FSO


Set FSO = CreateObject("Scripting.FileSystemObject")  
MeineDaten = Split(FSO.OpenTextFile("Datensatz.txt").ReadAll,vbcrlf)  

Set objXL = WScript.CreateObject("Excel.Application")  
objXL.Workbooks.Add
objXL.Visible = False

a = 1

For i = 0 to Ubound(MeineDaten) Step 5
	objXL.Cells(a,1).Value = MeineDaten(i)
	objXL.Cells(a,2).Value = MeineDaten(i + 1)
	objXL.Cells(a,3).Value = MeineDaten(i + 2)
	objXL.Cells(a,4).Value = MeineDaten(i + 3)
	objXL.Cells(a,5).Value = MeineDaten(i + 4)
	a = a + 1
Next

objXL.Visible = True

Aber wie geschrieben: Man(n) könnte....

Gruss
Tsuki
suvv7777
suvv7777 26.07.2011 um 15:58:06 Uhr
Goto Top
Das funktioniert leider nicht, da "Gehalt" ja nicht der Wert der Zelle ist. face-smile Aber danke für die Idee.
kristov
kristov 26.07.2011 um 16:02:17 Uhr
Goto Top
Zitat von @suvv7777:
Das funktioniert leider nicht, da "Gehalt" ja nicht der Wert der Zelle ist. face-smile Aber danke für die Idee.

Uh, oh, grober Denkfehler! Da stehen natürlich immer unterschiedliche Werte drin. So kann das natürlich nichts werden. Asche auf mein Haupt!
suvv7777
suvv7777 01.08.2011 um 15:11:11 Uhr
Goto Top
Vielen Dank für die mal wieder tolle und schnelle Hilfe! face-smile
TsukiSan
TsukiSan 01.08.2011 um 15:21:18 Uhr
Goto Top
Freud uns, wenn's klappt.
Eventuell verrätst du uns noch, wie du's nun realisiert hast, damit zukünftige Mitleser eventuell auch was lernen dabei.

Danke und Gruss
Tsuki