Pagina 1 di 2

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

Inviato: dom 6 dic 2020, 16:12
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

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

Inviato: dom 6 dic 2020, 17:37
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

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

Inviato: dom 6 dic 2020, 18:09
da mb63
grazie Andrea
ma non hai postato il file nuovo ??
max_ddt ??

scusami ancora

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

Inviato: dom 6 dic 2020, 18:15
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

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

Inviato: dom 6 dic 2020, 18:31
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

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

Inviato: dom 6 dic 2020, 18:40
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

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

Inviato: dom 6 dic 2020, 19:24
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

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

Inviato: dom 6 dic 2020, 19:32
da mb63
Si

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

Inviato: dom 6 dic 2020, 19:43
da mb63
scusami va bene

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

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

Inviato: dom 6 dic 2020, 19:44
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