BUSCARV invertido

21/08/2003 - 20:23 por HVA | Informe spam
Estoy leyendo la ayuda de la funcion BUSCARV y tiene la
opcion de ordenar o no la matriz de busqueda. Hasta ahí,
todo bien. Pero yo necesito devolver la última
coincidencia y no la primera. Existe alguna forma de
hacerlo?

Gracias

Hernán
 

Leer las respuestas

#1 Héctor Miguel
21/08/2003 - 22:57 | Informe spam
Hola, Herman !

... leyendo la ayuda de la funcion BUSCARV ... yo necesito devolver la última coincidencia y no la primera.
... alguna forma de hacerlo?



==> (hasta donde yo se) solo es posible usando una formula "matricial" con la funcion =Indice(matriz,num_fila,num_columna)
Suponiendo una "base de datos" en: A2:B20
Suponiendo que "buscas" el dato "puesto" en: D1
La formula que "tendrias que" usar es
=Indice(A2:B20,K.Esimo.Menor(Si(A2:A20Ñ,Fila(A2:A20)-Fila(A2)+1,Fila(A20)+1),Contar.Si(A2:A20,D1)),2)
(toma nota de que "mi" separador de argumentos es la coma "," NO punto y coma ";")
=> al "introducirla" o editarla hay que "terminarla" con {Ctrl}+{Mayusc}+{Enter} <
==> Tratare de explicar "como funcionan" los argumentos para =Indice(matriz,num_fila,num_columna)
a) para el argumento "matriz", no hay problema... suponemos A2:B20
*) b) para el argumento "num_fila" => lo explico en seguida < c) para el argumento "num_columna", no hay problema... suponemos 2 (el dato "correspondiente" en la columna B)

*) la formula "K.Esimo.Menor(Si(A2:A20Ñ,Fila(A2:A20)-Fila(A2)+1,Fila(A20)+1),Contar.Si(A2:A20,D1))" signiifca:
"Dame" el menor de entre (una condicion) y "cuantos hay"

==> la "condicionante" es:
Condicion: Si(matriz=Dato_buscado,
Si Verdadero: Fila(Columna_1_matriz)-Fila(Columna_1_matriz_primer_celda)+1,
Si Falso: Fila(Columna_1_matriz_ultima_celda)+1,

==> para "saber" Cuantos hay?: Contar.Si(Columna_1_matriz,Dato_buscado)

==> por lo tanto, el argumento (num_fila) "queda" como sigue: [El menor es...] K.Esimo.Menor(Condicion,Cuantos_hay)

(Espero no haber "complicado el asunto") :))
_______
Saludos,
Héctor.
MS-MVP

Preguntas similares