creare file con dati varibili in orizzontale e trasportarli in verticale L’argomento è risolto

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

Moderatore: Utilizzo_prof_Excel

Rispondi

mb63
Messaggi: 123 | Topic creati
Iscritto il: gio 16 lug 2020, 15:09
Ringraziato: 5 volte

creare file con dati varibili in orizzontale e trasportarli in verticale

Messaggio da mb63 »

Buona sera

sono alle prese con la conversione delle fatture da formato elettronico XMl a tabelle in power query ( e sono all'inizio dei miei studi in ambito power query) per poi controllare la contabilità

Allego un file d'esempio dove ho già inserito alcuni passaggi per adeguare il codice articolo

ma avrei bisogno di creare una tabella da orizzontale a verticale con righe variabili per poter calcolare il valore totale del prodotto ma avere anche il dettaglio delle che variano a secondo dell'articolo acquistato

Grazie
Allegati
valori da verticali.xlsx
(26.31 KiB) Scaricato 18 volte



Autore del topic
mb63
Messaggi: 123 | Topic creati
Iscritto il: gio 16 lug 2020, 15:09
Ringraziato: 5 volte

creare file con dati varibili in orizzontale e trasportarli in verticale

Messaggio da mb63 »

buona sera

allego un nuovo file con dei passaggi fatti da me pper ottenere il risultato desiderato

secondo voi si può ottenere lo stesso risultato con meno passaggi rispetto a quelli da me utilizzati, dove ho creato tante tabelle quanti sono i tipi di addebiti diversi che vengono applicati agli articoli, e che possono variare in base alla regola stabilita dall'ufficio accise sui carburanti e lubrificanti?

dopo aver creato 5 tabelle ho fatto 5 merge con la fattura originale per ottenere il costo di ogni singolo prodotto

grazie
Allegati
valori da verticali a orizzontali (2).xlsx
(49.66 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:

creare file con dati varibili in orizzontale e trasportarli in verticale

Messaggio da Andrea90 »

mb63,

Prendi tutto il tuo codice della query "fattura" e sostituiscilo con:

Codice: Seleziona tutto

let
    Origine = Excel.CurrentWorkbook(){[Name="Tabella1"]}[Content],
    #"Modificato tipo" = Table.TransformColumnTypes(Origine,{{"CodiceValore", type text}, {"Descrizione", type text}, {"valore", type number}}),
    #"Aggiunta colonna personalizzata" = Table.AddColumn(#"Modificato tipo", "adegua codice valore", each Text.Combine(List.RemoveItems(Text.ToList([CodiceValore]),{"A".."Z"})), type text),
    #"Riordinate colonne" = Table.ReorderColumns(#"Aggiunta colonna personalizzata",{"CodiceValore", "adegua codice valore", "Descrizione", "valore"}),
    #"Sostituito valore" = Table.ReplaceValue(#"Riordinate colonne","",null,Replacer.ReplaceValue,{"adegua codice valore"}),
    temp_Tab = Table.SelectRows(#"Sostituito valore", each ([adegua codice valore] <> null)),
    #"Ricopiato in basso" = Table.FillDown(#"Sostituito valore",{"adegua codice valore"}),
    Change_Data = Table.TransformColumns(#"Ricopiato in basso",{{"CodiceValore", each try if Number.From(_) > 0 then "Valore" else _ otherwise _ , type text}}),
    #"Rimosse colonne" = Table.RemoveColumns(Change_Data,{"Descrizione"}),
    #"Colonna trasformata tramite Pivot" = Table.Pivot(#"Rimosse colonne", List.Distinct(#"Rimosse colonne"[CodiceValore]), "CodiceValore", "valore"),
    #"Merge di query eseguito" = Table.NestedJoin(#"Colonna trasformata tramite Pivot", {"adegua codice valore"}, temp_Tab, {"CodiceValore"}, "fattura", JoinKind.LeftOuter),
    #"Tabella fattura espansa" = Table.ExpandTableColumn(#"Merge di query eseguito", "fattura", {"Descrizione"}, {"Descrizione"}),
    #"Riordinate colonne1" = Table.ReorderColumns(#"Tabella fattura espansa",{"adegua codice valore", "Descrizione", "Valore", "COU", "IC", "EC", "IB", "IG"}),
    #"Inserita somma" = Table.AddColumn(#"Riordinate colonne1", "Totale", each List.Sum({[Valore], [COU], [IC], [EC], [IB], [IG]}), type number)
in
    #"Inserita somma"
Avrai il risultato desiderato in un'unica query.

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
mb63
Messaggi: 123 | Topic creati
Iscritto il: gio 16 lug 2020, 15:09
Ringraziato: 5 volte

creare file con dati varibili in orizzontale e trasportarli in verticale

Messaggio da mb63 »

Ciao Andrea
gentilissimo come sempre, è proprio quello che mi serviva

volevo solo chiedere alcune spiegazioni , andando a vedere il codice

Codice: Seleziona tutto

 temp_Tab = Table.SelectRows(#"Sostituito valore", each ([adegua codice valore] <> null)),
in questo caso hai creato una tabella temporanea che non si vede nel file ?
perchè visivamente tutti i codici alfabetici e i relativi valori non si vedono più

Codice: Seleziona tutto

Change_Data = Table.TransformColumns(#"Ricopiato in basso",{{"CodiceValore", each try if Number.From(_) > 0 then "Valore" else _ otherwise _ , type text}}
questo è anche un pezzo di codice che non si vede

scusami se ti faccio tutte queste domande ma non essendo un informatico e non avendo studiato power query certe cose non riesco a capirle
anche il merge l'hai scritto tu manualmente il pezzo di codice perchè selezionado la rotellina compare questa immagine

Immagine

grazie anche per avermi risposto oggi che è un giorno festivo
Avatar utente

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

creare file con dati varibili in orizzontale e trasportarli in verticale

Messaggio da Andrea90 »

mb63,

PowerQuery salva i passaggi che fai, pertanto tu sei in grado di poterli richiamare in ogni momento (ed é quello che ho fatto nel passaggio del merge con la tabella temporanea).

Un’altra cosa che puoi fare è scrivere il passaggio in modo manuale, e questo è utile nei casi in cui l’interfaccia utente non sia in grado di eseguire in automatico il codice che ti serve (quelli che tu hai indicato come “non si vedono”)

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
mb63
Messaggi: 123 | Topic creati
Iscritto il: gio 16 lug 2020, 15:09
Ringraziato: 5 volte

creare file con dati varibili in orizzontale e trasportarli in verticale

Messaggio da mb63 »

grazie , ma nell'immagine che ti ho postato non si vede??
poi io l'ho capito perchè ho già fatto altri merge come hai visto nel mio file precedente????
Andrea90 ha scritto: dom 22 mag 2022, 11:09 PowerQuery salva i passaggi che fai, pertanto tu sei in grado di poterli richiamare in ogni momento (ed é quello che ho fatto nel passaggio del merge con la tabella temporanea).

Autore del topic
mb63
Messaggi: 123 | Topic creati
Iscritto il: gio 16 lug 2020, 15:09
Ringraziato: 5 volte

creare file con dati varibili in orizzontale e trasportarli in verticale

Messaggio da mb63 »

Scusa ancora un help
Perché temp_tab è change_data non hanno # ad inizio riga?
Grazie
Avatar utente

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

creare file con dati varibili in orizzontale e trasportarli in verticale

Messaggio da Andrea90 »

mb63

Il merge è stato fatto manualmente, ecco perché non lo vedi con il merge standard con l’interfaccia.

Quel “#” è semplicemente una sintassi che PowerQuery utilizza per nominare i passaggi, i nomi dei passaggi non devono avere spazi, ma “TempTab” è un nome che non necessita di nulla visto che di spazi non c’è ne sono.

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