Eine bestimmte Zeile aus mehreren ASCII-Dateie in Excel

Moderator: ModerationP

Eine bestimmte Zeile aus mehreren ASCII-Dateie in Excel

Beitragvon d.mario » 14. Jun 2019, 10:46

Hallo zusammen,

ich bin bis jetzt immer auf ein Ergebnis in diesem Forum gekommen, bei diesem Problem bis jetzt leider noch nicht. Ich bin leider auch ein wenig am verzweifeln. Aber vielleicht können mir da ein paar schlaue Köpfe weiterhelfen, da meine VB Grundschulung jetzt auch schon fast ein Jahrzehnt her ist.

Also nun zu meinem Problem. Ich würde gerne aus mehreren ASCII Dateien (ca. 5000 Stück) mir eine Bestimmte Zeile ausgeben lassen (das wäre hier die Zeile 13). Diese sieht wie folgt aus:

SZ2060 255980555 566915552 256026202 566904465

Die Trennung erfolgt hier über Leerzeichen. Zusätzlich hätte ich gerne die Werte in einzelnen Zellen in einer Zeile. Zusätzlich müsste dieser Wert aber noch durch 100 dividiert werden und die Anzeige in der Zelle auf 2 Dezimalstellen angepasst werden. Wobei die letzten zwei Bedingungen nur optional sind. Da man dieses ja schnell über die Standardfunktionen bei Excel lösen kann.

Wäre super wenn mir da jemand helfen könnte! Schon mal danke im voraus an all die schlauen Köpfe!
d.mario
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3
Registriert: 14. Jun 2019, 10:30

Re: Eine bestimmte Zeile aus mehreren ASCII-Dateie in Excel

Beitragvon GMG-CC » 14. Jun 2019, 11:46

Moin,
ich beginne einfach mal mit der Frage: Woran erkennt Excel denn die "bestimmte Zeile"?
Gruß
Günther

Excel-ist-sexy!
Wenn du keine Excel-Version angegeben hast, gehe ich von mindestens Excel 2016 aus.
Hilfe zur Selbsthilfe, das ist IMHO der Sinn eines Forums, nicht Komplettlösungen für den kommerziellen Einsatz und das "natürlich" gratis!
Benutzeravatar
GMG-CC
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3988
Registriert: 12. Nov 2011, 23:17
Wohnort: Geesthacht bei Hamburg

Re: Eine bestimmte Zeile aus mehreren ASCII-Dateie in Excel

Beitragvon d.mario » 14. Jun 2019, 16:54

Danke für die schnelle Antwort.

Also der Syntax „SZ2060“ ist mehr oder weniger fortlaufend und an dieser Stelle eindeutig definiert.....aber wie gesagt es ist in jeder Datei die 13. Zeile.
d.mario
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3
Registriert: 14. Jun 2019, 10:30

Re: Eine bestimmte Zeile aus mehreren ASCII-Dateie in Excel

Beitragvon GMG-CC » 14. Jun 2019, 17:25

Moin,
OK, wenn es immer die 13. Zeile ist dann sollte sich das Problem mit VBA "erschlagen" lassen. Alle *.txt oder *.asc in ein Verzeichnis kopieren und zeilenweise einlesen lassen. 12 Zeilen nir in Variable einlesen und nichts tun, 13. Zeile in Array schreiben. Das sollte mit VB genauso gut gehen wie mit VBA. Später dann mittels der Split-Funktion (Trenner = Leerzeichen) in Spalten, was auch zügig in Excel selbst geht.
Gruß
Günther

Excel-ist-sexy!
Wenn du keine Excel-Version angegeben hast, gehe ich von mindestens Excel 2016 aus.
Hilfe zur Selbsthilfe, das ist IMHO der Sinn eines Forums, nicht Komplettlösungen für den kommerziellen Einsatz und das "natürlich" gratis!
Benutzeravatar
GMG-CC
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3988
Registriert: 12. Nov 2011, 23:17
Wohnort: Geesthacht bei Hamburg

Re: Eine bestimmte Zeile aus mehreren ASCII-Dateie in Excel

Beitragvon Storax » 14. Jun 2019, 17:58

Da gibt es keine Möglichkeit mit PQ?
Mit VBA ist das zwar zu erschlagen und auch nicht schwierig, aber
ich hätte jetzt gedacht ....
Benutzeravatar
Storax
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3308
Registriert: 22. Okt 2013, 18:18

Re: Eine bestimmte Zeile aus mehreren ASCII-Dateie in Excel

Beitragvon GMG-CC » 14. Jun 2019, 18:22

Ja ... vielleicht ...
Mir sind die Angaben ohne 2-3 Muster-Dateien zu schwammig, zu dünn.
Wenn gewährleistet ist, dass die 13. Zeile immer mit SZ* beginnt und auch keine weitere Zeile, dann ist das kein Problem. Bei
Also der Syntax „SZ2060“ ist mehr oder weniger fortlaufend
kann das "mehr oder weniger ja alles denkbare heißen.

Zugegeben, ich habe meine letzte Antwort auch zuerst mit PQ begonnen. Aber dann viel mir auf, dass ich dann ja entweder ~5000 einzelne Abfragen habe, wo ich einzeln die 13. Zeile extrahieren muss oder ich habe 1 "fette" Import-Datei, wo ich zwar die 13. Zeile gut finden kann dann aber nicht weiß, wie viele Zeilen noch zu der Ursprungs-*.txt/*.asc gehören. Und es war nicht angegeben, dass immer die gleiche Anzahl von Zeilen in jeder Import-Datei drin sind. Dann wäre es natürlich auch kein Problem. Und wenn in der ersten Zeile der *.txt identische Überschriften wären, dann könnte auch vielleicht ... Die Crux ist und bleibt, dass es in der Sprache M imho kein "For each table" oder vergleichbar gibt.
Gruß
Günther

Excel-ist-sexy!
Wenn du keine Excel-Version angegeben hast, gehe ich von mindestens Excel 2016 aus.
Hilfe zur Selbsthilfe, das ist IMHO der Sinn eines Forums, nicht Komplettlösungen für den kommerziellen Einsatz und das "natürlich" gratis!
Benutzeravatar
GMG-CC
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3988
Registriert: 12. Nov 2011, 23:17
Wohnort: Geesthacht bei Hamburg

Re: Eine bestimmte Zeile aus mehreren ASCII-Dateie in Excel

Beitragvon shift-del » 14. Jun 2019, 18:34

Moin Günther

Ich bin der Ansicht dass es möglich ist. Aber ohne Beispieldateien ist das nur Theorie.
Am Anfang des Prozesses wird eine Musterdatei genommen mit der man alle Schritte durchgehen kann und dieses Muster wird dann auf alle anderen Dateien übertragen.
Also: Die ersten 12 Zeilen wegschmeißen und dann ab Zeile 2 den Rest wegschmeißen. Bleibt eine Zeile übrig.
Dann splitten nach Trennzeichen und Division durch 100.
Wir sehen uns!
... shift-del
Eine Mustertabelle hilft beim Helfen.
Excel Super-Funktionen: VERWEIS(), INDEX(), WAHL()
Benutzeravatar
shift-del
Moderator
 
Beiträge: 20455
Registriert: 25. Jan 2009, 22:54
Wohnort: Ehemaliges Fabrikgelände

Re: Eine bestimmte Zeile aus mehreren ASCII-Dateie in Excel

Beitragvon Storax » 14. Jun 2019, 18:58

Wenn ich das richitg sehe, kriege ich mit dem Code immer die 13. Zeile einer Textdatei

Code: Alles auswählen
let
    Quelle = Table.FromColumns({Lines.FromBinary(File.Contents("Test_PQ1.txt"), null, null, 1252)}),
    #"Entfernte untere Zeilen" = Table.RemoveLastN(Quelle,Table.RowCount(Quelle)-13),
    #"Entfernte oberste Zeilen" = Table.Skip(#"Entfernte untere Zeilen",12)
in
    #"Entfernte oberste Zeilen"
Ob das hilft.
Frage ist, wie kann man das geschickt für den "Folder Import" benutzen?
Benutzeravatar
Storax
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3308
Registriert: 22. Okt 2013, 18:18

Re: Eine bestimmte Zeile aus mehreren ASCII-Dateie in Excel

Beitragvon GMG-CC » 14. Jun 2019, 19:03

Moin shift-del und Storax,

richtig, das war (ja) auch meine erste Überlegung. Oder Index rein, alle per Append zusammenfügen und anschließend nach 12 bzw. 13 filtern. Aber ich glaube, dass mir der Elan spätestens bei der 765'sten Abfrage fehlt, die nächste Query anzupacken. :lol:
Wenn es immer die gleiche Anzahl von Datensätzen in 1 *.txt ist, dann wäre das auch kein Thema. Auch hier Index rein und per Formel die jeweils 13. Zeile berechnen lassen und filtern.
Oder wenn die *.txt eine jeweils identische Überschrift hätte, gäbe es auch einen Weg.
Aber wie gesagt, ohne Muster-xlsx ...
Gruß
Günther

Excel-ist-sexy!
Wenn du keine Excel-Version angegeben hast, gehe ich von mindestens Excel 2016 aus.
Hilfe zur Selbsthilfe, das ist IMHO der Sinn eines Forums, nicht Komplettlösungen für den kommerziellen Einsatz und das "natürlich" gratis!
Benutzeravatar
GMG-CC
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3988
Registriert: 12. Nov 2011, 23:17
Wohnort: Geesthacht bei Hamburg

Re: Eine bestimmte Zeile aus mehreren ASCII-Dateie in Excel

Beitragvon Storax » 14. Jun 2019, 19:29

Ich bin ja nicht der Spezialist für PQ, aber könnte man den Code zur Transformation für eine Datei nicht hernehmen
und beim Combine als Funktion für die einzelnen Dateien verwenden. Aber da muss ich wahrscheinlich noch viel mehr
über PQ lernnen :-(
Benutzeravatar
Storax
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3308
Registriert: 22. Okt 2013, 18:18

Re: Eine bestimmte Zeile aus mehreren ASCII-Dateie in Excel

Beitragvon GMG-CC » 14. Jun 2019, 19:40

Ich bin dabei, etwas zu experimentieren.
Mal sehen, mit der xls 365er könnte es etwas werden.
andere Versionen werden dann auch noch in die Mangel genommen.
Gruß
Günther

Excel-ist-sexy!
Wenn du keine Excel-Version angegeben hast, gehe ich von mindestens Excel 2016 aus.
Hilfe zur Selbsthilfe, das ist IMHO der Sinn eines Forums, nicht Komplettlösungen für den kommerziellen Einsatz und das "natürlich" gratis!
Benutzeravatar
GMG-CC
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3988
Registriert: 12. Nov 2011, 23:17
Wohnort: Geesthacht bei Hamburg

Re: Eine bestimmte Zeile aus mehreren ASCII-Dateie in Excel

Beitragvon Flotter Feger » 14. Jun 2019, 20:05

Hallo Leute,

wenn ihr euer PQ rausgetüftelt habt, könnt ihr euch ja mal meinen schönen, schlanken VBA-Code ansehen. :wink:

Code: Alles auswählen
Function ReadThatLine(ByVal FileName As String, ByVal Zeile As Long) As String

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile(FileName)

Do
    If objTextFile.Line = Zeile Then
        ReadThatLine = objTextFile.ReadLine
    Else
        objTextFile.Skipline
    End If
Loop Until objTextFile.Line = Zeile + 1
objTextFile.Close

Set objTextFile = Nothing
Set objFSO = Nothing
End Function

Sub GetDataFromTextFile()
MsgBox ReadThatLine("C:\DeinPfad\Test.txt", 13)
End Sub


PS:
@Günther: Hast du meine Mail gekriegt ? :oops:
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Benutzeravatar
Flotter Feger
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2173
Registriert: 24. Okt 2016, 16:40

Re: Eine bestimmte Zeile aus mehreren ASCII-Dateie in Excel

Beitragvon Storax » 14. Jun 2019, 20:28

@FlotterFeger: Klar geht das mit VBA, das kann ich ja schon, also nicht so interessant. Sorry!

Und mit PQ habe ich es jetzt auch hingekriegt. Geht ganz grob über Daten abrufen/aus Datei/Aus Ordner.
Und der Trick ist die Funktion zum Transformieren der einzelnen Dateien anzupassen. Da habe ich folgenden Code eingefügt
Code: Alles auswählen
let
    Quelle = (Beispieldateiparameter1) => let
        Quelle = Csv.Document(Beispieldateiparameter1,[Delimiter=" ", Columns=1, Encoding=1252, QuoteStyle=QuoteStyle.None]),
        #"Entfernte untere Zeilen" = Table.RemoveLastN(Quelle,Table.RowCount(Quelle)-13),
        #"Entfernte oberste Zeilen" = Table.Skip(#"Entfernte untere Zeilen",12)
    in
        #"Entfernte oberste Zeilen"       
in
    Quelle

Und schon kriege ich nur die 13. Zeile
Zuletzt geändert von Storax am 14. Jun 2019, 20:54, insgesamt 1-mal geändert.
Benutzeravatar
Storax
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3308
Registriert: 22. Okt 2013, 18:18

Re: Eine bestimmte Zeile aus mehreren ASCII-Dateie in Excel

Beitragvon Flotter Feger » 14. Jun 2019, 20:34

Hallo,
@FlotterFeger: Klar geht das mit VBA, das kann ich ja schon, also nicht so interessant. Sorry!

Macht fast gar nichts ... aber eventuell interessiert es den TO, dass er eine VBA-Lösung hat. Nicht jeder kann/will PQ verwenden.

... aber sonst ... schon sehr interessant ... diese PQ.
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Benutzeravatar
Flotter Feger
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2173
Registriert: 24. Okt 2016, 16:40

Re: Eine bestimmte Zeile aus mehreren ASCII-Dateie in Excel

Beitragvon Storax » 14. Jun 2019, 20:39

Du musst ja auch noch die Schleife für die Dateien bauen und dann die Daten auf die Spalten verteilen.
Das kriege ich mit PQ geschenkt, kann vorher noch ggf. Filter auf Dateinamen setzen usw. uws.

Mehr als interessant.

Hier ein paar Links, die mir gerade geholfen haben
https://blog.crossjoin.co.uk/2018/03/09 ... -function/
https://www.howtoexcel.org/power-query/ ... #Functions
Und hier die Doku
https://docs.microsoft.com/en-us/powerq ... -reference
Benutzeravatar
Storax
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3308
Registriert: 22. Okt 2013, 18:18

Nächste

Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: FabMan19, jackthebender, Lucky Joe, snb, Thorsten., TommyDerWalker und 20 Gäste