Ultimo valore di fila diverso da zero (Microsoft Excel)
Brian ha una riga di numeri con 240 celle. In questa riga, i numeri sono in costante diminuzione e alla fine, a un certo punto in quelle 240 celle, diventeranno 0. Gli zeri continueranno a riempire le celle rimanenti nella riga. Brian deve scrivere un’equazione che restituirà l’ultimo valore diverso da zero nella riga.
Esistono diversi modi per restituire il valore desiderato.
(Non sembra che sia sempre così con Excel? Puoi trovare molti modi per ottenere un risultato.) In generale, potresti usare una formula normale o una formula di matrice.
Se vuoi usare una formula normale, eccone una che puoi provare:
=OFFSET(A6,0,(COUNT(A6:IF6)-COUNTIF(A6:IF6,0))-1)
La funzione CONTA.SE conta il numero di valori zero e la funzione CONTA.SE determina il numero di celle nell’intervallo. Sottraendo l’uno dall’altro e regolando di 1 si ottiene il valore OFFSET nella “matrice” di celle in cui si trova l’ultimo valore diverso da zero. Questa formula presuppone che i valori inizino nella colonna A; se iniziano in una colonna diversa, sarà necessario regolare il valore fornito dalla porzione COUNT / COUNTIF della formula per rappresentare l’offset dalla prima colonna.
Ecco una variazione più breve della formula, basata sull’esecuzione di un offset dal lato destro dell’intervallo piuttosto che dal lato sinistro:
=OFFSET(IF6,0,-COUNTIF(A6:IF6,0))
In questo caso è importante che IF6 sia l’effettivo limite destro dell’intervallo. La formula funziona contando il numero di valori zero nell’intervallo (tutti a destra dell’intervallo) e quindi calcolando l’indirizzo di cella dell’ultima cella (IF6) meno il numero di zeri.
Ecco una versione che utilizza invece la funzione INDICE:
=INDEX(A6:IF6,,MATCH(0,A6:IF6,0)-1)
Questa versione è ancora più breve, utilizzando la funzione LOOKUP:
=LOOKUP(1,1/(6:6>0),6:6)
È possibile utilizzare anche formule di matrice. (Le formule di matrice vengono inserite premendo Ctrl + Maiusc + Invio.) Questa utilizza la funzione INDIRETTA:
=INDIRECT("R6C" & MAX((A6:IF6>0)*COLUMN(A6:IF6)),FALSE)
Questa formula di matrice utilizza un’interessante implementazione della funzione CERCA per trovare il risultato corretto:
=LOOKUP(9.99999999999999E+307,IF(A6:IF6<>0,A6:IF6))
Ecco un’altra formula di matrice che può essere utilizzata, questa volta utilizzando la funzione OFFSET per trovare l’ultimo valore diverso da zero nella riga 6:
=OFFSET(A6,0,MIN(IF(6:6=0,COLUMN(6:6),300))-2)
Ecco una variazione ancora più breve:
=MIN(IF(A6:IF6>0,A6:IF6))
Tutte queste formule presentate finora dipendono dal fatto che i numeri nella riga in realtà diminuiscono: vanno da qualunque sia il numero iniziale e vanno costantemente verso lo zero. Se i numeri non diminuiscono, puoi utilizzare un diverso tipo di formula di matrice per determinare l’ultimo valore diverso da zero nella riga:
=INDEX(6:6,MAX(IF(A6:IF6<>0,COLUMN(A6:IF6))))
La formula determina prima la colonna massima nella riga (in questo caso la riga 6) che ha un valore diverso da zero, quindi utilizza la funzione INDICE per ottenere il valore da quella colonna in quella riga.
Come puoi vedere, ci sono diversi modi per trovare l’ultimo valore diverso da zero di fila. Scegli quello che colpisce la tua fantasia; non c’è giusto o sbagliato in questo caso.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (3785) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: