Búsqueda doble sobre cualquier parte de una tabla de Excel

Búsqueda doble sobre cualquier parte de 


una tabla de Excel.

En el ejercicio de hoy  Buscaremos un elemento sobre cualquier parte de una tabla o rango de celdas y retornaremos el valor correspondiente a esa fila que deseemos.

...Necesito generar una fórmula similar al buscarv, pero que tenga los siguientes argumentos:
=buscador(A6:F10,"Miranda","nombre")
Es decir, la macro debe analizar toda la base de datos hasta encontrar a "Miranda" y arrojar como resultado su valor equivalente de la columna "nombre":



la idea es, por tanto, clara.. buscaremos en la totalidad de nuestra tabla el valor buscado (que podrá estar en cualquier fila o columna!!), y una vez localizado, obtendremos su equivalente al nombre de campo indicado.

Como se aprecia en la imagen en la celda H6 hemos añadido una Validación de datos tipo Lista en la que desplegaremos el nombre del campo del que queremos obtener el resultado.
Mientras que en I6 escribiremos cualquier valor único (en caso de duplicados fallaría nuestra fórmula) que realmente queremos localizar en cualquier parte de nuestra tabla (rango A6:F10):


La fórmula matricial deseada aparece en J6:
=INDIRECTO(DIRECCION(K.ESIMO.MAYOR(SI(($I$6=$A$7:$F$10)*1=1;FILA(A7:F10);0);1);COINCIDIR($H$6;$A$6:$F$6;0)))

Fijémonos de la potencia de esta fórmula.. ya que con ella no necesito indicar en qué columna debe encontrar nuestro valor buscado (celda I6), puesto que lo busca en toda la tabla... para localizar la fila donde se halla.
Posteriormente, aprovechándonos de la Validación de datos en H6 y de la ya conocida función COINCIDIR obtenemos la celda con el resultado final.

La clave de esta matricial reside en el primer argumento de la función DIRECCION:
K.ESIMO.MAYOR(SI(($I$6=$A$7:$F$10)*1=1;FILA(A7:F10);0);1)
donde con el condicional SI:
SI(($I$6=$A$7:$F$10)*1=1;FILA(A7:F10);0)
obtendríamos una matriz de ceros y un número de fila, para el caso o celda donde se de la coincidencia con el valor buscado. Forzamos que el condicional nos devuelva el número de la fila en cuestión.
Podemos ver, a parte, el resultado de esa matriz:
Búsqueda doble sobre cualquier parte de una tabla de Excel.



Lo siguiente es sencillo.. basta aplicar la función K.ESIMO.MAYOR (xxxx; 1) para conseguir el valor más alto (el número de fila buscado) -también valdría la función MAX-.

Con esto y daría respuesta a la lectora del blog, sin emplear macros...
De todas formas, en una entrada posterior, daré el código para resolver esto con una función VBA personalizada.
SHARE

Oscar perez

Arquitecto especialista en gestion de proyectos si necesitas desarrollar algun proyecto en Bogota contactame en el 3006825874 o visita mi pagina en www.arquitectobogota.tk

  • Image
  • Image
  • Image
  • Image
  • Image
    Blogger Comment
    Facebook Comment

0 comentarios:

Publicar un comentario