Pagina 1 di 1

Concatenazione campi con indice numerico

Inviato: gio 4 mag 2023, 21:28
da H725
Un saluto a tutto il forum
Ho un file csv che importo in un foglio Excel. Questo file si compone di vari campi che variano da 2 a 12.
Nel primo campo c'è un ID univoco e gli altri campi sono formati da testo.
Devo combinare i vari campi con un determinato testo in ogni campo (esempio [numero=1], ) ma il numero deve aumentare per ogni campo

Column1 Column2 Column3 Column4 Column5 Column6 Column7 Column8 Column9
79940 testo1 testo2 testo3 testo4
60370 testo1 testo2 testo3 testo4 testo5
38540 testo1 testo2
76460 testo1 testo2
25130 testo1 testo2 testo3
81750 testo1 testo2 testo3 testo4 testo5
88380 testo1 testo2 testo3 testo4 testo5 testo6
83470 testo1 testo2 testo3
34800 testo1 testo2 testo3
45700 testo1 testo2 testo3 testo4
77900 testo1 testo2

----
Column1 Column2
79940 testo1[numero=1],testo2[numero=2],testo3[numero=3],testo4[numero=4]
60370 testo1[numero=1],testo2[numero=2],testo3[numero=3],testo4[numero=4],testo5[numero=5]
38540 testo1[numero=1],testo2[numero=2]
76460 testo1[numero=1],testo2[numero=2]
25130 testo1[numero=1],testo2[numero=2],testo3[numero=3]
81750 testo1[numero=1],testo2[numero=2],testo3[numero=3],testo4[numero=4],testo5[numero=5]
88380 testo1[numero=1],testo2[numero=2],testo3[numero=3],testo4[numero=4],testo5[numero=5],testo6[numero=6]
83470 testo1[numero=1],testo2[numero=2],testo3[numero=3]
34800 testo1[numero=1],testo2[numero=2],testo3[numero=3]
45700 testo1[numero=1],testo2[numero=2],testo3[numero=3],testo4[numero=4]
77900 testo1[numero=1],testo2[numero=2]

Ringrazio chiunque mi possa aiutare

Concatenazione campi con indice numerico

Inviato: gio 4 mag 2023, 21:46
da Andrea90
H725,

Allega un file di esempio concreto.

Andrea

Concatenazione campi con indice numerico

Inviato: ven 5 mag 2023, 8:23
da H725
Ecco un esempio con 2 foglio:
origine e risultato voluto

Concatenazione campi con indice numerico

Inviato: ven 5 mag 2023, 8:41
da Andrea90
H725,

Qualcosa di simile:

Codice: Seleziona tutto

let
    Source = Excel.CurrentWorkbook(){[Name="Tabella1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", Int64.Type}, {"Column2", type text}, {"Column3", type text}, {"Column4", type text}, {"Column5", type text}, {"Column6", type text}, {"Column7", type text}, {"Column8", type any}, {"Column9", type any}}),
    #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1, Int64.Type),
    #"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Added Index", {"Column1", "Index"}, "Attribute", "Value"),
    #"Grouped Rows" = Table.Group(#"Unpivoted Columns", {"Column1"}, {{"TempTab", each Table.AddIndexColumn(_, "Index_Row", 1, 1), type table [Column1=nullable number, Index=number, Attribute=text, Value=text]}}),
    #"Removed Other Columns" = Table.SelectColumns(#"Grouped Rows",{"TempTab"}),
    #"Expanded TempTab" = Table.ExpandTableColumn(#"Removed Other Columns", "TempTab", {"Column1", "Index", "Attribute", "Value", "Index_Row"}, {"Column1", "Index", "Attribute", "Value", "Index_Row"}),
    #"Added Prefix" = Table.TransformColumns(#"Expanded TempTab", {{"Index_Row", each "[numero=" & Text.From(_, "it-IT"), type text}}),
    #"Added Suffix" = Table.TransformColumns(#"Added Prefix", {{"Index_Row", each _ & "]", type text}}),
    #"Merged Columns" = Table.CombineColumns(#"Added Suffix",{"Value", "Index_Row"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Merged"),
    #"Pivoted Column" = Table.Pivot(#"Merged Columns", List.Distinct(#"Merged Columns"[Attribute]), "Attribute", "Merged"),
    #"Merged Columns1" = Table.CombineColumns(#"Pivoted Column",{"Column2", "Column3", "Column4", "Column5", "Column6", "Column7"},Combiner.CombineTextByDelimiter(",", QuoteStyle.None),"Result"),
    #"Added Custom" = Table.AddColumn(#"Merged Columns1", "Custom", each Text.Trim([Result], {",", " "})),
    #"Removed Other Columns1" = Table.SelectColumns(#"Added Custom",{"Column1", "Custom"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Other Columns1",{{"Column1", "Idx"}, {"Custom", "Text"}}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Renamed Columns",{{"Text", type text}})
in
    #"Changed Type1"
Andrea

Concatenazione campi con indice numerico

Inviato: ven 5 mag 2023, 9:28
da H725
Soluzione quasi perfetta, ma alla riga 3 e 13 vengono indicate n. colonne ma il file che viene importato, capita di avere da 2 a 12 colonne e il comando deve essere continuamente variato per ogni file. C'è la possibilità di renderlo dinamico?

Concatenazione campi con indice numerico

Inviato: ven 5 mag 2023, 9:34
da Andrea90
H725,

Il codice che ti ho fornito riporta esattamente il risultato da te desiderato, indicato nel foglio "Risultato".
H725 ha scritto: ven 5 mag 2023, 9:28 ma il file che viene importato, capita di avere da 2 a 12 colonne e il comando deve essere continuamente variato per ogni file.
Non ho capito, riformula la frase o fai un esempio pratico.

Andrea

Concatenazione campi con indice numerico

Inviato: ven 5 mag 2023, 11:27
da Enrico Galli
Mi inserisco: credo intenda dire che nei passaggi a riga 3 (modificato tipo, che forse si può eliminare) e 13 (combina colonne), viene indicato un numero particolare di colonne (i nomi sono hard-coded). Ma il file di origine può variare nel numero di colonne

Concatenazione campi con indice numerico

Inviato: ven 5 mag 2023, 11:44
da Andrea90
Grazie Enrico Galli,

se la questione sollevata dall'utente è quella allora penso che per renderla dinamica possa bastare qualcosa come:

Codice: Seleziona tutto

let
    Source = Excel.CurrentWorkbook(){[Name="Tabella1"]}[Content],
    #"Added Index" = Table.AddIndexColumn(Source, "Index", 0, 1, Int64.Type),
    #"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Added Index", {"Column1", "Index"}, "Attribute", "Value"),
    #"Grouped Rows" = Table.Group(#"Unpivoted Columns", {"Column1"}, {{"TempTab", each Table.AddIndexColumn(_, "Index_Row", 1, 1), type table [Column1=nullable number, Index=number, Attribute=text, Value=text]}}),
    #"Removed Other Columns" = Table.SelectColumns(#"Grouped Rows",{"TempTab"}),
    #"Expanded TempTab" = Table.ExpandTableColumn(#"Removed Other Columns", "TempTab", {"Column1", "Index", "Attribute", "Value", "Index_Row"}, {"Column1", "Index", "Attribute", "Value", "Index_Row"}),
    #"Added Prefix" = Table.TransformColumns(#"Expanded TempTab", {{"Index_Row", each "[numero=" & Text.From(_, "it-IT"), type text}}),
    #"Added Suffix" = Table.TransformColumns(#"Added Prefix", {{"Index_Row", each _ & "]", type text}}),
    #"Merged Columns" = Table.CombineColumns(#"Added Suffix",{"Value", "Index_Row"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Merged"),
    #"Pivoted Column" = Table.Pivot(#"Merged Columns", List.Distinct(#"Merged Columns"[Attribute]), "Attribute", "Merged"),
    ColNames = List.RemoveFirstN(Table.ColumnNames(#"Pivoted Column"), 2),
    #"Merged Columns1" = Table.CombineColumns(#"Pivoted Column",ColNames,Combiner.CombineTextByDelimiter(",", QuoteStyle.None),"Result"),
    #"Added Custom" = Table.AddColumn(#"Merged Columns1", "Custom", each Text.Trim([Result], {",", " "})),
    #"Removed Other Columns1" = Table.SelectColumns(#"Added Custom",{"Column1", "Custom"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Other Columns1",{{"Column1", "Idx"}, {"Custom", "Text"}}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Renamed Columns",{{"Text", type text}})
in
    #"Changed Type1"
Andrea

Concatenazione campi con indice numerico

Inviato: ven 5 mag 2023, 12:03
da H725
Esattamente, grazie a Andrea e a Enrico che è intervenuto.