Brian tiene una fila de números con 240 celdas. En esta fila, los números están disminuyendo constantemente y eventualmente, en algún punto de esas 240 celdas, se convertirán en 0. Los ceros continuarán llenando las celdas restantes en la fila. Brian necesita escribir una ecuación que devuelva el último valor distinto de cero en la fila.

Hay varias formas de devolver el valor deseado.

(¿No parece que siempre sea así con Excel? Puede encontrar muchas formas de obtener un resultado). En general, podría usar una fórmula regular o una fórmula de matriz.

Si quieres usar una fórmula normal, aquí tienes una que puedes probar:

=OFFSET(A6,0,(COUNT(A6:IF6)-COUNTIF(A6:IF6,0))-1)

La función CONTAR.SI cuenta el número de valores cero y la función CONTAR determina el número de celdas en el rango. Restar uno del otro y ajustar en 1 da el valor de DESPLAZAMIENTO en la «matriz» de celdas donde se encuentra el último valor distinto de cero. Esta fórmula asume que los valores comienzan en la columna A; si comienzan en una columna diferente, entonces deberá ajustar el valor proporcionado por la parte COUNT / COUNTIF de la fórmula para representar el desplazamiento de la primera columna.

Aquí hay una variación más corta de la fórmula, basada en hacer un desplazamiento desde el lado derecho del rango en lugar del lado izquierdo:

=OFFSET(IF6,0,-COUNTIF(A6:IF6,0))

En este caso, es importante que IF6 sea el extremo derecho real del rango. La fórmula funciona contando el número de valores cero en el rango (todos en el lado derecho del rango) y luego calculando la dirección de celda de la última celda (IF6) menos el número de ceros.

Aquí hay una versión que usa la función INDICE, en su lugar:

=INDEX(A6:IF6,,MATCH(0,A6:IF6,0)-1)

Esta versión es aún más corta, usando la función BUSCAR:

=LOOKUP(1,1/(6:6>0),6:6)

También se pueden utilizar fórmulas de matriz. (Las fórmulas de matriz se ingresan presionando Ctrl + Shift + Enter.) Esta usa la función INDIRECTA:

=INDIRECT("R6C" & MAX((A6:IF6>0)*COLUMN(A6:IF6)),FALSE)

Esta fórmula de matriz utiliza una implementación interesante de la función BUSCAR para encontrar el resultado correcto:

=LOOKUP(9.99999999999999E+307,IF(A6:IF6<>0,A6:IF6))

Aquí hay otra fórmula de matriz que se puede usar, esta vez usando la función DESPLAZAMIENTO para encontrar el último valor distinto de cero en la fila 6:

=OFFSET(A6,0,MIN(IF(6:6=0,COLUMN(6:6),300))-2)

Aquí hay una variación aún más corta:

=MIN(IF(A6:IF6>0,A6:IF6))

Todas estas fórmulas presentadas hasta ahora dependen del hecho de que los números de la fila en realidad disminuyen: van desde el número inicial y se dirigen constantemente hacia cero. Si los números no disminuyen, puede usar un tipo diferente de fórmula de matriz para determinar el último valor distinto de cero en la fila:

=INDEX(6:6,MAX(IF(A6:IF6<>0,COLUMN(A6:IF6))))

La fórmula primero determina la columna máxima en la fila (en este caso la fila 6) que tiene un valor no igual a cero, luego usa la función INDICE para obtener el valor de esa columna en esa fila.

Como puede ver, hay varias formas de encontrar el último valor distinto de cero en una fila. Elija el que más le guste; no hay bien o mal en este caso.

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (11250) se aplica a Microsoft Excel 2007, 2010, 2013 y 2016.

Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí: link: / excel-Last_Non-Zero_Value_in_a_Row [Último valor distinto de cero en una fila].