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, 6578 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 ...

Basic

Matrix auslesen VBA

gelöst Frage von KavachiBasic6 Kommentare

Hallo liebe Leute, ich habe folgendes Problem. Ich versuche KFZ-Steuern in mehreren Ländern für eine Seminararbeit zu berechnen. Dazu ...

Entwicklung

QR Code und Data Matrix

gelöst Frage von Aicher1998Entwicklung4 Kommentare

Hallo, ich wollte mal fragen, wie denn ein QR Code und die Data Matrix aufgebaut sind. Ich hab zwar ...

Microsoft Office

Excel: Mit Matrix abgleichen und neue Übersicht

Frage von supertuxMicrosoft Office4 Kommentare

Hallo, ich habe hier ein kleines Beispiel meiner Tabelle erstellt, die Daten (A3-B8) werden aus einer CSV importiert. Leider ...

Neue Wissensbeiträge
Datenschutz

SiSyPHuS Win10: Analyse der Telemetriekomponenten in Windows 10

Tipp von freesolo vor 1 TagDatenschutz1 Kommentar

Alle die sich detailliert für die Datensammlung interessieren die unter Windows 10 stattfindet, sollten sich folgende Analyse des BSI ...

Sicherheit
Adminrechte dank Intel-Grafikkarte
Information von DerWoWusste vor 1 TagSicherheit1 Kommentar

ist das Advisory, welches beschreibt, welche Intel HD Graphics Modelle Sicherheitslücken haben, mit denen sich schwache Nutzer zu Admins ...

Internet

EU Urheberrechtsreform: Eingriff in die Internetkultur

Information von Frank vor 2 TagenInternet1 Kommentar

Liebe Besucherin, lieber Besucher, warum erscheint das obere Banner in allen Beiträgen? Aus Protest gegen Teile der geplanten EU-Urheberrechtsreform ...

Windows Server
Windows Backup - FilterManager Event 3
Tipp von NixVerstehen vor 3 TagenWindows Server

Hallo zusammen, ich bin kein gelernter ITler und auch beruflich nicht in dem Feld tätig. Wir setzen in unserem ...

Heiß diskutierte Inhalte
Router & Routing
Lancom-VPN-Client
Frage von FM28880Router & Routing15 Kommentare

Hallo zusammen, ich habe heute zwei Rechner mit einem Lancom VPN-Client eingerichtet. Die VPN-Verbindung wird aufgebaut und steht. Jedoch ...

Microsoft Office
Sharepoint 2016 mag keine Umlaute in .docx-Titeln
gelöst Frage von DerWoWussteMicrosoft Office14 Kommentare

Moin Kollegen. Nutzt hier jemand Sharepoint? Könnt Ihr, unabhängig von der Sharepointversion, bitte einen Test machen? Ladet ein .docx ...

Basic
VBS soll alle Ordner auswählen, die im Startmenu angezeigt werden
Frage von Senseless-CreatureBasic12 Kommentare

Guten Morgen - gibt es eine Möglichkeit, per VBS das Startmenu in Win10 zu modifizieren? Ich beherrsche VBS mittlerweile ...

Hyper-V
Hyper-V Manager startet, jedoch keine VM
Frage von NaleorHyper-V11 Kommentare

Hallo zusammen, auf meinem Windows 10 (Build 1703) Notebook von der Arbeit scheint Hyper-V plötzliche nicht mehr zu funktionieren. ...