Stringa Concatenata

Non è propriamente un programma di BI, ma nelle sue versioni più recenti anche Excel può fare grandi cose!

Moderatore: Utilizzo_prof_Excel

Rispondi

domemarti93
Messaggi: 30 | Topic creati
Iscritto il: mar 11 ago 2020, 14:21
Ringraziato: 1 volta

Stringa Concatenata

Messaggio da domemarti93 »

Buonasera,
cerco una soluzione per risolvere il seguente problema.
Ho una colonna composta dalla concatenazione di vari codici dimensione.
Facendo il "Dividi Colonna in base al delimitatore", mi ritrovo i codici corrispondenti diverse dimensioni sotto la stessa colonna.
Vorrei che il risultato fosse quello riportato nella tabella che ho creato manualmente!
Qualcuno saprebbe aiutarmi o indicarmi una possibile soluzione.
grazie a tutti.
Allegati
esempio.xlsx
(11.23 KiB) Scaricato 15 volte


Avatar utente

Andrea90
Messaggi: 2193 | Topic creati
Iscritto il: dom 28 giu 2020, 19:41
Luogo: Bologna
Ringraziato: 666 volte
Contatta:

Stringa Concatenata

Messaggio da Andrea90 »

Ciao domemarti93,

Non ho compreso come fai a sapere a priori sotto quale colonna andranno i vari campi a seguito dell'operazione di splitbydelimiter (o meglio quale logica utilizzare per l'assegnazione).

Andrea
Se hai gradito l'aiuto che hai ricevuto considera di contribuire alle spese per il mantenimento del forum facendo una libera DONAZIONE --> Link

Ricordarsi di segnare come "RISOLTE" le discussioni per le quali si è ricevuto un feedback positivo. Per vedere come fare --> Link

Autore del topic
domemarti93
Messaggi: 30 | Topic creati
Iscritto il: mar 11 ago 2020, 14:21
Ringraziato: 1 volta

Stringa Concatenata

Messaggio da domemarti93 »

Ogni codice dimensione può assumere dei valori predefiniti. Ad esempio d01 può essere 01d1, 02d2 e così via per le altre dimensioni.
Avatar utente

Andrea90
Messaggi: 2193 | Topic creati
Iscritto il: dom 28 giu 2020, 19:41
Luogo: Bologna
Ringraziato: 666 volte
Contatta:

Stringa Concatenata

Messaggio da Andrea90 »

Ciao domemarti93 ,

Ti giro un esempio di come intendo io per logica di funzionamento.

Il codice utilizzato è il seguente:

Codice: Seleziona tutto

let
    Origine = Excel.CurrentWorkbook(){[Name="Tabella1"]}[Content],
    #"Modificato tipo" = Table.TransformColumnTypes(Origine,{{"Stringa", type text}}),
    #"Aggiunta colonna indice" = Table.AddIndexColumn(#"Modificato tipo", "Indice", 1, 1, Int64.Type),
    #"Suddividi colonna in base al delimitatore" = Table.ExpandListColumn(Table.TransformColumns(#"Aggiunta colonna indice", {{"Stringa", Splitter.SplitTextByDelimiter("-", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Stringa"),
    #"Modificato tipo1" = Table.TransformColumnTypes(#"Suddividi colonna in base al delimitatore",{{"Stringa", type text}}),
    #"Testo inserito dopo il delimitatore" = Table.AddColumn(#"Modificato tipo1", "Column", each Text.AfterDelimiter([Stringa], "d"), type text),
    #"Prefisso aggiunto" = Table.TransformColumns(#"Testo inserito dopo il delimitatore", {{"Column", each "col_" & _, type text}}),
    #"Ordinate righe" = Table.Sort(#"Prefisso aggiunto",{{"Column", Order.Ascending}}),
    #"Colonna trasformata tramite Pivot" = Table.Pivot(#"Ordinate righe", List.Distinct(#"Ordinate righe"[Column]), "Column", "Stringa")
in
    #"Colonna trasformata tramite Pivot"
Nell'esempio che ti ho girato la logica per assegnare la colonna è fornita dal numero finale di ciascun valore presente nelle celle a seguito dell'operazione di split.

Andrea
Allegati
TestSplit.xlsx
(18.3 KiB) Scaricato 19 volte
Se hai gradito l'aiuto che hai ricevuto considera di contribuire alle spese per il mantenimento del forum facendo una libera DONAZIONE --> Link

Ricordarsi di segnare come "RISOLTE" le discussioni per le quali si è ricevuto un feedback positivo. Per vedere come fare --> Link

Autore del topic
domemarti93
Messaggi: 30 | Topic creati
Iscritto il: mar 11 ago 2020, 14:21
Ringraziato: 1 volta

Stringa Concatenata

Messaggio da domemarti93 »

Buongiorno,
è possibile inserire un indice quando viene fatto il testsplit sulle righe?
Allego esempio del risultato che vorrei ottenere.
Grazie!
Allegati
TestSplit.xlsx
(22.24 KiB) Scaricato 12 volte
Avatar utente

Andrea90
Messaggi: 2193 | Topic creati
Iscritto il: dom 28 giu 2020, 19:41
Luogo: Bologna
Ringraziato: 666 volte
Contatta:

Stringa Concatenata

Messaggio da Andrea90 »

Ciao domemarti93,

Ti consiglio di aprire una nuova discussione quando hai nuove richieste, a beneficio degli altri utenti che visitano il forum.
Così da riuscire ad avere discussioni separate per ciascun problema.

Per la tua richiesta:

Codice: Seleziona tutto

let
    Origine = Excel.CurrentWorkbook(){[Name="Tabella1"]}[Content],
    #"Modificato tipo" = Table.TransformColumnTypes(Origine,{{"Stringa", type text}}),
    #"Aggiunta colonna indice" = Table.AddIndexColumn(#"Modificato tipo", "Indice", 1, 1),
    #"Riordinate colonne" = Table.ReorderColumns(#"Aggiunta colonna indice",{"Indice", "Stringa"}),
    #"Suddividi colonna in base al delimitatore" = Table.ExpandListColumn(Table.TransformColumns(#"Riordinate colonne", {{"Stringa", Splitter.SplitTextByDelimiter("-", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Stringa"),
    #"Raggruppate righe" = Table.Group(#"Suddividi colonna in base al delimitatore", {"Indice"}, {{"TempTable", each Table.AddIndexColumn(_, "Indice2",1,1), type table [Indice=number, Stringa=nullable text]}}),
    #"Rimosse colonne" = Table.RemoveColumns(#"Raggruppate righe",{"Indice"}),
    #"Tabella TempTable espansa" = Table.ExpandTableColumn(#"Rimosse colonne", "TempTable", {"Indice", "Stringa", "Indice2"}, {"Indice", "Stringa", "Indice2"}),
    #"Modificato tipo1" = Table.TransformColumnTypes(#"Tabella TempTable espansa",{{"Indice2", type number}})
in
    #"Modificato tipo1"
A presto,

Andrea
Se hai gradito l'aiuto che hai ricevuto considera di contribuire alle spese per il mantenimento del forum facendo una libera DONAZIONE --> Link

Ricordarsi di segnare come "RISOLTE" le discussioni per le quali si è ricevuto un feedback positivo. Per vedere come fare --> Link
Rispondi