viernes, 3 de febrero de 2012

Función BUSCARV de Calc (LibreOffice)

Una de las funciones más utilizadas en Calc de LibreOffice (u OpenOffice) es BUSCARV. Se trata de una función que nos servirá para mostrar datos de una tabla a partir de otros conocidos. Por ejemplo, que al introducir un DNI nos aparezca el nombre, apellidos, dirección... de la persona concreta en las celdas que queramos.

Vamos a aplicar el ejemplo concreto propuesto en la práctica 15 (que podéis descargar desde aquí en formato ods).

El planteamiento del ejercicio es el siguiente. Contamos con un inventario de almacén muy sencillo.

Vemos que clasifica, a través de un identificador, el producto, su descripción, los artículos que quedan en el almacén, lo que cuesta el producto y el dinero total del almacén.
Lo que pretendemos es que, a partir de el identificador podamos conocer el resto de datos. Es decir, con introducir el número correspondiente a un producto nos aparezca el nombre del producto o el coste por unidad, por ejemplo.

Concretando un poco, debemos utilizar para ello la función BUSCARV, de manera que con añadir un código identificador (columna Id. aparezca el producto en su columna).

Posicionándonos sobre C5 debemos insertar la función BUSCARV. Desde el asistente nos abre la siguiente ventana:
1. valor_buscado. Se trata de definir que valor es el que tendrá que coincidir en la otra tabla, es decir, el valor referencia. En nuestro ejemplo es el valor que escribamos en B5, es decir, el identificador que escribamos a mano.
2. matriz_buscar_en. Debemos seleccionar toda la tabla a relacionar incluyendo como primera columna la referencia y hasta la columna en la que aparezca el valor que queremos encontrar, en el ejemplo sería hasta la columna producto, es decir, la columna C. A diferencia del valor buscado, que es relativo (es decir, al arrastrar la fórmula queremos que se desplace), la matriz es absoluta, esto es inmóvil y, por lo tanto, requiere del símbolo dolar en todas sus coordenadas ($, F4).
3. índice. Define la columna en la que está el valor que nos interesa. Si hemos dicho que la columna del valor referencia es la primera, contaremos a partir de ella hasta su posición (en el ejemplo buscamos el nombre del producto, por lo tanto, la segunda columna y pondremos un 2).
4. ordenado. Básicamente implica la precisión de la relación, es decir, si ponemos un "0" sólo relacionará valores exactamente iguales; si ponemos un "1" dará un margen de imprecisión (mayúsculas por minúsculas, un error en una letra...).

De esta forma completaríamos la columna producto de la tabla control de pedidos de forma inmediata. Si queremos repetir la misma fórmula para saber si, con el stock del almacén somos capaces de cubrir el pedido, la operación es poco más compleja puesto que mezcla la opción BUSCARV con la función SI. El planteamiento sería: Si el número de artículos pedidos (D5) es mayor que el número de artículos en stock, no podremos satisfacer el pedido, si no se cumple dicha condición si podremos cumplirlo. En fórmula sería algo así:
=SI(D5>XXX;"NO";"SI")

Para completar la función, en el lugar que hemos escrito XXX, debiera aparecer una función BUSCARV que, directamente nos relacione el número de identificador que hayamos escrito con la correspondiente cantidad de producto en el almacén. Es decir, si introducimos un 4, nos debe relacionar ese dato con la cantidad de Kaspersky que tenemos en el almacén.

Por lo tanto, D% debe ser mayor que el valor que nos muestre la función BUSCARV. En este caso BUSCARV volverá a tener como valor_buscado B5 (el identificador); como matriz_buscar_en, el rango que va desde B28 hasta E37, con dolores por ser absolutas; el índice, el valor con el que nos interesa relacionar el identificador es el de la 4ª columna (Nº de artículos disponibles); y que sea exacto (0).
=SI(D5>BUSCARV(B5;B$28:$E$37;4;0);"NO";"SI")

Nota. La función BUSCARH se utiliza exactamente igual pero considerando un trabajo en filas en lugar de en columnas.

Además. Puedes añadir a la fórmula que cuando la casilla del identificador se quede en blanco deje la celda en blanco en lugar de #N/A (no aplicable).


ENLACES DE INTERÉS:


14 comentarios:

  1. comentar que en el valor Ordenado en el asistente de la función, también existe la posibilidad de poner verdadero o falso.
    Increible descripción de esta función (para mi de las más útiles).
    Muchas gracias.

    ResponderEliminar
  2. Un excelente tutorial, me sirvió mucho para poder implementar varias funcionalidades en Calc.
    Muchas gracias

    ResponderEliminar
  3. no me salio lo ultimo no puedo hacer ingreos me podria ayudar

    ResponderEliminar
  4. Estimado amigo. estoy intentando realizar lo mismo, con la diferencia es que la tabla matriz y la tabla de pedidos se encuentran en archivos diferentes. En office si se puede. En libreoffice 4.1.5 también se puede solo que es muy lento actualizar en la tabla de pedidos si la matriz es de 3000 filas x 15 columnas. (en office no es lento). Pero en libreoffice 4.2 simplemente la misma fórmula que uso en office y libreoffice 4.1.5 no funciona. Que puedo hacer?.

    ResponderEliminar
  5. Hola Jorge,
    A mí no me da problema.. si que es algo más lento que en Office. Eso sí, no tengo la 4.2 aún. Me la instalo y te digo en cuanto pueda (si no nos ayuda alguien antes, claro ;)).
    De todas formas, a Gates lo que es de gates, es cierto que para el tratamiento de grandes masas de datos, a veces, Libre no corre tanto como Office.
    Un saludo!

    ResponderEliminar
  6. Tengo exactamente el mismo problema que Jorge, las referencias absolutas que tenía en la formula "buscarv" y que funcionaban bien con libre office 4.1.4 dejaron de funcionar en al versión de libre office 4.2.
    Ha pasado algo de tiempo desde la liberación de 4.2 y no hay una corrección, asé que en el inter decidí regresar al release anterior, osea desinstalar la 4.2 e instalar la 4.1.5.

    ResponderEliminar
  7. Qué hay que agregar a la fórmula para que no aparezca n/d ???

    ResponderEliminar
  8. Muy muy buena explicación.
    Gracias

    ResponderEliminar
  9. Buenas amigos, quisiera una ayuda con un inventario. quisiera poder realizar una busqueda por nombre del producto y como resultado me de precio y cantidad.

    ResponderEliminar
  10. quiero hacer una planilla usando buscarv y me da error509 o me pone nombre !!!! puede ser xq tengo informacion en diferentes hojas o tiene que estar todo en la misma ???

    ResponderEliminar
  11. Hola,

    No sé qué hago mal pq el valor que me da es el de la celda superior al que yo quiero.
    La fórmula me parece que está bien pero está comprobado me devuelve el valor de la celda de arriba

    ResponderEliminar
  12. COMO HAGO PARA ARRASTRAR HACIA ABAJO Y ME TRAIGA LOS DATOS PARA TODAS LAS FILAS?
    Me trae bien el primer dato, pero cuando arrastro hacia abajo (como von office, me copia el mismo que el primero)

    ResponderEliminar
  13. Hola: Tengo 2 listas de datos en 2 hojas diferentes, una es Familia y la otra Integrantes. En una tercera hoja debo ingresar una fórmula que me permita, cambiando el n° de documento que está en la hoja Integrantes, buscar el apellido que está en la hoja Familia. En la 1° columna de la hoja Familia están los n° de familia que aparecen en la hoja Integrantes pero en la columna 2. En la 1° columna de la hoja Integrantes están los documentos. Como puedo hacer? Gracias

    ResponderEliminar