miércoles, marzo 26, 2008

Búsqueda por campo con INDICE y COINCIDIR

Supongamos que tenemos una lista como ésta



Queremos crear una fórmula que nos permita hacer una búsqueda o por nombre o por número de identidad. Esta situación refleja varias de las consultas que he recibido últimamente.

Podemos pensar en una solución usando BUSCARV, pero en esta nota veremos como hacerlo usando INDICE, COINCIDIR y validación de datos.

Empezamos por crear dos nombres, que usaremos en validación de datos:

Identidad = Hoja1!$B$2:$B$8
nombre = Hoja1!$A$2:$A$8

En otro lugar de la hoja creamos una tabla donde mostraremos los datos extraídos



En la celda A12 creamos una lista desplegable con Validación de datos



En la celda B12 también creamos una lista desplegable. Aquí usamos la función INDIRECTO para que en la lista aparezcan los valores del rango del nombre que ha sido elegido en la celda A12



En las celdas C12 y D12, donde queremos que aparezcan los datos buscados, ponemos esta fórmula, basada en INDICE y COINCIDIR:

Para el campo Edad: =INDICE(C2:C8,COINCIDIR(B12,INDIRECTO(A12),0))

Para el campo Profesión: =INDICE(D2:D8,COINCIDIR(B12,INDIRECTO(A12),0))

Hay que prestar atención al uso de la función INDIRECTO para interpretar el valor de la celda A12 como rango nominado.



Un detalle a agregar es dar formato condicional a las celdas C12 y D12, para evitar ver el valor #N/A cuando cambiamos el valor de la celda A12




Usamos la función ESERROR y el color de la fuente, en caso de ser VERDADERO, blanco. De esta manera, en caso de error, el contenido de la celda se vuelve "invisible".

El archivo del ejemplo se puede descargar aquí


Technorati Tags:

11 comentarios:

  1. Hola!

    Bueno he llegado akí mientras buskaba la mejor solución para lo ke kería lograr en excel ^^
    Esta entrada es una de las ke más me ayudó...

    Se agradece el tiempo dedikado a todo esto ^^

    Saludos!

    PD: kreo ke me pasaré bien seguido por akí ^^

    ResponderBorrar
  2. Me gusta ver entradas valiosas que aportas en este blog. mi comentario es que no me queda claro por qué INDIRECTO va a la cela A12 y nó a B12 que devuelve yá el dato buscado

    ResponderBorrar
  3. ME GUSTARIA REALIZARTE UNA PREGUNTA JORGE.
    QUIERO REPRESENTAR UN GRAFICO DE UNA ÚNICA SERIE PERO LOS DATOS ESTÁN DISTRIBUIDOS COMO UNA MATRIZ.
    COMO PUEDO PASAR LOS DATOS DE UNA MATRIZ A SOLO UNA COLUMNA??

    GRACIAS POR ADELANTADO

    ResponderBorrar
  4. Hola Jorge
    lo que hace indirecto es interpretar el valor que aparece en A12 como nombre que contiene un rango. De esta manera la lista desplegable en B12 cambia de acuerdo a lo que pusimos en A12.

    ResponderBorrar
  5. En relación a la pregunta sobre como pasar datos de una matriz a una única columna o fila, se puede hacer con funciones (también con macros). La respuesta no es trivial y la estaré publicando en los próximos días.

    ResponderBorrar
  6. Hola Jorge, hace tiempo que no uso excel y estoy siguiendo tus tutoriales para hacer un formulario,
    Mi duda es que yo tengo solo dos casillas, una donde selecciono mis opciones dentro de una lista desplegable, y la otra donde deberían de aparecer los precios (dependiendo de la opción que hayas elejido).
    En ese caso, como debería de estar escrita la fórmula? he tratado de quitar el indirecto y me salen errores D:
    Ayuda! >:

    ResponderBorrar
  7. No me queda claro qué es lo que estás intentando hacer. Puedes mandarme el archivo por mail con una explicación?

    ResponderBorrar
  8. Hola Jorge: He leido esta entrada y creo que es exactamente lo que busco. Sin embargo al completar la casilla B12 me da: error" El origen actualmente evalúa un error ¿desea continuar?"
    En la casilla A12 al utilizar la validación al abrir la flecha sale solo el nombre de los nombres definidos: nombres e identificacion. Sospecho que la definición de nombres es incorrecta y por eso la validación no llama a los nombres, sin embargo al marcar la columna respectiva, aparece el nombre por lo que supuestamente sí esta tomando el nombre. desde ya gracias, y muy interesante le blog.
    Lucas

    ResponderBorrar
  9. Siempre puedes descargar el archivo con el ejemplo y ver dónde está el problema en tu modelo.

    ResponderBorrar
  10. Hola Joge L.
    En primer lugar, te diré que son muy efectivas tus explicaciones. Queria decirte que el ejemplo de esta página no se abre

    ResponderBorrar
  11. Lamentablemente el archivo estaba en un sitio de descargas que cerró sin previo aviso y no he guardado una copia.

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.