CSV Datei mit ","
#11
Wow, das hat tatsächlich funktioniert, vielen lieben Dank Dir.
Könntest Du mir vielleicht noch sagen, wieso das ganze nicht funktioniert hat, wenn ich die "," mittels Suchen und Ersetzen in Semikolons ";" umgewandelt habe und diesen dann als Texttrenner angegeben habe (Bei Daten Abrufen aus Text/CSV)?
Antworten Top
#12
(19.02.2025, 15:42)Juxhine schrieb: Wow, das hat tatsächlich funktioniert, vielen lieben Dank Dir.
Könntest Du mir vielleicht noch sagen, wieso das ganze nicht funktioniert hat, wenn ich die "," mittels Suchen und Ersetzen in Semikolons ";" umgewandelt habe und diesen dann als Texttrenner angegeben habe (Bei Daten Abrufen aus Text/CSV)?

Falls ich gemeint bin: Ich ersetze jedes Vorkommen von
Code:
","
durch
Code:
;
. Dadurch werden alle doppelten Anführungszeichen entfernt, bis auf das erste
Code:
,"
, welches ebenfalls durch
Code:
;
ersetzt wird. 
Gleichzeitig dient das Semikolon als eindeutiges Trennzeichen für die Spalten, vorausgesetzt, es kommt nicht an anderer Stelle im Text vor. Abschließend entferne ich das verbleibende Anführungszeichen am rechten Ende. So erhalte ich Daten, die Power Query (PQ) korrekt in Spalten aufteilen kann.
Antworten Top
#13
In VBA

Code:
Sub M_snb()
  Workbooks.OpenText "J:\download\2020_2024 Learning Hours.csv", , , 1, 2, , , , 1
  Sheets(1).Cells.Replace Chr(34), ""
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#14
Hallo PQ-Fan's,

hier mal meine Variante, wobei das Festlegen der neue Spaltennamen zum Splitten per M-Code zuvor ermittelt wird.
Code:
let
    Source      = Csv.Document(File.Contents(Param_01 & "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"}),
    #"Anz neue Spalten" =
            //Spalte 'Column1.2' als Liste 
        let a = Split_1[Column1.2],
            //alle Positionen der Kommata je Zeile ermitteln
            b = List.Transform(a, each Text.PositionOf(_, ",", Occurrence.All)),
            //Anzahl der Kommata je Zeile
            c = List.Transform(b, each List.Count(_) + 1 - 2)
            //größte Anzahl als Einzelwert bestimmen
        in  List.Max(c),
    //neue Spaltennamen festlegen
    #"Liste neue SpaltenNamen" = List.Transform({1..#"Anz neue Spalten"}, each "Column1.2." & Text.From(_)),  
    Split_2     = Table.SplitColumn(Split_1, "Column1.2", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), #"Liste neue SpaltenNamen"),
    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

Hinweis: Param_01 ist ein definierter Parameter mit den aktuellen Dateipfad (bei mir: F:\Daten\Downloads\)

Gruß von Luschi
aus klein-Paris
Antworten Top


Gehe zu:


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