Hola GALI,
Me parece buena idea la de explicar como funciona (ultimamente con tus explicaciones estas que te sales

)
Como una opcion mas tambien se podria usar DESREF() con la consiguiente
'volatilizacion' de la formula al igual que INDIRECTO:
FILA(DESREF(A1;;;CONTARA(...)))
Sin embargo, para los que nos lean, aunque largo "el artilugio" me parece de lo mas:
- rapido
- universal/flexible
- compacto (en el sentido de no ocupar mas celdas)
- eficiente (no volatilidad combinada con rapidez, es decir solo recalcula cuando es realmente necesario)
- y, por extraño que parezca, transparente
Respecto a esto ultimo comparemos las dos expresiones que pongo a continuacion:
INDICE(A:A;1):INDICE(A:A;CONTARA(C3:C20))
Range(Cells(1, "A"), Cells(Application.CountA([C3:C20]), "A"))
Me parece que la ultima en VBA no le asusta a nadie hoy en dia, por que entonces nos asusta tanto la primera
Concluyendo, mi formula inicial adaptada a los valores de texto sigue siendo mi favorita
con diferencia comparada con las opciones que hemos discutido hasta este momento:
{=K.ESIMO.MENOR(SI(FILA(C3:C21)=MAX(FILA(C3:C21));FILAS(C3:C21);SI(C3:C21;FILA(C3:C21)-FILA(B3)+1));FILA(INDICE(A:A;2):INDICE(A:A;1+CONTAR(C3:C21))))-K.ESIMO.MENOR(SI(C3:C20<>"";FILA(C3:C20)-FILA(B3)+1);FILA(INDICE(A:A;1):INDICE(A:A;CONTARA(C3:C20))))}
Obviamente, no descarto que pronto venga una mejor.