CSV Datei mit ","
#1
Hallo zusammen,

vorweg: Leider kann ich keine Beispielsdatei posten, da die Daten, um die es geht, vertraulich sind und ich die Datei aus irgendeinem Grund mit diesem Fehler nicht nachbauen kann.

Ich habe eine Auswertungsdatei als CSV erhalten. Diese ist getrennt mit
Code:
","
(also Komma und zwei Anführungszeichen). Diese über CSV einzuspeisen und zu transformieren hat nicht geklappt. Wenn ich jedoch über Suchen und Ersetzen vorher die Anführungszeichen entfernt habe, hat es geklappt und ich konnte die Daten transformieren bzw. trennen. Ein Problem dabei ist jetzt aber, dass es innerhalb der Daten teilweise Beschreibungstexte gibt, die ein Komma enthalten. Diese Texte wurden dementsprechend auch getrennt und haben sich in falsche Spalten verschoben. Das ist bei über 5.000 Einträgen leider händisch nur sehr schwer zu beheben.

Ich bin nun so vorgegangen, dass ich über Suchen und Ersetzen
Code:
","
mit
Code:
";"
ersetzt habe. Anschließend habe ich dann die Anführungszeichen entfernt. Leider lässt sich die Datei jetzt nicht mehr trennen bzw. transformieren. Lade ich die Datei rein, sieht man in der Vorschau auch die Semikolons, sie akzeptiert sie jedoch nicht und behält alles in einer Spalte. Ich bin auch schon hergegangen und habe geschaut, ob nach Umwandlung jede Zelle gleich viele Semikolons hat – das war der Fall (28).

Ist das Problem bekannt? Kann mir jemand, auch ohne Beispiel, helfen?

Liebe Grüße
Juxhine
Antworten Top
#2
Hi Juxhine,

entferne die vertraulichen Daten und lade ein abgespeckte Biespieldatei hoch, dann kann dir sicher geholfen werden.

LG, Alexandra
Antworten Top
#3
Hallo Juxhine,

dein Trennzeichen ist nur das Komma alleine, ohne die Anführungszeichen. Beim Import mußt du angeben, daß Strings/Text in Anführungszeichen gesetzt sind, dann klappt das auch mit den Kommas im Text.

Gruß
Knobbi38
Antworten Top
#4
Moin,

wenn es dir nicht gelingt, das Problem nachzubauen liegt die Ursache des Fehlers genau im Unterschied zwischen Original und Nachbau. Wie soll es dann uns gelingen, das Problem nachzuvollziehen, wenn wir weder original noch Nachbau kennen?

Ansonsten bleibt zur Hilfe nur der Hinweis, mit Powerquery zu importieren.

Viele Grüße 
derHoepp
Antworten Top
#5
Anbei eine abgespeckte Version. Die Original Version hat über 5.000 Zeilen, mal mit Kommas im Titel des Trainings, mal ohne. In dem Beispiel habe ich Kommas reingenommen.


Angehängte Dateien
.csv   2020_2024 Learning Hours.csv (Größe: 926 Bytes / Downloads: 15)
Antworten Top
#6
(19.02.2025, 14:16)Juxhine schrieb: Anbei eine abgespeckte Version. Die Original Version hat über 5.000 Zeilen, mal mit Kommas im Titel des Trainings, mal ohne. In dem Beispiel habe ich Kommas reingenommen.

Sicher, dass Du die Beispieldatei korrekt aufgebaut hast
PHP-Code:
"User ID,""Active User"",""First Name"",""
"
*********,""Yes"",""Vorname"","" 
Bei dem ersten Komma scheint was zu fehlen.

Unabhängig davon, ob die Beispieldatei korrekt ist, geht es mir Powerquery, aber der Hinweis wurde schon gegeben.
Antworten Top
#7
Hallo,

ich habe mir die Datei angesehen und festgestellt, dass Anfang und am Ende der Datei jeweils ein Anführungszeichen steht. Das führt dazu, dass Excel die Spalten nicht richtig erkennt, auch wenn man das korrekte Trennzeichen verwendet (weder Legacy noch PowerQuery).

Ich weiß nicht, ob die Datei so ankommt oder ob es an der Nachbearbeitung wg. Anonymisierung liegt.

Wenn ich die Anführungszeichen am Anfang und am Ende entferne funktioniert es im Legacy-Import. Wenn man den Textqualifizierer auf {kein} stelle bleiben alle Anführungszeichen in den einzelnen Feldern erhalten. Wenn man das Anführungszeichen als Textqualifizierer verwendet, dann bleiben die zwei Anführungszeichen am Ende jedes Feldes stehen.

Mit PowerQuery (Daten - Aus Text) ist es zwar das gleiche, aber da könnte man die Anführungszeichen mittels Daten transformieren am Ende entfernen.

Schön wäre es, wenn die Ausgabe im Programm konfiguriert werden könnte, aus dem die Datei stammt.

Wenn man mit den Einschränkungen oben nicht leben kann, wäre alternativ das einlesen per VBA sinnvoll.
Gruß
Michael
Antworten Top
#8
Hier der bis auf die erste Zeile für die Beispieldatei zusammengeklickte M-Code
Code:
let
    Quelle = Table.FromColumns({Lines.FromBinary(File.Contents("D:\TMP\2020_2024 Learning Hours.csv"), null, null, 1252)}),
    #"Ersetzter Wert" = Table.ReplaceValue(Quelle,""""",""""",";",Replacer.ReplaceText,{"Column1"}),
    #"Ersetzter Wert1" = Table.ReplaceValue(#"Ersetzter Wert",",""",";",Replacer.ReplaceText,{"Column1"}),
    #"Ersetzter Wert2" = Table.ReplaceValue(#"Ersetzter Wert1","""","",Replacer.ReplaceText,{"Column1"}),
    #"Spalte nach Trennzeichen teilen" = Table.SplitColumn(#"Ersetzter Wert2", "Column1", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"Column1.1", "Column1.2", "Column1.3", "Column1.4", "Column1.5", "Column1.6", "Column1.7", "Column1.8", "Column1.9", "Column1.10", "Column1.11", "Column1.12", "Column1.13", "Column1.14", "Column1.15", "Column1.16", "Column1.17", "Column1.18", "Column1.19", "Column1.20", "Column1.21", "Column1.22", "Column1.23", "Column1.24", "Column1.25", "Column1.26", "Column1.27", "Column1.28", "Column1.29", "Column1.30"}),
    #"Höher gestufte Header" = Table.PromoteHeaders(#"Spalte nach Trennzeichen teilen", [PromoteAllScalars=true])
in
    #"Höher gestufte Header"
[-] Folgende(r) 1 Nutzer sagt Danke an Warkings für diesen Beitrag:
  • Juxhine
Antworten Top
#9
Wenn die Datei tatsächlich so ankommt, ist es aber auch kein Problem für Power Query.

Code:
let
    Source      = Csv.Document(File.Contents("D:\Downloads\2020_2024 Learning Hours.csv"),[Delimiter=",", Columns=1, Encoding=65001]),
    Split_1     = Table.SplitColumn(Source, "Column1", Splitter.SplitTextByEachDelimiter({","}, QuoteStyle.None, false), {"Column1.1", "Column1.2"}),
    Split_2     = Table.SplitColumn(Split_1, "Column1.2", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Column1.2.1", "Column1.2.2", "Column1.2.3", "Column1.2.4", "Column1.2.5", "Column1.2.6", "Column1.2.7", "Column1.2.8", "Column1.2.9", "Column1.2.10", "Column1.2.11", "Column1.2.12", "Column1.2.13", "Column1.2.14", "Column1.2.15", "Column1.2.16", "Column1.2.17", "Column1.2.18", "Column1.2.19", "Column1.2.20", "Column1.2.21", "Column1.2.22", "Column1.2.23", "Column1.2.24", "Column1.2.25", "Column1.2.26", "Column1.2.27", "Column1.2.28", "Column1.2.29"}),
    Promote_Hdr = Table.PromoteHeaders(Split_2, [PromoteAllScalars=true]),
    Change_Type = Table.TransformColumnTypes(Promote_Hdr,{{"User ID", type text}, {"Active User", type text}, {"First Name", type text}, {"Last Name", type text}, {"Middle Name", type text}, {"Manager ID", Int64.Type}, {"Manager First Name", type text}, {"Manager Last Name", type text}, {"Manager Middle Name", type text}, {"Organization ID", type text}, {"Organization Description", type text}, {"Job Code ID", type text}, {"Job Code Description", type text}, {"Job Location ID", type text}, {"Job Location Description", type text}, {"Employee Type ID", type text}, {"Employee Type Description", type text}, {"Employee Status ID", type text}, {"Employee Status Description", type text}, {"Item Type", type text}, {"Item ID", type text}, {"Item Revision Date", type text}, {"Revision Number", type text}, {"Item Title", type text}, {"Completion Date", type text}, {"Primary Location", type text}, {"Total Hours", type text}, {"Credit Hours", type text}, {"CPE Hours", type text}, {"Contact Hours", type text}})
in
    Change_Type


Angehängte Dateien
.xlsx   cef - CSV-Datei-mit Komma (PQ).xlsx (Größe: 21,51 KB / Downloads: 4)
[-] Folgende(r) 1 Nutzer sagt Danke an ws-53 für diesen Beitrag:
  • Warkings
Antworten Top
#10
Ja, das ist geschickter als mein mehrfaches Ersetzen 👍
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste