cercare valore in altra tabella e inserire formula per generare tabella dati 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


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

cercare valore in altra tabella e inserire formula per generare tabella dati

Messaggio da mb63 »

buon pomeriggio

sempre alle prese con le fatture elettroniche, avrei bisogno di una spiegazione.

in una colonna del file del fornitore viene indicata la prima riga del DDT di riferimento ( all'interno della stessa fattura ci sono più DDT),
io creo una tabella dove sono indicati numero e riga iniziale poi inserisco una colonna aggiuntiva con a la formula ( che però non è corretta ),

Codice: Seleziona tutto

[RiferimentoNumeroLinea]-1
ma in realtà dovrebbe partire dalla 2 riga , il valore della colonna dovrebbe essere ad esempio seconda riga del riferimentonumerolinea-1

poi l'altro problema è che nell'ultima riga, nella seconda colonna deve riportare l'ultimo numero della riga che si trova però in un'altra tabella chiamata Linee_ddt

spero di essere stato chiaro e se qualcuno mi può insegnare se c'è un metodo più rapido per arrivare al risultato che vi ho inserito nella query Elenco DDT vi ringrazio
Allegati
tabella ddt.xlsx
(192.4 KiB) Scaricato 17 volte


Avatar utente

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

cercare valore in altra tabella e inserire formula per generare tabella dati

Messaggio da Andrea90 »

Ciao mb63 ,

I passaggi della tua query "elenco ddt" li ho sostituiti con questi:

Codice: Seleziona tutto

let
    Origine = Excel.CurrentWorkbook(){[Name="Tabella1"]}[Content],
    #"Filtrate righe" = Table.SelectRows(Origine, each ([NumeroDDT] <> null)),
    #"Rimosse altre colonne" = Table.SelectColumns(#"Filtrate righe",{"NumeroDDT", "RiferimentoNumeroLinea"}),
    #"Riordinate colonne" = Table.ReorderColumns(#"Rimosse altre colonne",{"RiferimentoNumeroLinea", "NumeroDDT"}),
    #"Modificato tipo" = Table.TransformColumnTypes(#"Riordinate colonne",{{"RiferimentoNumeroLinea", Int64.Type}, {"NumeroDDT", Int64.Type}}),
    #"Ordinate righe" = Table.Sort(#"Modificato tipo",{{"RiferimentoNumeroLinea", Order.Ascending}}),
    Indice = Table.AddIndexColumn(#"Ordinate righe", "Indice", 0, 1, Int64.Type),
    #"Aggiunta colonna personalizzata" = Table.AddColumn(Indice, "Fine Ddt", each try List.First({Indice[RiferimentoNumeroLinea]{[Indice]+1}-1}) otherwise max_ddt, Int64.Type),
    #"Rimosse colonne" = Table.RemoveColumns(#"Aggiunta colonna personalizzata",{"Indice"}),
    #"Riordinate colonne1" = Table.ReorderColumns(#"Rimosse colonne",{"RiferimentoNumeroLinea", "Fine Ddt", "NumeroDDT"})
in
    #"Riordinate colonne1"
Prima di far questo ho sostituito la tua terza query con un passaggio che mi calcola il massimo numero disponibile, e l'ho chiamata "max_ddt"
che come vedrai è l'output della riga finale "elenco ddt". (Questo può essere fatto anche in altri modi, io ho fatto così per far prima).

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

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

cercare valore in altra tabella e inserire formula per generare tabella dati

Messaggio da mb63 »

grazie Andrea
ma non hai postato il file nuovo ??
max_ddt ??

scusami ancora
Avatar utente

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

cercare valore in altra tabella e inserire formula per generare tabella dati

Messaggio da Andrea90 »

Ciao mb63,

max_ddt è semplicemente il list.max della tua terza query (quella con una sola colonna con l’elenco dei numeri linea)... otterrai un solo valore numerico (327) che comparirà nell ultima riga della tua seconda query (quella con il codice che ti ho girato).

Questa è il codice per la terza query (identico a quella scritta da te tranne che per l'ultimo step che ho aggiunto):

Codice: Seleziona tutto

let
    Origine = Excel.CurrentWorkbook(){[Name="Tabella1"]}[Content],
    #"Modificato tipo" = Table.TransformColumnTypes(Origine,{{"NumeroDDT", Int64.Type}, {"DataDDT", type datetime}, {"RiferimentoNumeroLinea", Int64.Type}, {"NumeroLinea", Int64.Type}, {"CodiceTipo", type text}, {"CodiceValore", type text}, {"Descrizione", type text}, {"Quantita", Int64.Type}, {"UnitaMisura", type text}, {"PrezzoUnitario", type number}, {"PrezzoTotale", type number}, {"AliquotaIVA", Int64.Type}, {"Tipo", type text}}),
    #"Rimosse altre colonne" = Table.SelectColumns(#"Modificato tipo",{"NumeroLinea"}),
    #"Filtrate righe" = Table.SelectRows(#"Rimosse altre colonne", each ([NumeroLinea] <> null)),
    #"Massimo calcolato" = List.Max(#"Filtrate righe"[NumeroLinea])
in
    #"Massimo calcolato"
Puoi assegnarli il nome che preferisci, basta che poi ti ricordi di modificarlo anche nella seconda query, quando lo richiamo all’interno del passaggio “aggiunta colonna personalizzata”

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

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

cercare valore in altra tabella e inserire formula per generare tabella dati

Messaggio da mb63 »

grazie Andrea
ma non hai postato il file nuovo ??
max_ddt ??

penso che tu intenda questo

List.Max({}, -1)

ma non so dove inserirlo

scusami ancora

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

cercare valore in altra tabella e inserire formula per generare tabella dati

Messaggio da mb63 »

Mi spiace veramente tanto disturabrti di domenica ma ho fatto le modifiche segnalate ma sicuramente mi sono perso qualcosa, perchè pur facendo aggiorna mi segnala che l'ultima riga del ddt è la 327, ma poi nel foglio 3, la formula comunque è sbagliata e il prospetto non si aggiorna con i valori che ti ho riportato nella tabella

grazie
Allegati
tabella ddtv2.xlsx
(190.11 KiB) Scaricato 13 volte
Avatar utente

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

cercare valore in altra tabella e inserire formula per generare tabella dati

Messaggio da Andrea90 »

Ciao mb63,

Hai cancellato tutto il codice che c'era prima nella seconda query sostituendolo con quello che ti ho girato nel primo messaggio?

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

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

cercare valore in altra tabella e inserire formula per generare tabella dati

Messaggio da mb63 »

Si

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

cercare valore in altra tabella e inserire formula per generare tabella dati

Messaggio da mb63 »

scusami va bene

ho avuto problemi con il pc si era bloccato ecco la causa
Avatar utente

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

cercare valore in altra tabella e inserire formula per generare tabella dati

Messaggio da Andrea90 »

Ciao,

strano perché ho aperto il tuo file, l'ultimo che hai girato e questa e la query che ho trovato:

Codice: Seleziona tutto

let
    Origine = Excel.CurrentWorkbook(){[Name="Tabella1"]}[Content],
    #"Modificato tipo" = Table.TransformColumnTypes(Origine,{{"NumeroDDT", Int64.Type}, {"DataDDT", type datetime}, {"RiferimentoNumeroLinea", Int64.Type}, {"NumeroLinea", Int64.Type}, {"CodiceTipo", type text}, {"CodiceValore", type text}, {"Descrizione", type text}, {"Quantita", Int64.Type}, {"UnitaMisura", type text}, {"PrezzoUnitario", type number}, {"PrezzoTotale", type number}, {"AliquotaIVA", Int64.Type}, {"Tipo", type text}}),
    #"Rimosse colonne" = Table.RemoveColumns(#"Modificato tipo",{"NumeroLinea", "CodiceTipo", "CodiceValore", "Descrizione", "Quantita", "UnitaMisura", "PrezzoUnitario", "PrezzoTotale", "AliquotaIVA", "Tipo"}),
    #"Filtrate righe" = Table.SelectRows(#"Rimosse colonne", each ([NumeroDDT] <> null)),
    #"Rimosse colonne1" = Table.RemoveColumns(#"Filtrate righe",{"DataDDT"}),
    #"Riordinate colonne" = Table.ReorderColumns(#"Rimosse colonne1",{"RiferimentoNumeroLinea", "NumeroDDT"}),
    #"Aggiunta colonna personalizzata" = Table.AddColumn(#"Riordinate colonne", "fine ddt", each [RiferimentoNumeroLinea]-1),
    #"Ricopiato in alto" = Table.FillUp(#"Aggiunta colonna personalizzata",{"fine ddt"}),
    #"Riordinate colonne1" = Table.ReorderColumns(#"Ricopiato in alto",{"RiferimentoNumeroLinea", "fine ddt", "NumeroDDT"})
in
    #"Riordinate colonne1"
E che ti da come risultato:

Immagine

Questa è invece la query che ti ho girato:

Codice: Seleziona tutto

let
    Origine = Excel.CurrentWorkbook(){[Name="Tabella1"]}[Content],
    #"Filtrate righe" = Table.SelectRows(Origine, each ([NumeroDDT] <> null)),
    #"Rimosse altre colonne" = Table.SelectColumns(#"Filtrate righe",{"NumeroDDT", "RiferimentoNumeroLinea"}),
    #"Riordinate colonne" = Table.ReorderColumns(#"Rimosse altre colonne",{"RiferimentoNumeroLinea", "NumeroDDT"}),
    #"Modificato tipo" = Table.TransformColumnTypes(#"Riordinate colonne",{{"RiferimentoNumeroLinea", Int64.Type}, {"NumeroDDT", Int64.Type}}),
    #"Ordinate righe" = Table.Sort(#"Modificato tipo",{{"RiferimentoNumeroLinea", Order.Ascending}}),
    Indice = Table.AddIndexColumn(#"Ordinate righe", "Indice", 0, 1, Int64.Type),
    #"Aggiunta colonna personalizzata" = Table.AddColumn(Indice, "Fine Ddt", each try List.First({Indice[RiferimentoNumeroLinea]{[Indice]+1}-1}) otherwise max_ddt, Int64.Type),
    #"Rimosse colonne" = Table.RemoveColumns(#"Aggiunta colonna personalizzata",{"Indice"}),
    #"Riordinate colonne1" = Table.ReorderColumns(#"Rimosse colonne",{"RiferimentoNumeroLinea", "Fine Ddt", "NumeroDDT"})
in
    #"Riordinate colonne1"
e che mi da come risultato:

Immagine

Quindi, o ho aperto il file sbagliato, oppure quello che hai allegato non è quello che hai modificato.

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