¿Cómo puedo devolver el penúltimo valor de texto de una fila?

¿Cómo puedo devolver el penúltimo valor de texto de una fila?

¿Alguien podría decirme la fórmula de Excel para devolver el penúltimo valor de texto de una fila?

Logré encontrar esta fórmula para el último valor de texto: =INDEX(U2:Y2,MATCH(REPT("z",255),U2:Y2)), pero ¿no estoy seguro de cómo obtengo el penúltimo valor?

Respuesta1

LA FORMULA

Aquí hay un método alternativo para devolver elnorteésimo valor de texto desde el final.

=IFERROR(INDEX(U2:Y2,LARGE(ISTEXT(U2:Y2)*COLUMN(U2:Y2),2)-COLUMN(U2)+1),"")

Esta fórmula debe ingresarse como una fórmula matricial usando Ctrl+ Shift+ Enteren lugar de simplemente Enter. Sabrá que lo hizo bien si aparecen llaves { } en ambos extremos.


CÓMO FUNCIONA

=IFERROR(...,"")volverá en blanco si el resto de la fórmula es un error. Recibirá un error `#¡VALOR!# si no hay al menosnortevalores de texto en el rango.

INDEX(U2:Y2,...)toma la matriz y devuelve algún valor dentro de in. INDEX(U2:Y2,4)devolvería el cuarto elemento de la matriz que, en este caso, es lo que esté en X2.

LARGE(..,2)toma alguna matriz y devuelve el segundo valor más grande dentro de esa matriz. Cambie el 2a cualquier otro número para obtener elnorteº artículo más grande. La SMALLfunción es similar pero devuelve elnortethpequeñísimovalor en su lugar.

ISTEXT(U2:Y2)*COLUMN(U2:Y2)es la parte que te hace ingresarla como una fórmula matricial. La ISTEXTfunción devolverá una matriz de valores TRUE/ FALSEsi cada celda contiene un valor de texto. Por ejemplo, esto podría ser {TRUE,TRUE,FALSE,FALSE,TRUE}. La COLUMNfunción devuelve el número de columna. En este caso, será {21,22,23,24,25}. Estos dos se multiplican ( TRUE=1, FALSE=0). Para mi ejemplo, la matriz final sería {21,22,0,0,25}. Introducir esto en la LARGEfórmula anterior devolvería 22porque es el segundo valor más grande.

-COLUMN(U2)+1simplemente ajuste el valor que se ingresa en la INDEXfórmula para tener en cuenta el hecho de que estamos comenzando en la columna 22 pero la matriz U2:Y2tiene solo 5 columnas. Queremos devolver un valor entre 1y 5, no 21y 25.


EJEMPLO

Digamos que tienes los siguientes datos en el rango U2:Y2:

Hello | World | meep | 5 | boop

El penúltimo valor de texto es meepasí que veamos cómo funciona la fórmula. Voy a completar los cálculos paso a paso. Puedes ver una ejecución similar de esto usando "Evaluar fórmula" en la cinta "Fórmulas", aunque es posible que no esté en el mismo orden.

=IFERROR(INDEX(U2:Y2,LARGE(ISTEXT(U2:Y2)*COLUMN(U2:Y2),2)-COLUMN(U2)+1),"")
=IFERROR(INDEX(U2:Y2,LARGE(ISTEXT(U2:Y2)*COLUMN(U2:Y2),2)-21+1),"")
=IFERROR(INDEX(U2:Y2,LARGE(ISTEXT(U2:Y2)*COLUMN(U2:Y2),2)-20),"")
=IFERROR(INDEX(U2:Y2,LARGE({TRUE,TRUE,TRUE,FALSE,TRUE}*COLUMN(U2:Y2),2)-21),"")
=IFERROR(INDEX(U2:Y2,LARGE({TRUE,TRUE,TRUE,FALSE,TRUE}*{21,22,23,24,25},2)-21),"")
=IFERROR(INDEX(U2:Y2,LARGE({21,22,23,0,25},2)-21),"")
=IFERROR(INDEX(U2:Y2,23-21),"")
=IFERROR(INDEX(U2:Y2,2),"")
=IFERROR(INDEX({"Hello","World","meep",5,"boop"},2),"")
=IFERROR("meep","")
="meep"

Respuesta2

Sospecho que su metodología puede no ser la más eficiente... pero usando lo que ya ha logrado, podría utilizar sus conocimientos actuales MATCH.restar unopara darle el nuevo límite para buscar y devolver el último texto de esa nueva área. El OFFSETmétodo le permitirá redefinir el área de búsqueda con su nuevo límite, así:

=INDEX(U2:Y2,MATCH(REPT("z",255),OFFSET(U2,0,0,1,MATCH(REPT("z",255),U2:Y2)-1)))

Respuesta3

=INDEX(D7:P7,MATCH(REPT("z",255),D7:P7)-1)

información relacionada