martes, 9 de junio de 2009

Alternativa a BUSCARV


Descargar el fichero: sinbuscarv.xlsx

Buscar en una tabla es una de las tareas más comunes por parte de todo gestor de información. La función BUSCARV permite una búsqueda vertical en una tabla. Existe otro función denominada BUSCARH que permite una búsqueda horizontal en una tabla. BuscarV permite búsquedas por intervalos o búsquedas exactas. Su utilización esta muy extendida, pero tiene algunos inconvenientes.

Basicamente son dos los problemas:
  • En búsqueda por intervalos la primera columna debe estar ordenada de menor a mayor. Admite tanto valores numéricos como texto, en este caso el orden de menor a mayor supone orden alfabético. El problema radica en que en ocasiones no es posible tener los datos ordenados de esta forma.
  • La tabla que constituye la base de datos requiere que la primera columna sea sobre la que luego se buscará, y todas las demás columnas deben estar a su derecha. Esto en ocasiones no es posible, y la columna que tiene la referencia principal no es la primera columna de la tabla.
Por estos motivos vamos a ver una alternativa a esta fución. Para ello utilizaremos las funciones DESREF y COINCIDIR.

=DESREF(ref;filas;columnas;alto;ancho)

La función DESREF se puede utilizar con los tres primeros agumentos o con los cinco. Si usamos todos los argumentos trabaja como una función matricial. Este no es nuestro caso. Nosotros aquí utilizaremos únicamente los tres primeros argumentos, en cuyo caso nos devuelve un valor de una celda. La forma de localizar el valor que devuelve es estableciendo una celda de referencia desde la que contar (ref), y desde ella contar hacia abajo un cierto número de filas, y hacia la derecha un cierto número de columnas. Si el número de fila fuera negativo se va hacia arriba. Si el número de columnas fuera negativo se va hacia la izquierda. Por eso en la fórmula:

=DESREF($E$4;COINCIDIR($B13;$E$5:$E$9;0);-3)

Al poner -3 columnas, esto permite movernos hacia la izquierda. Esto es importante, ya que nos permite tener la columna de referencia en el lugar que queramos y no necesariamente como primera columna.



La función COINCIDIR permite encontrar el orden que ocupa un valor que coincide con un elemento de una lista. Si existen dos o más valores nos da la coincidencia del primero.

=COINCIDIR(valor_buscado;matriz_buscada;tipo_de_coincidencia)


9 comentarios:

  1. Tengo una tabla con muchos NIFs y multitud de datos asociados, puede haber un NIF repetido y necesito preparar un ficha, donde para un NIF dado me de todos los datos ¿como lo hago pues con buscarv solo me da el primer valor para ese NIF y no sigue?

    ResponderEliminar
  2. Hola ilde.

    Puedes probar con una tabla dinámica, o simplemente ordenando por NIF, depende de lo que necesites cuando dices "... donde para un NIF dado me de todos los datos".

    Un saludo.

    ResponderEliminar
  3. Gracias Adolfo por tu respuesta, a ver si puedo ser mas explicito. Estoy tratando de hacer una ficha individualizada para una serie de empresas, y tengo datos en diversas pestañas del un libro de excel. Esos datos pueden tener varias veces el NIF buscado, y cuando el la ficha le hago un BUSCARV para un concepto concreto en la parte de la ficha correspondiiente se para al encontrar ese NIF, y no sigue aún habiendo mas filas con el NIF buscado Gracias

    ResponderEliminar
  4. Hola Ilde.

    Parece que el problema está en la forma en la que tienes organizada la información de partida.

    Lo ideal es tener los datos en forma de base de datos, de esta manera se puede trabajar estupendamente.

    Como aún no me hago idea de cómo tienes organizados los datos, si quieres, puedes enviarme un correo con el fichero y así te puedo orientar mejor.

    Mi correo es:
    financieras@gmail.com

    Un saludo.

    ResponderEliminar
  5. Gracias Adolfo, te adjunto hoja por mail.

    ResponderEliminar
  6. Hola, este blog y otros me han servido mucho. Se que no tiene mucho que ver pero podría utilizar la función buscarV para traer imégenes asi como lo hago con los datos sencillos? En otro caso, ¿cómo podría hacerlo?

    ResponderEliminar
  7. excelente como siempre tenia una pregunta se podira trabajar la misma formula pero que
    no empiece a buscar el dato de arriba hacia abajo sino de ABAJO HACIA ARRIBA
    muchas gracias y que Dios te bendiga

    ResponderEliminar
    Respuestas
    1. Hola Paola.
      Imagino que lo que necesitas es localizar varios valores con BUSCARV ya que la función BUSCARV cuando hay varios valores siempre te da el primero.
      Creo que con la siguiente entrada del Blog se solucionará tu problema ya que te permite obtener todos los valores que existan y no solo el primero. Mira el siguiente enlace.
      BUSCARV para valores repetidos
      Un saludo.

      Eliminar
  8. Hola buenos dias! estoy trabjando sobre un archivo en el cual necesito realizar una busqueda en V ... la intension es buscar no por el numero de la columna (orden) sino por el nombre de la columna (el tilulo) la intension es que cuando yo aplique el filtro en la hoja 1 me busque en la hoja 2 el valor corrspondiente al filtro..

    ResponderEliminar