
En Excel, ¿existe una fórmula de Excel que pueda usar para completar la columna B (en mi ejemplo a continuación) que devolverá el último número de fila que contiene una cadena específica, antes de la fila actual?
Los datos no son contiguos.
Por ejemplo, los datos pueden ser:
| A (value) B (prev recent instance)
----------------------------------------------
1 | Mike
2 | John
3 | Mike 1
4 | Tony
5 | Mike 3
6 | John 2
Luego querré expandirlo para que la Columna C muestre la instancia más antigua.
Parece muy similar a esta pregunta: ¿Qué es una fórmula de Excel que me devolverá el último número de fila de una celda dentro de un rango que contiene datos específicos?, sin embargo, esa pregunta y respuesta requiere que los datos sean contiguos.
Editar: Me gustaría que la respuesta fuera una fórmula de hoja de trabajo; sin embargo, si cree que es más apropiado implementarla a través de VBA, inclúyala también en su respuesta con los pros y los contras de cada enfoque.
Respuesta1
Para encontrar el ejemplo más antiguo, a continuación se menciona la fórmula: -
=LOOKUP(2,1/(A:A=A2),ROW(A:A))
Para su mejor comprensión, a continuación se muestra la captura de pantalla.
Respuesta2
Suponiendo que sus datos comienzan en A1, pruebe esta "fórmula matricial" en B2
=IF(COUNTIF(A$1:A1,A2),MATCH(2,1/(A$1:A1=A2)),"")
confirmado con CTRL+SHIFT+ENTER y copiado
o puedes usar esta versión sin matriz
=IF(COUNTIF(A$1:A1,A2),MATCH(2,INDEX(1/(A$1:A1=A2),0)),"")
En Excel 2007 o posterior, puede simplificar con IFERROR, es decir, la versión de la matriz se convierte en
=IFERROR(MATCH(2,1/(A$1:A1=A2)),"")
Para la fila "Primera instancia" en la columna C, pruebe esta fórmula en C1 copiada hacia abajo
=MATCH(A1,A$1:A1,0)
Nota: las fórmulas no devuelven estrictamente "números de fila", sino los números de fila relativos para sus datos, es decir, la fila 1 de sus datos devuelve 1, etc.