BuscarV en varias hojas y en varios libros

Ya en alguna ocasión hemos hablado de la utilidad de la función BuscarV de Excel para buscar y extraer datos en una tabla (puedes mirar cómo es aquí, en este post). Casi con toda seguridad, si manejas de manera habitual muchos datos, habrás tenido ocasión de usarla y la conoces. Si no es así, desde luego te animo a que lo hagas, estoy segura de que no lo lamentarás y no es nada complicada.

Como probablemente sepas, la función BuscarV encuentra un valor en la primera columna de una tabla y extrae el dato que le digas de esa misma línea. Hoy vamos ir un poco más lejos y  suponer que por la circunstancia  que sea, tienes los datos de tu tabla distribuidos en varias hojas. A lo mejor no es lo más frecuente, pero se podría dar.

Veamos un ejemplo. Imagina que tienes una serie de artículos y éstos los has organizado por distintas secciones o grupos. Por ejemplo, vendemos artículos de papelería y de regalo. Cada grupo de artículos los hemos escrito en una hoja distinta y a las hojas les hemos dado el nombre del tipo de artículos que contienen, una hoja se llama papelería y otra regalo. Así:

Hojas para la función BuscarV
Disposición de las hojas. En una los artículos de papelería

Los artículos de regalo en la otra hoja así:

Distribución de hojas para la función BuscarV
Disposición de las hojas. En otra hoja los artículos de regalo.

Ahora tenemos una tercera hoja en la cual queremos escribir el código del artículo en una celda cualquiera, y que Excel nos extraiga los demás datos relacionados. Hemos preparado la hoja de la manera siguiente:

Disposición de las hojas para la función BuscarV
Hoja en la cual pondremos la función y el código a buscar.

Al dejar la celda C3 en blanco, pretendemos que cuando escribamos el código en ella, las celdas C4 y C5 muestren la descripción y precio correspondiente a dicho artículo. Para ello, en C4 y C5 es donde escribiremos las fórmulas BuscarV que lo harán posible.

Si sólo tuviéramos una hoja, por ejemplo la de regalos, escribiríamos las fórmulas siguientes:

=BUSCARV($C$3;regalo!$A$3:$C$6;2;0)

en la celda C4 para que se muestre la descripción y

=BUSCARV($C$3;regalo!$A$3:$C$6;3;0)

en la celda C5 para que se muestre el precio, respectivamente.

(* Nota:Te recuerdo que C3 es el valor buscado (el código), A3:C6 la posición de la tabla de datos, 2 y 3 corresponden a las columnas en las que están la descripción y precio en la tabla de datos. Finalmente el 0 indica que el valor buscado debe coincidir exactamente. Los símbolos $ indican que la referencia es absoluta o fija, ya que la tabla y dónde escribimos el valor a buscar, no van a variar de posición.)

Si escribes las fórmulas, probablemente te aparecerá un error. Sin embargo, si escribes un código de artículo en C3, por ejemplo el 3838-V, te aparecerán la descripción y el precio. El error es debido a que en C3 no habíamos escrito un código.

¿Y qué ocurre con los artículos de papelería?

Observa que delante del rango A3:C6 aparece regalo!, esto indica que se refiere a la hoja con ese nombre.

Para hacer que Excel busque el código en ambas hojas, le tendremos que decir de alguna manera que en el caso de no encontrarlo en la hoja regalo, lo busque en la hoja papelería.

Para esto, una posible solución es usar una función que es si.error.

Buscamos la función y miramos su ayuda:

Ayuda Si.Error
Descripción de la función Si.Error que aparece en la ayuda

Quiere decir que si el primer apartado (argumento de la función, el que está situado antes del punto y coma) diera error, se mostraría el segundo. Es lo que queremos, queremos que en el caso de dar error el buscarV en la hoja regalos, se busque en la hoja papelería.

Escribimos la fórmula siguiente en C4:

=SI.ERROR(BUSCARV($C$3;regalo!$A$3:$C$6;2;0);

BUSCARV($C$3;papelería!$A$3:$C$6;2;0))

Si el primer BuscarV (en rojo) diera error, se hace el segundo (en verde). Fíjate que delante del rango de la tabla aparece el nombre de la hoja correspondiente con exclamación (regalo! y papeleria!) para indicar dónde tiene que buscar.

Y para el precio del artículo en la celda C5 escribiremos una fórmula muy similar:

=SI.ERROR(BUSCARV($C$3;regalo!$A$3:$C$6;2;0);

BUSCARV($C$3;papelería!$A$3:$C$6;3;0))

Escribe un código que se encuentre en cualquiera de las hojas, indistintamente, lo encontrará.

Si quieres hacerlo casi perfecto, puedes modificar la fórmula anterior para que cuando no se encuentre el artículo ni en regalos ni en papelería, muestre un texto avisando, por ejemplo “Artículo no encontrado”

Vamos pues.Escribe las fórmulas:

=SI.ERROR(BUSCARV($C$3;regalo!$A$3:$C$6;2;0);

SI.ERROR(BUSCARV($C$3;papelería!$A$3:$C$6;2;0);”Artículo no encontrado”))

en la celda C4.

=SI.ERROR(BUSCARV($C$3;regalo!$A$3:$C$6;3;0);

SI.ERROR(BUSCARV($C$3;papelería!$A$3:$C$6;3;0);”Artículo no encontrado”))

en la celda C5.

Cuidado con cerrar bien los paréntesis, tiene que haber tantos paréntesis de cierre como de apertura, y por supuesto que estén colocados correctamente. El texto de aviso tiene que ir entre comillas. Puedes escribir este o cualquier otro que te parezca, pero entre comillas siempre.

Lo que hacen estas dos últimas fórmulas, es buscar primero en regalos, si da error, entonces buscan en papelería y si esta segunda búsqueda también diera error, entonces muestra el mensaje.

Prueba ahora con códigos que estén en cualquiera de las hojas y con otros que no estén.

¿Funcionó?

¿Qué ocurre si además de estar en distintas hojas, las tablas están en distintos libros? Pues también, también funciona.

Para ello mantén abiertos los dos libros. Si te es más fácil, organízalos con la opción de menú Vistas/organizar todo:

Vistas
Detalle de las vistas de los dos libros

En este caso, los artículos de papelería están en Libro3 y los de regalo en el otro, como ya te habrás dado cuenta. Queremos que si no se encuentra en regalos, se busque en el otro libro, en la hoja papelería. Cuando escribas la fórmula, actúa igual que lo harías si tuvieras un solo libro desplazando el cursor para buscar en libro3 el rango de la tabla. Verás que delante del rango que señales aparece ahora [libro3] es decir, el nombre del libro entre corchetes. La fórmula quedaría así:

=SI.ERROR(BUSCARV($C$3;regalo!A3:C6;2;0);BUSCARV($C$3;[Libro3]papelería!$A$3:$C$8;2;0))

De nuevo te señalo en rojo el primer buscarV y en verde el segundo.

Escribe un código de artículo, lo tiene que encontrar, tanto si está en uno de los libros como en el otro.

Cuando guardes libro3 y lo cierres, verás que se añade la ubicación de la carpeta en que se encuentra en la función. Más o menos así:

C:\Users\Equipo\Desktop\[Libro3.xlsx]papelería’!$A$3:$C$6

Esto quiere decir que no deberías mover ni borrar libro3, ya que en tal caso no funcionaría la función.

Cuando abras el libro que contiene el BuscarV, te aparecerá un aviso de que tiene vínculos. Debes actualizarlo si quieres que refleje los cambios que haya podido haber.

Aviso
Excel muestra un aviso en la parte superior, indicando que el libro tiene vínculos.

Un cambio en libro3 se refleja en el resultado de la función. Por ejemplo, si cambias la descripción o el precio de un artículo, se reflejará, ya que están vinculados.

Bueno, pues eso es todo. (¡Ah! Aunque se use menos, la función BuscarH también existe y es muy parecida. Puedes aplicarla de forma similar, intercambiando filas por columnas).

¿Te funcionó?

 

Anuncios

6 thoughts on “BuscarV en varias hojas y en varios libros

  1. Hola que tal mira tengo un problema tengo un trabajo donde me piden que de un libro y de una columna saque verifique que en otro libro de Excel columna con el mismo dato Que aparezca Ya esa es información y si no parece que la busquen un tercer libro y se aparece en el tercer el libro es el tercer libro me tiene que esté Arjona información y copiarla en el segundo libro pero en orden cronológico crees que me puedan ayudar gracias

    • Buenos días Alejandro, gracias por pasar por aquí.
      El problema que planteas, en realidad no es demasiado difícil. Sin embargo creo que la mejor opción es realizar una pequeña macro que llevara a cabo todas estas acciones. Sobre todo si son muchos datos los que tienes que comparar, el tiempo empleado en realizar la macro te compensaría después con creces.
      La macro recorrería la columna del dato a buscar en el primer libro, y cada dato que encuentra lo busca en el segundo libro. Si lo encuentra, bien, si no, lo buscaría en el tercero. En el caso de encontrarlo en el tercero lo copia en el segundo.
      Finalmente, no tiene que preocuparte lo del orden cronológico, pues como última acción, la macro ordenaría por la columna de fechas y quedaría correcto desde el punto de vista cronológico.
      Espero que te ayude. Saludos.

  2. Buenas tardes, me ha funcionado la formula, pero cuando intento agregar un tercer “buscarv” me marca error. Que puedo hacer?

    • Hola Gustavo, muchas gracias por pasar por aquí. Es complicado sin ver tu fórmula darte una respuesta 100% correcta. Sin embargo estos casos suele ser que no se han situado bien los paréntesis. Cuando anidamos funciones (escribimos una dentro de otra como argumento) la verdad que puede llegar a complicarse bastante. Revisa bien los argumentos y comienza comprobando que haya tantos paréntesis de cierre como de apertura. También comprueba que esté colocados en la posición correcta.
      Un truco que a lo mejor te puede ayudar, es usar el botón de “insertar función” que aparece en la barra de fórmulas.Este botón es muy útil porque te indica los argumentos de las funciones, el resultado de cada uno de ellos y el resultado global de la función. De esta manera puedes encontrar más fácilmente el error, que te aparecerá señalado en rojo.
      Por último, si ves que no consigues dar con el problema, tal vez puedas copiar por aquí la fórmula y le echo un vistazo.
      Saludos-

  3. Hola espero me puedas ayudar, tengo dos tablas, la primera con numero de documento, nombre y la tercera columna la direccion, y en la segunda tabla, l aprimera columna tiene producto, importe y la 3 columna la cntidad. Entonces me piden que un cuadro coloque el documento del cliente y salga su nombre, direccion y los productos que tiene con los montos y cantidades.
    No se como relacionarlos y me piden usar la funcion: buscarv
    Gracias

    • Hola Patricia, gracias por tu comentario.
      En realidad no es muy complicado de hacer, aunque lo ideal sería utilizar Access ya que te facilitaría mucho las cosas y en el propio diseño de la base de datos podrías incluir lo que te comentaré.
      Necesitas establecer una relación entre ambas tablas. Dicha relación la tienes que establecer en base a un campo (columna en el caso de Excel). Este campo tendría que tener valores únicos en la primera tabla, de forma que identifique claramente cada cliente, creo que podría ser el número de documento. En la segunda tabla los valores pueden estar repetidos. Lo único que tendrías que hacer ahora es añadir una columna a la segunda tabla que tuviera el valor que lo relaciona con la primera, es decir a qué cliente (número de documento) pertenece cada una de esas filas.
      El único problema que le veo es que buscarv te encontraría sólo el primero de ellos en el caso de que el cliente tuviera varias líneas. Para encontrar el resto tendrías que usar otras posibilidades de Excel, como filtros, o una macro.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s