Top-Themen

Aktuelle Themen (A bis Z)

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 Matrix in Spalte umwandeln

Mitglied: caracol

caracol (Level 1) - Jetzt verbinden

15.09.2007, aktualisiert 16.09.2007, 6446 Aufrufe, 12 Kommentare

Hallo,

mein Problem besteht darin, dass ich eine *.spe Datei mit Messdaten auswerten soll. Nun
ist es so, dass ich von Programmierung leider absolut keine Ahnung habe, und das file,
wenn ich es mir im Editor, Excel oder Origin anschaue anstatt einer Spalte mit den Mess-
werten eine Matrix mit jewils 10 Messwerten in einer Reihe ist. Da es sich um viele Messwerte
(512) und sehr sehr viele Messungen (2000) handelt, würde ich nun gerne automatisch
aus der Matrix eine Spalte machen können. Nun kann ich mich nur noch wage daran
erinnern, dass man das wohl mit einer batch machen kann. Das file sieht im Editor
folgendermaßen aus:

$SPEC_ID:

$DATE_MEA:
05-16-191077 05:49:3
$MEAS_TIM:
399 673
$DATA:
0 511
252 280 400 167 262 288 274 339 497 492
425 247 580 1407 495 127 1322 1313 751 2053
8622 39998 39422 38345 36524 49740 93806 2441865 15734319 9529916
...
...
...
21 3 3 2 3 1 3 2 1 1
0 5

Dabei steht in der ersten Zeile unter $DATA, "0 511" für die 512 Kanäle, danach folgen die
512 Messwerte. Wie gesagt, ich habe absolut keine Ahnung von Programmierung, aber im
Prinzip sollte es doch eine eher einfache Sache sein, daraus ein file zu erstellen, das die 512
Messwerte in einer Spalte hat, so dass es sich dann später mit Excel und Origin auswerten
lässt. Falls mir irgendjemand sagen kann, wie ich das hin bekomme, wäre ich mehr als dankbar,
mir graut jetzt schon davor, das tatsächlich per Hand machen zu müssen. Danke schon mal und
Grüße,

Caracol
Mitglied: Biber
15.09.2007 um 21:54 Uhr
Moin caracol,

willkommen im Forum.
Nachfrage:
  • Messwerte stehen immer je max. 10 (oder weniger) in einer Zeile?
  • wie soll die Datei heißen?
  • Spaltenüberschrift?
  • folgen nach den Messwerten auch noch Zeilen mit Daten (Ende-Logeintrag)?

Grüße
Biber
Bitte warten ..
Mitglied: caracol
15.09.2007 um 22:04 Uhr
Hi,

es stehen immer genau 10 Werte in einer Zeile, außer in
der letzten Zeile da Stehen nur 2. Sieht also genau so aus
wie oben (nur natürlich 52 Zeilen). Wie die datei heißt
ist mir egal. Spaltenüberschrift brauche ich auch keine. Hinter
den Daten kommt nichts mehr. Es sieht wirklich alles so aus
wie oben, hab einfach aus dem Editor rauskopiert und dann
die zwischen Zeilen durch ... ersetzt. Im Prinzip bräuchte ich
nur ein file, in dem die 512 Werte untereinander stehen, den
Rest kriege ich dann selber hin.

Danke für die schnelle Antwort!

Grüße, Caracol
Bitte warten ..
Mitglied: bastla
15.09.2007 um 22:23 Uhr
Hallo caracol!

Willkommen auch von mir.

Eigentlich könnte der folgende Oneliner (direkt an der Befehlszeile eingegeben) schon ausreichen:
01.
for /f "skip=8 delims=" %i in (D:\Messungen.txt) do for %w in (%i) do (echo %w)>>D:\MesswerteEinzel.txt
Zur Verwendung in einer Batchdatei müsstest Du alle "%"-Zeichen verdoppeln.

Grüße
bastla
Bitte warten ..
Mitglied: caracol
15.09.2007 um 22:28 Uhr
Hi,

also wie gesagt, hab übergaupt keine Ahnung vom Programmieren,
das einzige was ich mal konnte war Qbasic. Also wie in den cmd prompt
komme weiß ich ja gerade noch. Jetzt geb ich da diesen oneliner von
Biber ein, gut. Aber wo wird da der Pfad der Datei eingegeben, wo wird sie hin
gespeichert? Ich weiß meine Fragen sind dumm, aber normalerweise
hab ich nur mit der analogen Welt zu tun.

Grüße,

Caracol
Bitte warten ..
Mitglied: Biber
15.09.2007 um 22:30 Uhr
Moin Caracol,

ich würde ja den folgenden Oneliner vom CMD-Prompt aus eingeben:
01.
for /f "delims=:" %%i in ('findstr /n /i "$data" messwerte.txt') do @For /f %%j in ('Set /a 1+%%i') do @for /f "delims=" %%k in ('more +%%j messwerte.txt') do @For %%l in (%%k) do @echo %%l
Aber wenn Du lieber einen Batch möchtest:
01.
::----Snipp Messwerte2Spalte.bat 
02.
@for /f "delims=:" %%i in ('findstr /n /i "$data" messwerte.txt') do @( 
03.
   For /f %%j in ('Set /a 1+%%i') do @( 
04.
      for /f "delims=" %%k in ('more +%%j messwerte.txt') do @( 
05.
         For %%l in (%%k) do @echo %%l 
06.
))))
Annahme: Deine Messwert-Datei heißt "messwerte.txt" (das steht so fest an zwei Stellen drin in dem Schnipsel).
Da ich nicht sicher bin, ob die Messdaten immer in Zeile 8 anfangen,
ermittle ich die erste Messdatenzeile als "eine Zeile nach Zeile mit String "$DATA" .

Besser als den Dateinamen fest verdrahtet im Source: diesen Namen als Parameter übergeben:
01.
::----Snipp Messwerte2Spalte_mitParameter.bat 
02.
@for /f "delims=:" %%i in ('findstr /n /i "$data" "%~1"') do @For /f %%j in ('Set /a 1+%%i') do @( 
03.
      for /f "delims=" %%k in ('more +%%j "~1"') do @For %%l in (%%k) do @echo %%l 
04.
))
...und dann aufrufen mit "Meswerte2Spalte_mitParameter d:\pfad\NameDerMesswertdatei.xyz >NeueEin-Spaltendatei.abc"

Grüße
Biber
Bitte warten ..
Mitglied: caracol
15.09.2007 um 22:54 Uhr
Hi,

also die Version von bastla funktioniert jetzt. Hab mich wohl vertippt, und musste erst mal rausfinden wie Copy und Paste im cmd prompt funktioniert. Tausend Tausend Dank!

Grüße, Caracol
Bitte warten ..
Mitglied: bastla
15.09.2007 um 23:20 Uhr
Hallo caracol!

Wie ich Deinen weiteren Ausführungen oben entnehme, befinden sich die Werte nicht (wie von mir angenommen) in einer einzigen Datei, sondern sind auf 2000 Einzeldateien verteilt - daher besser eine Batchlösung.

Du könntest den folgenden Code verwenden, um alle .txt-Dateien eines gesamten Ordners (Quelle) zu bearbeiten und die Ergebnisse in einen anderen Ordner (Ziel) zu schreiben:
01.
@echo off & setlocal 
02.
set "Quelle=D:\OrdnerMitMesswertdateien" 
03.
set "Ziel=D:\OrdnerMitUmgewandeltenMesswertdateien" 
04.
if not exist "%Ziel%" md "%Ziel%" 
05.
for %%d in ("%Quelle%\*.txt") do for /f "usebackq skip=8 delims=" %%i in ("%%d") do for %%w in (%%i) do (echo %%w)>>"%Ziel%\%%~nxd"
Speichere den Code mit einem beliebigen Editor als "InEinzelspalte.cmd" (Name egal, Typ ".cmd" oder ".bat").

Achtung: Wenn Du den Standard-Windows-Editor verwendest, beim Speichern zunächst den Dateityp auf "Alle Dateien" setzen und den Namen unter Anführungszeichen eingeben, da sonst noch zusätzlich ".txt" angefügt wird.

Danach den Batch per Doppelklick auf die ".cmd"-Datei ausführen.

Grüße
bastla
Bitte warten ..
Mitglied: caracol
15.09.2007 um 23:35 Uhr
Hi,

das ist natürlich noch besser. Hättest Du vielleicht auch noch
einen Vorschlag, wie man dannn gleich alle 2000 Spalten
nebeneinander in eine Datei schreiben könnte?

Auf jeden Fall tausend Dank! Ohne Dich (Euch) hätte ich das
bis zu meiner Präsentation am Mo nicht mehr gerschafft!

Grüße,

Caracol
Bitte warten ..
Mitglied: bastla
16.09.2007 um 00:27 Uhr
Hallo caracol!

Sofern Du ein Excel 2007 (und damit genügend Spalten auf einem Tabellenblatt) hast, könntest Du das folgende VBA-Programm verwenden, um die im vorigen Schritt erstellten einspaltigen Textdateien in Excel einzulesen:
01.
Sub Einlesen() 
02.
Const Quelle = "D:\OrdnerMitUmgewandeltenMesswertdateien" 
03.
Dim wbSammel As Workbook, fso As Object, Datei As Object 
04.
Dim Sp As Integer 
05.
Set wbSammel = ThisWorkbook 
06.
Set fso = CreateObject("Scripting.FileSystemObject") 
07.
Sp = 1 
08.
For Each Datei In fso.GetFolder(Quelle).Files 
09.
    If fso.GetExtensionName(Datei.Path) = "txt" Then 
10.
        Workbooks.OpenText Datei.Path 
11.
        Columns("A:A").Select 
12.
        Selection.Copy 
13.
        wbSammel.Activate 
14.
        Cells(1, Sp).Select 
15.
        ActiveSheet.Paste 
16.
        Application.CutCopyMode = False 
17.
        Workbooks(Datei.Name).Close 
18.
        Sp = Sp + 1 
19.
    End If 
20.
Next 
21.
wbSammel.Activate 
22.
Range("A1").Activate 
23.
wbSammel.Save 
24.
End Sub
Vorgangsweise:
  • Neue Excel-Arbeitsmappe erstellen und unter beliebigem Namen speichern,
  • per Rechtsklick auf das Blattregister für "Tabelle1" und Klick auf "Code anzeigen" in den VBA-Editor wechseln,
  • dort das obige Programm in das große Codefenster einfügen,
  • Pfad für die Quelldateien anpassen,
  • Cursor in einer beliebigen Zeile zwischen "Sub Einlesen()" und "End Sub" platzieren und
  • Programm mit F5 oder dem grünen "Play"-Symbol in der Symbolleiste starten.

Sollte kein Excel 2007 zur Verfügung stehen,
  • nur jeweils maximal 256 Textdateien im Quell-Ordner platzieren,
  • das Programm wie oben beschrieben starten und
  • nach dem Einlesen dieser Dateien das nächste Tabellenblatt im Blattregister der Excel-Arbeitsmappe markieren (es wird immer in das ausgewählte Blatt geschrieben).
  • Danach mit dem Explorer die nächsten 256 Dateien in den Quell-Ordner befördern und
  • das Programm wieder starten,
  • and so on ...

Zur Sicherheit wird nach jedem Programmdurchlauf die Excel-Arbeitsmappe automatisch gespeichert.

Grüße
bastla
Bitte warten ..
Mitglied: bastla
16.09.2007 um 01:21 Uhr
Update: Name der Textdatei (ohne Extension) wird in erste Zeile geschrieben
01.
Sub Einlesen() 
02.
Const Quelle = "D:\OrdnerMitUmgewandeltenMesswertdateien" 
03.
Dim wbSammel As Workbook, wsTabelle As Worksheet, fso As Object, Datei As Object 
04.
Dim Sp As Integer 
05.
Set wbSammel = ThisWorkbook 
06.
Set wsTabelle = ActiveSheet 
07.
Set fso = CreateObject("Scripting.FileSystemObject") 
08.
Sp = 1 
09.
For Each Datei In fso.GetFolder(Quelle).Files 
10.
    If LCase(fso.GetExtensionName(Datei.Path)) = "txt" Then 
11.
        Workbooks.OpenText Datei.Path 
12.
        Sheets(1).Range("A1").CurrentRegion.Copy 
13.
        wbSammel.Activate 
14.
        wsTabelle.Cells(1, Sp).Value = fso.GetBaseName(Datei.Name) 
15.
        wsTabelle.Cells(2, Sp).Select 
16.
        ActiveSheet.Paste 
17.
        Application.CutCopyMode = False 
18.
        Workbooks(Datei.Name).Close 
19.
        Sp = Sp + 1 
20.
    End If 
21.
Next 
22.
wbSammel.Activate 
23.
wsTabelle.Range("A1").Activate 
24.
wbSammel.Save 
25.
End Sub
Grüße
bastla

[Edit] Sollte jetzt auch bei mehreren unterschiedlichen Ziel-Tabellenblättern (für Pre-Excel 2007) funktionieren. [/Edit]
Bitte warten ..
Mitglied: caracol
16.09.2007 um 01:39 Uhr
Hallo bastla,

PEREFEKT!!! Hab meine Auswertung jetzt im Prinzip fertig, muss nur noch meine Lorentz-Fits etwas anpassen... . Danke nochmal, dass hat mich echt gerettet.

Grüße,

Caracol
Bitte warten ..
Mitglied: bastla
16.09.2007 um 01:43 Uhr
Hallo caracol!

Alles Gute für Montag!

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Microsoft Office

Excel 2010: Matrix in Liste zurück umwandeln

gelöst Frage von AdminKnechtMicrosoft Office4 Kommentare

Hallo, ich habe hier ein kleines Excel-Problem, und zwar will ich aus einer Matrix (zweidimensional) wieder eine eindimensionale Liste ...

Datenbanken

Excel-Spalte mit rtf Steuerzeichen umwandeln in "normalen" Text

Frage von FrankAsDatenbanken6 Kommentare

Ich habe eine Export-Funktion in einem ERP benutzt, um Daten nach Excel zu exportieren. Dabei wurde eine Spalte mit ...

Microsoft Office

EXCEL 2013: Mit Hilfe der Daten einer Spalte (Matrix) Daten aus einer anderen Tabelle herkopieren

Frage von CADastropheMicrosoft Office

Hallo zusammen, ich habe eine solche diffizile Frage, ich glaube das geht gar nicht. Bisher mussten die Fahrtenbücher unseres ...

Microsoft Office

Werte in Matrix einfügen- Schleife

gelöst Frage von IkanerMicrosoft Office6 Kommentare

Hallo Leute, wie kann ich das bestehende Makro ergänzen, sodass es mir für jedes entstandene Arbeitsblatt (trägt den Namen ...

Neue Wissensbeiträge
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 1 TagHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 1 TagRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 2 TagenSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 2 TagenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Router & Routing
Mikrotik: Routing zwischen Interfaces mit Geräten ohne Gateway
Frage von TonLichtVideoRouter & Routing18 Kommentare

Hallo zusammen, ich komme aus dem Veranstaltungstechnik Bereich und habe zwei Netze um verschiedene Hardware zu Remoten. CONTROL1 192.168.1.0/24 ...

Linux Netzwerk
Raspberry Pi 3: WLAN Power save deaktivieren
Frage von nordie92Linux Netzwerk14 Kommentare

Moin moin, mein Raspberry Pi 3 Model B benötigt eine dauerhaft aktive WLAN-Verbindung. Leider bricht die WLAN-Verbindung nach einigen ...

Vmware
Server 2008 r2 vmware terminalserver
Frage von MasterCVmware11 Kommentare

Guten Abend zusammen, ich hoffe , dass einer von euch mir weiterhelfen kann ,bei meinem kack Problem ! Ist ...

VB for Applications
VBScript mit WINscp für einfachen FTP Transfer und nachträglichem verschieben der Datei in ein erledigt Verzeichnis
Frage von KeiosIDVB for Applications9 Kommentare

Hallo, leider soll ich auf den neueren Servern(Win2016R2) keine *.Bat Dateien mehr laufen lassen. Hier soll nun alles über ...