Jump to content

[CERRADO] Buscar con varios parametros


Recommended Posts

Hola.

Me gustaria crear una hoja de busqueda de datos sobre una base de datos existente, ordenada en columnas por clientes, periodos y meses.

Esa búsqueda se realizaria introduciendo un codigo de cliente y que me devolviera todos los datos de ese cliente de la base de datos en una tabla.

El problema es que al utilizar buscarv solo me busca el valor inicial introducido (el codigo cliente) y no me deja seleccionar un segundo parametro de busqueda, como podria ser la columna "periodo", necesaria para diferenciar las celdas... No se si me explico bien, por eso adjunto un archivo de excel con esos datos resumidos. (los valores en "0" serian los datos a devolver de la base de datos).

Es un problema que se me plantea en varios lugares, si me pudieran ayudar, les estaria muy agradecida, ya que no se me ocurre nada que lo pueda solucionar y tengo un tiempo limitado de entrega...

Muchas gracias

ejemplo busqueda varios parametros.zip

Link to post
Share on other sites

Respuesta: buscar con varios parametros

Hola edenass.

En el archivo adjunto te dejo dos soluciones, entre las muchas que se pueden dar.

En la primera no importa que que la base de datos esté ordenada, pero sí que tenga la misma estructura que presentas. Si son muchos los datos puede ralentizar un poco el ordenador.

En la segunda, teóricamente más rápida, los datos deben estar ordenados por cliente y período y también seguir la misma estructura que en el ejemplo (todos los clientes tienen los mismos períodos). Tiene creado un nombre para facilitar las fórmulas.

Espero que te pueda servir. Un saludo.

Búsqueda varios parámetros.zip

Link to post
Share on other sites

Respuesta: buscar con varios parametros

¡Muchas gracias!

Es justo lo que estaba buscando.

Lo único es que me temo que no voy a saber repetir tu proceso en el archivo original. Nunca he usado la función índice, ni la de sumaproducto, y tampoco sé que es un rango Rcli...

¿Podrías explicarme brevemente qué has hecho en las 2 soluciones y con qué intención?

De todas formas, en este caso en particular, tanto los codigos de cliente como los periodos van a estar siempre en el mismo orden, por lo que a lo mejor la 2ª opción sería la óptima.

Muchas gracias de nuevo.

Link to post
Share on other sites

Respuesta: buscar con varios parametros

Hola de nuevo.

Para el primer método:

Indice(r,f,c) busca el dato del rango r que se encuentre en la fila f y columna c (estos últimos referidos al rango). El rango r debe ser el cuadro de datos, sólo el que contenga datos. En tu ejemplo es C5:N25.

Para encontrar la fila, utilizamos Sumaproducto. Esta fórmula suma los productos resultantes de multiplicar los parámetros entre sí. Podemos aprovechar que también opera con comparaciones, por lo tanto comparamos el código cliente (B2 de la hoja Buscar) con los clientes de la tabla, que en tu caso están en A2:A25 de la hoja datos. Hacemos lo mismo con el período (columna B, y datos en B5:B25). Los resultados serán siempre verdadero o falso y que multiplicados entre sí se convierten a 1 ó 0. El resultado de esta parte sería p.e. 0/0/1/0/0... por lo tanto podríamos saber en cuál es la coincidencia del cliente con el período en la tabla (el que tenga valor 1). Para conocer su posición damos los números de fila de los datos (Fila(..)). Como estamos multiplicando 0 ó 1 por el número de fila, el resultado de la función es la fila absoluta donde se encuentra la coincidencia y lo que necesitamos es la relativa a la tabla, para ello restamos el número de la primera fila de la tabla y le sumamos 1.

Ya tenemos el valor de fila de Índice. Ahora necesitamos conocer el de la columna. Con la fórmula COINCIDIR(r,b,0) buscamos la posición dentro de un rango r, del valor b. El tecer parámetro debe ser un cero.

Con esta fórmula no importa que los datos estén desordenados, no haya algún cliente en algún período, etc. el resultado siempre será correcto.

Segundo método:

Si la tabla siempre está ordenada, es decir, todos los c.cliente iguales están juntos, los períodos son correlativos y siempre son los mismos y los meses también están en el mismo orden, podemos simplificar algo la fórmula. Para ello utilizamos el Administrador de Nombres (Fórmulas -> Administrador de nombres). Podemos nombrar a una celda, un rango de ellas, una fórmula,etc. con un nombre y utilizar éste en su lugar. En tu caso he creado uno llamado RCli que lo que hace es crear un nuevo rango a partir de la tabla de datos pero con sólo los del cliente elegido. Y luego sólo tenemos que buscar con Indice a que período corresponde y en que mes. En realidad la fórmula podría ser:

=INDICE(DESREF(datos!$C$5:$N$25;COINCIDIR(buscar!$B$2;datos!$A$5:$A$25;0)-1;;CONTAR.SI(datos!$A$5:$A$25;buscar!$B$2));$B12;COLUMNAS($C$11:C$11))

y olvidarnos del nombre Rcli pero, ya que la fórmula para buscar el rango es siempre la misma, opté por darle un nombre y simplificar la función final. Por cierto, lo que hace Desref es reducir la tabla datos a sólo los del cliente que se haya seleccionado en B2.

En cualquier caso para adaptarlo a tu hoja, no tienes más que comparar las direcciones de cada rango y celda, ver cómo están en ambos archivos y cambiarlas por sus correspondientes en la hoja final.

Espero que te haya servido la explicación, aunque reconozco que no es muy buena.

Un saludo.

Link to post
Share on other sites
  • 1 year later...

Hola Juangoco:

Te recomiendo que abras un Tema nuevo, ya que este es antiguo y seguro que nada tiene que ver con el tuyo, sube un archivo en 2003 y zipeado para recibir la ayuda solicitada.

Procedo a cerrar este tema.

Saludos, Luis.

Link to post
Share on other sites
Guest
This topic is now closed to further replies.


  • Posts

    • Hola, tengo un calendario con un scroll por meses, La idea es que haya un calendario por cada aula, me explico con un ejemplo; imaginemos que en el "aula 1" el jueves 8-10 hay una clase de "MI" de 10-14 (marcada en naranja) y como estoy en el aula 1 al darle a "FILTRAR" debería aparecerme, pero en el momento que yo cambie en el selector de aulas a "aula2" debería desaparecer la clase de "MI" del día 8-10 y aparecer "Master uñas" de 9-14 y así con cualquier fecha de la barra de desplazamiento y con cada aula. Esta explicado también en el documento. he intentado varias cosas pero no hay manera, socorro!!! Gracias de antemano Calendario_aulas.xlsm
    • Buenos días, tengo un problema en este Excel, yo hacia el pedido con normalidad le daba a guardar y se me guardaba directamente en la hoja de listado, y automáticamente se me cambiaba el numero de pedido, ahora al darle a guardar me sale un error y no se me actualiza directamente el numero, y al guardarse en listado me sale REF. SI ME PODRIAN AYUDAR, ES ALGO QUE ME URGE. GRACIAS!! PEDIDOS 2019.xlsm
    • Alguien por favor que me ayude con esto, he intentado de cierta forma pero de verdad que no me sale... si es que se necesita mas explicación que creo que sí me avisan pero ayudaaaa...
    • Muchas gracias por tu ayuda! Me viene muy muy bien tu fórmula. Saludos,
    • Hola! Gracias por tu respuesta, pero lo que busco es que cuando pulse un botón además de sustituir el texto en el archivo word, ya predefinido en la macro en el excel, copie solo la gráfica de una hoja que le indiquemos y la pegue en un espacio determinado del archivo word... Tengo el siguiente código pero no me funciona.. (no está incluido en el excel anterior) Sheet("grafica1").Shapes(1).CopyPicture   Paragraphs(.Paragraphs.Count).Range.Start).Select Selection.Collapse Direction:=wdCollapseEnd Paste Gracias igualmente por tu ayuda! Saludos,
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy