Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Bestimmte Daten aus einer Textdatei in Excel importieren

Frage Microsoft Microsoft Office

Mitglied: phiamabi

phiamabi (Level 1) - Jetzt verbinden

06.04.2012, aktualisiert 11:08 Uhr, 7253 Aufrufe, 13 Kommentare

Ich habe von einem Kollegen viele Textdateien mit automatisch aufgenommen Messwerten erhalten und soll nun ganz bestimmte Werte für ihn in eine Excel-Datei übertragen.

Vorweg,
die Messdaten sehen wie folgt aus:
01.
4294A REV1.04 
02.
"DATE: Apr  2 2012" 
03.
 
04.
 
05.
"MEASURE PARAMETER: Ls - Q" 
06.
"ADAPTER: 4TP 1M" 
07.
"SWEEP TYPE: LIN FREQ" 
08.
"NUMBER of POINTS: 201" 
09.
"POINT DELAY TIME:  0 Sec" 
10.
"SWEEP DELAY TIME:  0 Sec" 
11.
"OSC LEVEL:  500 mVolt" 
12.
"DC BIAS: OFF" 
13.
"BW: 1" 
14.
"SWEEP AVERAGING: OFF" 
15.
"POINT AVERAGING: OFF" 
16.
 
17.
 
18.
"TRACE: A" 
19.
"FORMAT: LINEAR" 
20.
 
21.
"Frequency"	"Data Trace Real"	"Data Trace Imag" 
22.
1.00000000000e+04	8.121696e-03	0.000000e+00 
23.
1.49500000000e+04	8.122306e-03	0.000000e+00 
24.
[snip] 
25.
9.95050000000e+05	-1.021725e-03	0.000000e+00 
26.
1.00000000000e+06	-1.010053e-03	0.000000e+00 
27.
 
28.
 
29.
"TRACE: B" 
30.
"FORMAT: LINEAR" 
31.
 
32.
"Frequency"	"Data Trace Real"	"Data Trace Imag" 
33.
1.00000000000e+04	9.817833e+00	0.000000e+00 
34.
1.49500000000e+04	9.107464e+00	0.000000e+00 
35.
[snip] 
36.
9.95050000000e+05	8.461501e+01	0.000000e+00 
37.
1.00000000000e+06	7.351902e+01	0.000000e+00


Die einzelnen Daten sind durch ein Tabulator getrennt.
Ich soll jetzt die Punkte durch Komma ersetzen (das wäre mit einem Texteditor mit suchen und ersetzen ja gar kein Problem.)
und Ich soll das jetzt wie Folgt in Excel übertragen.

L10kHz | L125kHz | Q10kHz | Q125kHz |
zweiter Wert aus Zeile 22 | zweiter Wert aus Zeile 45 | zweiter Wert aus Zeile 229 | zweiter Wert aus Zeile 252 | (aus Datei 1)
zweiter Wert aus Zeile 22 | zweiter Wert aus Zeile 45 | zweiter Wert aus Zeile 229 | zweiter Wert aus Zeile 252 | (aus Datei 2)
zweiter Wert aus Zeile 22 | zweiter Wert aus Zeile 45 | zweiter Wert aus Zeile 229 | zweiter Wert aus Zeile 252 | (aus Datei 99)
Also aus der Spalte "Data Trace Real"...

Die |-Striche sind immer ein neues Excel Feld.

Und das ganze mit ca. 100 Dateien. Wenn ich das von Hand mache bin ich da ja ewig beschäftigt. Deshalb hat mir ein Kollege aus der IT geraten hier nachzufragen... Ach ja die Dateinamen sind einigermaßen logisch aufgebaut. Es kommt immer S + fortlaufende Zahl + NH.txt
Beispiel: S00NH.TXT dann S01NH.TXT, ... , S99NH.TXT

Wäre echt super wenn jemand ein Programm kennt mit dem man so was automatisch machen kann.

Grüße
Maria
Mitglied: bastla
06.04.2012 um 11:48 Uhr
Hallo phiamabi und willkommen im Forum!

Auf die Schnelle könntest Du folgendes VBScript (auch in Excel als VBA möglich) verwenden, um die entsprechenden Daten in einer CSV-Datei (die sich dann in Excel importieren lässt) zu sammeln:
01.
Quelle = "D:\Messdaten" 'Ordner, der nur die S??NH.TXT-Dateien enthält 
02.
Ziel = "D:\Messdaten.csv" 
03.
Zeilen = Array(22,45,229,252) 'Zeilennummern in den Quelldateien 
04.
Feld = 2 'FeldNummer in den Quelldaten 
05.
Delim = ";" 'Trennzeichen in der Zieldatei 
06.
 
07.
Set fso = CreateObject("Scripting.FileSystemObject") 
08.
 
09.
For Each File In fso.GetFolder(Quelle).Files 
10.
    DatenEin = Split(File.OpenAsTextStream.ReadAll, vbCrLf) 
11.
    DatenSatz = fso.GetBaseName(File.Name) 
12.
    For Each Zeile In Zeilen 
13.
        DatenSatz = DatenSatz & Delim & Split(DatenEin(Zeile - 1), vbTab)(Feld - 1) 
14.
    Next 
15.
    DatenAus = DatenAus & vbCrLf & DatenSatz 
16.
Next 
17.
fso.CreateTextFile(Ziel).Write Replace(Mid(DatenAus, 3), ".", ",") 'Punkt durch Komma ersetzen und in Datei schreiben
Grüße
bastla

[Edit] Dateiname wird jetzt als Feld 1 in die CSV-Datei geschrieben [/Edit]
Bitte warten ..
Mitglied: 106009
06.04.2012 um 12:28 Uhr
Hallo und willkommen im Forum.

Da hätte ich als Alternative zu bastlas Vorschlag eine Batchlösung anzubieten, das soll keine Wertung sein!

01.
@echo off 
02.
Set ExcelLine= 
03.
Set "OutputFile=output.csv" 
04.
Set "Trenner=;" 
05.
 
06.
del %Outputfile% 2>nul 
07.
 
08.
Set "Line1=22" 
09.
Set "Line2=45" 
10.
Set "Line3=229" 
11.
Set "Line4=252" 
12.
 
13.
for /f %%a in ('dir /b S??NH.TXT') do set /a Count=0 & for /F "tokens=2" %%b in (%%a) do call :process %%a %%b 
14.
goto :eof 
15.
 
16.
 
17.
:Process 
18.
set /a count+=1 
19.
for %%x in (%line1% %line2% %line3% %line4%) do if %%x EQU %count% call :put %1 %2 
20.
goto :eof 
21.
 
22.
:put 
23.
Set "Filename=%1" 
24.
Set wert=%2 
25.
set "wert=%wert:.=,%" 
26.
if [%count%]==[%Line1%] (set "ExcelLine=%1%trenner%%wert%") else (set "ExcelLine=%ExcelLine%%trenner%%wert%") 
27.
if [%count%]==[%Line4%] @echo %ExcelLine% >> %OutputFile% 
28.
goto :eof 
29.
 
Gruß
Bitte warten ..
Mitglied: bastla
06.04.2012 um 13:23 Uhr
@106009

Als Alternative zum "selber zählen" böte sich ein "findstr /n" an - schematisch etwa (da nur 4 Zeilen betroffen gleich ohne zusätzliche Schleife):
01.
for /f %%a in ('dir /b S??NH.TXT') do call :process "%%a" 
02.
... 
03.
:process 
04.
set "ExcelLine=" 
05.
for /f "tokens=1* delims=:" %%b in ('findstr /n "^" %1^|findstr /b "22: 45: 229: 252:) do call :put "%%c" 
06.
...
Grüße
bastla
Bitte warten ..
Mitglied: 106009
06.04.2012 um 13:36 Uhr
@bastla

danke für den Tipp, ich muss mich wohl etwas mehr mit findstr beschäftigen.

Hast du keinen Tipp, wie man das Brett vor dem Kopf bzw. die Knöpfe vor den Augen dauerhaft entfernen kann? Fast eine Stunde habe ich zu obigen Zeilen nach einem Fehler gesucht und immer wieder einen Buchstabendreher überlesen. Und dann noch an der falschen Stelle @echos eingefügt, um dem auf die Spur zu kommen *grrrr*

Gruß
Bitte warten ..
Mitglied: bastla
06.04.2012 um 16:44 Uhr
Hallo ollidolli!
Hast du keinen Tipp, wie man das Brett vor dem Kopf bzw. die Knöpfe vor den Augen dauerhaft entfernen kann?
Da hilft nur üben, üben, üben - und auch dann schafft man's noch oft genug, die seltsamsten Fehler einzubauen und konsequent drinnen zu lassen ...

Grüße
bastla
Bitte warten ..
Mitglied: phiamabi
06.04.2012 um 17:20 Uhr
Vielen Dank für euere Antworten.
Leider kommt bei mir immer eine Meldung - Datei nicht gefunden.

@bastla
Mit dem Schnipsel kann ich leider gar nichts anfangen.
Könntest du mir das einbauen?
Bitte warten ..
Mitglied: phiamabi
06.04.2012 um 17:23 Uhr
In welcher Reihenfolge werden denn die Dateien dann eingelesen?
Es sollte so sein dass die Werte aus der 00 Datei ganz oben stehen und die 99 ganz unten.
Auf keinen Fall darf etwas vertauscht werden...

Schöne Ostern
Bitte warten ..
Mitglied: bastla
06.04.2012 um 17:27 Uhr
Hallo phiamabi!
Könntest du mir das einbauen?
Was soll ich wo einbauen?

Du musst doch nur:
  • alle Textdateien in einen Ordner legen
  • den Pfad zu diesem Ordner in Zeile 1 anstelle von "D:\Messdaten" eintragen
  • in Zeile 2 einen Dateinamen (inkl Pfad) für die zu erstellende CSV-Datei angeben
  • das Script (mit dem Dateityp .vbs) speichern
  • das gespeicherte Script doppelklicken
  • die entstandene CSV-Datei doppelklicken (sollte dann mit Excel geöffnet werden) oder selbst von Excel aus öffnen

Grüße
bastla
Bitte warten ..
Mitglied: bastla
06.04.2012 um 17:30 Uhr
Hallo phiamabi!
Auf keinen Fall darf etwas vertauscht werden...
Ich ergänze oben das Script so, dass in die CSV-Datei noch der Dateiname geschrieben wird - dann kannst Du in Excel danach sortieren ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
06.04.2012 um 17:39 Uhr
... bzw als weitere Alternative (setzt aber voraus, dass es tatsächlich alle Dateien von "00" bis "99" gibt):
01.
Quelle = "D:\Messdaten" 'Ordner, der die S??NH.TXT-Dateien enthält 
02.
Ziel = "D:\Messdaten.csv" 
03.
Zeilen = Array(22,45,229,252) 'Zeilennummern in den Quelldateien 
04.
Feld = 2 'FeldNummer in den Quelldaten 
05.
Delim = ";" 'Trennzeichen in der Zieldatei 
06.
 
07.
Set fso = CreateObject("Scripting.FileSystemObject") 
08.
 
09.
DatenAus = "Dateiname" & Delim & "L10kHz" & Delim & "L125kHz" & "Q10kHz" & "Q125kHz" 'Kopfzeile 
10.
If Right(Quelle, 1) <> "\" Then Quelle = Quelle & "\" 
11.
 
12.
For i = 100 To 199 
13.
    FileName = "S" & Right(i, 2) & "NH" 'Dateinamen mit laufender Nr erstellen 
14.
    DatenSatz = FileName 
15.
    DatenEin = Split(fso.OpenTextFile(Quelle & FileName & ".TXT").ReadAll, vbCrLf) 
16.
    For Each Zeile In Zeilen 
17.
        DatenSatz = DatenSatz & Delim & Split(DatenEin(Zeile - 1), vbTab)(Feld - 1) 
18.
    Next 
19.
    DatenAus = DatenAus & vbCrLf & DatenSatz 
20.
Next 
21.
fso.CreateTextFile(Ziel).Write Replace(DatenAus, ".", ",") 'Punkt durch Komma ersetzen und in Datei schreiben
Auch hier werden zusätzlich die Dateinamen (ohne Typ) in die CSV-Datei geschrieben. Außerdem wird jetzt auch die Kopfzeile erzeugt.

Grüße
bastla
Bitte warten ..
Mitglied: phiamabi
06.04.2012 um 20:42 Uhr
Vielen Dank, aber hast du das getestet?
Ich bekomme leider eine Fehlermeldung mit:

01.
Skript: C:\Users\Maria\Desktop\test\test.vbs 
02.
Zeile: 15 
03.
Zeichen: 5 
04.
Fehler: Die Datei wurde nicht gefunden. 
05.
Code: 800A0035 
06.
Quelle: Laufzeitfehler in Microsoft VBScript
Bitte warten ..
Mitglied: bastla
07.04.2012 um 00:14 Uhr
Hallo phiamabi!

Wie soll ich denn testen, ob die Dateien bei Dir tatsächlich in dem Pfad liegen, den Du (hoffentlich inzwischen) in Zeile 1 eingetragen hast, und ob sie tatsächlich nach dem Muster "S00NH.TXT" benannt (und bei Verwendung der zweiten Variante vollzählig) sind?

Grüße
bastla
Bitte warten ..
Mitglied: phiamabi
10.04.2012 um 07:51 Uhr
Jetzt funktioniert es. Keine Ahnung warum.
Im Geschäft habe ich WindowsXP zuhause beim testen Windows7.

Naja egal. Arbeit erledigt - der Ing. wird sich freuen

Vielen Dank!
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
VB for Applications
Bestimmte Daten aus eine CSV-Datei in eine Excel-Tabelle importieren (2)

Frage von MariaElena zum Thema VB for Applications ...

Batch & Shell
CSV-Datei nach Excel importieren (5)

Frage von mrvfbnummer2 zum Thema Batch & Shell ...

Batch & Shell
gelöst HTML-Seiten öffnen und bestimmte Daten auslesen (1)

Frage von makroll10 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (14)

Frage von liquidbase zum Thema Windows Update ...

DSL, VDSL
Problem mit variernder Internetgeschwindigkeit (12)

Frage von schaurian zum Thema DSL, VDSL ...