Clever-Excel-Forum

Normale Version: Zeilen einer TXT datei in spalten bringen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4
(12.05.2018, 06:33)BeginnerBUS schrieb: [ -> ]Meintest du die myrecords.txt Datei oder die xlsx ? Falls es die txt Datei war: ja, die liefert ja "bescheuerte" Datenformatierung und ist der Grund weshalb ich hier herkam :)
Denn ich will eine Möglichkeit finden, diese schlecht formatierten Rohdaten in eine schöne Tabelle zu bekommen, ohne den Rohdatensatz dabei jedesmal von Hand editieren zu müssen.
...
Es kommen künftig aber noch Datensätze in dem selben Format von anderen Personen. Es interessiert mich deshalb wirklich sehr, wie du diese Tabelle "Auswertung" mit PowerQuery erstellst...
Hallo, ich meinte, dass der Anfang mit Time beginnen sollte, nicht mit einem Rest von einem Datensatz; dass man nicht zweimal innerhalb einer Minute auf das Gerät steigt, sodass Nullwerte  entstehen. Ansonsten geht doch das ganz gut... Ich schaue mir jetzt noch deine "neuen" Dateien an. Aber myrecords.txt geht prima, wie man sieht...

Oder ist Time gar nicht der Beginn des Datensatz', sondern Muscle Mass...!?!?! Ist doch sehr unwahrscheinlich...!!!
(12.05.2018, 11:58)Jockel schrieb: [ -> ]Oder ist Time gar nicht der Beginn des Datensatz', sondern Muscle Mass...!?!?! Ist doch sehr unwahrscheinlich...!!!
Ich habe den ersten Datensatz mit dem ersten Wert beginnen lassen. Komischerweise heißt es dort noch Mass und später dann Muscle Mass.
Aber deine Variante ist auch möglich. Der erste Datensatz beginnt mit dem ersten Timestamp. Dann müsste ich meine Lösung noch mal überarbeiten.
(12.05.2018, 06:33)BeginnerBUS schrieb: [ -> ]Es kommen künftig aber noch Datensätze in dem selben Format von anderen Personen.
Stehen die dann die Daten aller Personen in einer Datei oder hat jede Person eine separate Datei?
DD - Danke Detlef, für den (versteckten) Tipp mit einer Index-Spalte. Die Lösung mit PQ wird für mich immer besser..! Ich bin jetzt hier... (mit  Att_1_myrecords.txt )

Arbeitsblatt mit dem Namen 'Tabelle1'
ABCDEFGHIJ
1DateTimeWeightBody waterBody fatBone MassVisceral fatBMRMuscle MassBMI
219.04.201813:1877,6 kg56,4%17,8%3,2 kg8,01907,060,7 kg24,2
316.04.201811:3978,3 kg56,2%18,0%3,2 kg8,01920,061,0 kg24,4
412.04.201811:5674,0 kg57,7%15,9%3,1 kg8,01845,059,1 kg23,1
511.04.201800:3577,5 kg56,2%18,1%3,1 kg8,01906,060,3 kg24,2
610.04.201807:5076,5 kg56,7%17,4%3,1 kg8,01888,060,1 kg23,9
707.04.201821:0877,8 kg56,6%17,5%3,2 kg8,01911,061,0 kg24,3
831.03.201809:0878,2 kg56,4%17,9%3,2 kg8,01918,061,1 kg24,4
930.03.201809:1977,4 kg56,5%17,6%3,1 kg8,01904,060,6 kg24,2
1029.03.201809:1676,5 kg56,8%17,2%3,1 kg8,01888,060,2 kg23,9
1128.03.201820:1176,7 kg56,9%17,1%3,1 kg8,01892,060,5 kg23,9
1228.03.201809:4875,6 kg57,1%16,8%3,1 kg8,01873,059,8 kg23,6
1327.03.201800:3077,1 kg56,5%17,7%3,1 kg8,01899,060,3 kg24,1
1425.03.201823:5078,4 kg55,8%18,7%3,1 kg8,01921,060,6 kg24,5
1523.03.201815:4176,2 kg56,9%17,1%3,1 kg8,01883,060,1 kg23,8
1622.03.201808:3277,3 kg56,4%17,7%3,1 kg8,01902,060,5 kg24,1
1721.03.201814:4776,5 kg57,0%16,9%3,1 kg8,01888,060,4 kg23,9
1821.03.201812:0278,8 kg55,9%18,6%3,2 kg8,01928,061,0 kg24,6
1921.03.201812:0278,8 kg0,0%0,0%0,0 kg0,00,00,0 kg24,6
2021.03.201811:2378,5 kg56,2%18,1%3,2 kg8,01923,061,1 kg24,5
2121.03.201811:0077,2 kg56,6%17,4%3,1 kg8,01900,060,6 kg24,1
2221.03.201810:5677,3 kg56,7%17,4%3,2 kg8,01902,060,7 kg24,1
2321.03.201810:5477,2 kg56,7%17,3%3,2 kg8,01900,060,7 kg24,1
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.01] MS Excel 2010
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg
(12.05.2018, 12:50)Jockel schrieb: [ -> ]DD - Danke Detlef, für den (versteckten) Tipp mit einer Index-Spalte. Die Lösung mit PQ wird für mich immer besser..! Ich bin jetzt hier... (mit  Att_1_myrecords.txt )
Also du hast das mit der Rohdatei und mit PQ gemacht? Das sieht so toll aus. Erfahre ich wie es gemacht wird? Könnte ich die Datei haben und den, ich nenne es mal Importcode in PQ, sehen um ihn nachvollziehen zu können?
Ich habe inzwischen etwas mit vba angefangen und werde wohl noch etwas brauchen, bis ich sowas alleine zustande bekomme.
Künftige Datensätze von anderen Personen kommen in einer seperaten Datei, aber in derselben Formatierung.
Ja, klar später ich muss gleich wech... aber gegen Mittag... Bis dahin.
Hallo, ich habe eine leere Datei --> Power Query aus Datei --> deine Datei hatte ich vorher abgespeichert... ... und dann sukzessive folgende Schritte durchgeführt (davon sind zwei oder drei Schritte selbst "programmiert" bzw. geschrieben...:

Du nimmst eine leere Datei her. Neue Abfrage --> Ansicht --> Erweiterter Editor und code einfügen... Fertisch...! "Meine" Datei macht da wenig Sinn, wil da alles genau so drin ist... Du musst die Tabelle nachher nur noch nach "gut dünken" formatieren...

PHP-Code:
let
    Quelle 
Table.FromColumns({Lines.FromBinary(File.Contents("C:\DatenBank\Att_1_myrecords.txt"), nullnull1252)}),
 
   #"Entfernte oberste Zeilen" = Table.Skip(Quelle,3),
 
   #"Gefilterte Zeilen" = Table.SelectRows(#"Entfernte oberste Zeilen", each true),
 
   #"Spalte nach Trennzeichen teilen" = Table.SplitColumn(#"Gefilterte Zeilen", "Column1", Splitter.SplitTextByEachDelimiter({","}, QuoteStyle.Csv, true), {"Column1.1", "Column1.2"}),
 
   #"Geänderter Typ" = Table.TransformColumnTypes(#"Spalte nach Trennzeichen teilen",{{"Column1.1", type text}, {"Column1.2", type text}}),
 
   #"Spalte nach Trennzeichen teilen1" = Table.SplitColumn(#"Geänderter Typ", "Column1.2", Splitter.SplitTextByDelimiter("/", QuoteStyle.Csv), {"Column1.2.1", "Column1.2.2", "Column1.2.3"}),
 
   #"Geänderter Typ1" = Table.TransformColumnTypes(#"Spalte nach Trennzeichen teilen1",{{"Column1.2.1", Int64.Type}, {"Column1.2.2", Int64.Type}, {"Column1.2.3", Int64.Type}}),
 
   #"Neu angeordnete Spalten" = Table.ReorderColumns(#"Geänderter Typ1",{"Column1.1", "Column1.2.2", "Column1.2.1", "Column1.2.3"}),
 
   #"Zusammengeführte Spalten" = Table.CombineColumns(Table.TransformColumnTypes(#"Neu angeordnete Spalten", {{"Column1.2.2", type text}, {"Column1.2.1", type text}, {"Column1.2.3", type text}}, "de-DE"),{"Column1.2.2", "Column1.2.1", "Column1.2.3"},Combiner.CombineTextByDelimiter(".", QuoteStyle.None),"Zusammengeführt"),
 
   #"Spalte nach Trennzeichen teilen2" = Table.SplitColumn(#"Zusammengeführte Spalten", "Column1.1", Splitter.SplitTextByEachDelimiter({","}, QuoteStyle.Csv, false), {"Column1.1.1", "Column1.1.2"}),
 
   #"Geänderter Typ2" = Table.TransformColumnTypes(#"Spalte nach Trennzeichen teilen2",{{"Column1.1.1", type text}, {"Column1.1.2", type text}}),
 
   #"Entfernte Spalten" = Table.RemoveColumns(#"Geänderter Typ2",{"Column1.1.2"}),
 
   #"Spalte nach Trennzeichen teilen3" = Table.SplitColumn(#"Entfernte Spalten", "Column1.1.1", Splitter.SplitTextByEachDelimiter({":"}, QuoteStyle.Csv, false), {"Column1.1.1.1", "Column1.1.1.2"}),
 
   #"Geänderter Typ3" = Table.TransformColumnTypes(#"Spalte nach Trennzeichen teilen3",{{"Column1.1.1.1", type text}, {"Column1.1.1.2", type text}}),
 
   #"Spalte nach Trennzeichen teilen4" = Table.SplitColumn(#"Geänderter Typ3", "Column1.1.1.2", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"Column1.1.1.2.1", "Column1.1.1.2.2", "Column1.1.1.2.3", "Column1.1.1.2.4", "Column1.1.1.2.5"}),
 
   #"Geänderter Typ4" = Table.TransformColumnTypes(#"Spalte nach Trennzeichen teilen4",{{"Column1.1.1.2.1", type text}, {"Column1.1.1.2.2", type text}, {"Column1.1.1.2.3", type text}, {"Column1.1.1.2.4", type text}, {"Column1.1.1.2.5", type text}}),
 
   #"Entfernte Spalten1" = Table.RemoveColumns(#"Geänderter Typ4",{"Column1.1.1.2.2", "Column1.1.1.2.3", "Column1.1.1.2.4", "Column1.1.1.2.5"}),
 
   #"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Entfernte Spalten1", "Benutzerdefiniert", each if [Column1.1.1.1] = "Time" then [Column1.1.1.2.1] else ""),
 
   #"Ersetzter Wert" = Table.ReplaceValue(#"Hinzugefügte benutzerdefinierte Spalte","..","",Replacer.ReplaceText,{"Zusammengeführt"}),
 
   #"Geänderter Typ5" = Table.TransformColumnTypes(#"Ersetzter Wert",{{"Benutzerdefiniert", type time}}),
 
   #"Zusammengeführte Spalten1" = Table.CombineColumns(Table.TransformColumnTypes(#"Geänderter Typ5", {{"Benutzerdefiniert", type text}}, "de-DE"),{"Zusammengeführt", "Benutzerdefiniert"},Combiner.CombineTextByDelimiter(" ", QuoteStyle.None),"Datum Uhrzeit"),
 
   #"Geänderter Typ6" = Table.TransformColumnTypes(#"Zusammengeführte Spalten1",{{"Datum Uhrzeit", type datetime}}),
 
   #"Nach unten gefüllt" = Table.FillDown(#"Geänderter Typ6",{"Datum Uhrzeit"}),
 
   #"Umbenannte Spalten" = Table.RenameColumns(#"Nach unten gefüllt",{{"Column1.1.1.2.1", "Werte"}, {"Column1.1.1.1", "Was"}}),
 
   #"Neu angeordnete Spalten1" = Table.ReorderColumns(#"Umbenannte Spalten",{"Datum Uhrzeit", "Was", "Werte"}),
 
   #"Hinzugefügter Index" = Table.AddIndexColumn(#"Neu angeordnete Spalten1", "Index", 1, 1),
 
   #"Hinzugefügte benutzerdefinierte Spalte1" = Table.AddColumn(#"Hinzugefügter Index", "Benutzerdefiniert", each [Index]/9),
 
   #"Aufrundung eingefügt" = Table.AddColumn(#"Hinzugefügte benutzerdefinierte Spalte1", "Aufrunden", each Number.RoundUp([Benutzerdefiniert]), Int64.Type),
 
   #"Entfernte Spalten2" = Table.RemoveColumns(#"Aufrundung eingefügt",{"Index", "Benutzerdefiniert"}),
 
   #"Neu angeordnete Spalten2" = Table.ReorderColumns(#"Entfernte Spalten2",{"Aufrunden", "Datum Uhrzeit", "Was", "Werte"}),
 
   #"Pivotierte Spalte" = Table.Pivot(#"Neu angeordnete Spalten2", List.Distinct(#"Neu angeordnete Spalten2"[Was]), "Was", "Werte"),
 
   #"Entfernte Spalten3" = Table.RemoveColumns(#"Pivotierte Spalte",{"Aufrunden"}),
 
   #"Extrahiertes Datum" = Table.TransformColumns(#"Entfernte Spalten3",{{"Datum Uhrzeit", DateTime.Date, type date}}),
 
   #"Umbenannte Spalten1" = Table.RenameColumns(#"Extrahiertes Datum",{{"Datum Uhrzeit", "Date"}}),
 
   #"Geänderter Typ7" = Table.TransformColumnTypes(#"Umbenannte Spalten1",{{"Time", type time}}),
 
   #"Ersetzter Wert1" = Table.ReplaceValue(#"Geänderter Typ7","kg","",Replacer.ReplaceText,{"Weight", "Bone Mass", "Muscle Mass"}),
 
   #"Ersetzter Wert2" = Table.ReplaceValue(#"Ersetzter Wert1","%","",Replacer.ReplaceText,{"Body water", "Body fat"}),
 
   #"Ersetzter Wert3" = Table.ReplaceValue(#"Ersetzter Wert2",".",",",Replacer.ReplaceText,{"Weight", "Body water", "Body fat", "Bone Mass", "Visceral fat", "BMR", "Muscle Mass", "BMI"}),
 
   #"Geänderter Typ8" = Table.TransformColumnTypes(#"Ersetzter Wert3",{{"Weight", type number}, {"Body water", type number}, {"Body fat", type number}, {"Bone Mass", type number}, {"Visceral fat", type number}, {"BMR", type number}, {"Muscle Mass", type number}, {"BMI", type number}}),
 
   Divisionsspalte Table.TransformColumns(#"Geänderter Typ8", {{"Body fat", each _ / 100, type number}}),
 
   Divisionsspalte1 Table.TransformColumns(Divisionsspalte, {{"Body water"each _ 100type number}})
in
    Divisionsspalte1 
  
Ändere die Quelle und es sollte passen... Viel Erfolg...
Wenn ich das nun sehe scheint mir PQ gar nicht (far from) 'sexy' zu sein....
Hallo, ich weiß zwar nicht was du (damit) genau meinst, aber das sind (fast) alles (selbsterklärende) Klicks... ... diesen code könnte man noch kommentieren, aber dazu hatte ich weder Lust noch Zeit. Und: Dir muss es ja nicht gefallen... Aber das ist nur meine persönliche Meinung. Wahrscheinlich aber auch, weil ich keine Ahnung von VBA habe...
Ich kann damit aber jetzt erstmal gut arbeiten, weil die Tabelle von Jockel genau so aussieht wie ich sie mir vorstelle. Ich bedanke mich dafür, ich habe etwas gelernt und werde mich künftig mit VBA weiter beschäftigen. 

Werde zunächst höchstwahrscheinlich stumm hier im Forum mitlesen, um Excel weiter und besser kennezulernen!

:15:
Seiten: 1 2 3 4