Excel - Buscar multiples condiciones multiples resultados

   
Vista:

Buscar multiples condiciones multiples resultados

Publicado por Ana (18 intervenciones) el 07/08/2018 13:20:14
Hola me interesa saber como realizar un libro para conseguir el siguiente propósito:

Pongamos que tenemos varios productos con determinados componentes, los componentes pueden estar en varios de los productos. Quisiera poder obtener el resultado de cuantos productos llevan esos componentes.

Para hacerlo se me ocurre plantear en una hoja listas desplegables con los componentes, máximo 5 listas, en las que poder seleccionar los componentes a buscar y que busque en la tabla que estará montada en otra hoja.

Al seleccionar el componente de la primera lista se vea el resultado de todos los productos que lo llevan, por ejemplo 50 productos.
Al seleccionar el componente de la segunda lista se vea el resultado que lo llevan, osea los productos que llevan el primero y el segundo, por ejemplo 35 productos, naturalmente serán menos productos de resultado que la primera búsqueda. De este modo, si elijo azúcar me puede salir todos los que llevan azúcar, pero si selecciono azúcar y chocolate todos los que tengan azúcar pero no tienen chocolate desaparecen del resultado.

Primera duda ¿esto es posible?

Segunda, es mejor poner los productos como encabezados en columnas con sus componentes o poner por filas los productos, supongo que es mejor por columnas.

Los productos pueden ser 150 y la mayor cantidad componentes en cada uno de ellos pueden ser 70.

Mi conocimiento de Excel es muy basico, pero quiero ver si soy capaz de armar este tinglado. Muchas gracias por leerme.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana

Buscar multiples condiciones multiples resultados

Publicado por Antoni Masana (771 intervenciones) el 07/08/2018 13:31:21
Es posible, pero seria mejor en Access.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Buscar multiples condiciones multiples resultados

Publicado por Ana (18 intervenciones) el 07/08/2018 18:36:59
Hola Antoni Masana
Ahora si que me has "matao" puedes señalarme el camino, como comentaba manejo excel a nivel bajo, nunca he usado access así que supongo que me estoy metiendo en algo no que voy a ser capaz de llevar a cabo porque es mas complicado que desentrañar una formula por lo que intuyo con tu respuesta. Gracias por molestarte en contestar y gracias por tu tiempo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana

Buscar multiples condiciones multiples resultados

Publicado por Antoni Masana (771 intervenciones) el 07/08/2018 21:07:29
Básica mente consiste en lo mismo en Excel que en Access lo único que varía es la forma.

Primero hay que crear dos tablas, una de productos y otra de componentes.

Segundo hay que relacionar las dos tablas, es decir seleccionar un producto e ir indicando que componentes tiene.

Y posterior mente podrás consultar “Paella de pescado” y tiene los siguientes componentes:
• Aceite
• Sal
• Tomate
• Mejillones
• Gambas
• Arroz
• Sepia
• Etc.

Y si consultas “Arroz” mostrar el siguiente resultado:
• Paella de pesado
• Paella de carne
• Paella vegetal
• Arroz con leche
• Arroz a la cubana
• Lentejas con arroz
• Etc.

En Excel tienes una herramienta para las consultas de este tipo que se llama TABLA DINAMICA.

EN EXCEL

Para el primer paso solo necesitas un libro Excel con tres hojas:
• Productos
• Componentes
• Relación

Las dos primeras es fácil una columna con una lista texto. La segunda es un poco más compleja y lo mejor seria hacer un formulario (y con esto, la estocada final) en el que se entrarían los componentes de cada producto seleccionando de las listas.


EN ACCESS

En lugar de tres hojas son tres tablas que tienes que definir y las consulta se hacen con comandos de SQL.

Si sabes programar en Visual Basic y no sabes Access inclínate por Excel y si no sabes programar lo puedes hacer a mano, pero es escribir un montón de veces lo mismo y con la posibilidad de equivocarte otras tantas.

Si te atreves te puedo ayudar.

Cuando empecé con el Excel no sabía ni lo que era una macro y mucho menos programarlas.
Algo de Visual Basic si que sabia y poco a poco me fui metiendo y probando y aquí estoy (Y en es época no había GOOGLE para consultar). Todo es empezar y ponerse.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Andres Leonardo

Buscar multiples condiciones multiples resultados

Publicado por Andres Leonardo (947 intervenciones) el 07/08/2018 22:13:34
Con gusto me encantaria aportar .. y si hacecmos la aplicacion desde BV Con Access de base de datos mucho mas

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana

Buscar multiples condiciones multiples resultados

Publicado por Antoni Masana (771 intervenciones) el 08/08/2018 08:19:52
Creo que en Access es la mejor opción.

A mi también me gustaría verlo en Access porque no lo conozco y como la herramienta que si domino es Excel me gustaría comparar.
Voy a intentar hacerlo en Excel a ver que sale.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Buscar multiples condiciones multiples resultados

Publicado por Ana (18 intervenciones) el 08/08/2018 11:45:29
Para mi access es inviable por lo que estado leyendo, mi conocimiento de programación es nulo, ya me estoy asustando con el tema como has planteado excel, como para pensar en access.

¿Cómo relaciono dos listas en excel?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Buscar multiples condiciones multiples resultados

Publicado por Ana (18 intervenciones) el 08/08/2018 13:35:49
Tengo un listado de mapas y sus contenidos de países que para ejemplo puede servir es lo mas rápido que tenía a mano.
Lo adjunto.
He puesto en la hoja 1 fila 1 los nombres de los mapas (productos).
En la hoja 2 los países que componen esos mapas (componentes), en la hoja 2 los países comienzan desde la fila 2 y mantienen la fila para todos los mapas (productos) creo que será mas fácil de localizarlos, aunque no tengo ni idea de como hay que relacionar las dos listas, ni si sirve de algo lo que he hecho.
Dejo la hoja 3 vacía
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana

Buscar multiples condiciones multiples resultados

Publicado por Antoni Masana (771 intervenciones) el 08/08/2018 20:18:13
Te adjunto tu libro con una MACRO que se llama Crear_Tabla y hace un montón de cosas a partir de los datos que hay en tus hojas.

¿Que hace?

- Crea una hoja a la que llama Tabla Mapas , pone una cabecera y bloquea la línea 1
- Crea una hoja a la que llama Tabla Paises , pone una cabecera y bloquea la línea 1
- Crea una hoja a la que llama Tabla Reclación , pone una cabecera y bloquea la línea 1

- Lee los mapas de la hoja mapas y los escribe en una columna ( la A) de la hoja Tabla Mapas
- Busca en la misma columna de la hoja paises los añade en la hoja Tabla Paises sin repetirlos.
- Añade una entrada el la hoja Tabla Reclación el mapa en la columna A y el Pais en la columna B.

- Ordena la hoja Tabla Paises
- Pone un AutoFiltro en la hoja Tabla Reclación


Y ahora ya puedes realizar las consultas que quieras, sin necesidad de programar macros ni formularios.

Como esta es un libro de muestra en el libro definitivo hay que crear las dos primeras tablas para generar la de la relación, si la relación ya la tienes montana como en este caso solo hay que hacer unos pequeños retoques para convertir los datos, si las relaciones la tienes que ir introduciendo manualmente, las actuales o futuras ira muy bien un formulario que tengo a medio diseñar, faltan algunos pequeños detalles.

Mañana si tengo tiempo te enviare una muestra

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Antoni Masana

Buscar multiples condiciones multiples resultados

Publicado por Antoni Masana (771 intervenciones) el 09/08/2018 10:13:29
Te envío dos muestras más.

En el fichero Buscar_Datos_3.xlsm tienes las tres hojas con los datos ya convertidos. Si pulsas sobre la cabecera de cualquiera de las hojas Tabla Mapas o Tabla Paises sale un formulario para crear las relaciones que te contaba en el post anterior.
No permite guardar pero esta operativo.

En el fichero Buscar_Datos_4.xlsm tienes lo mismo que en el anterior pero en este se utilizan identificadores y formulas que a la hora de consultar se pueden ocultar de hecho los dejo visibles para que los veas. No incluye el formulario.

¿Que ventajas tiene uno sobre el otro? En el segundo si se quiere corregir el nombre de un mapa o un país la Tabla Relación queda automáticamente actualizada.

Ya me iras contando como lo ves.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Buscar multiples condiciones multiples resultados

Publicado por Ana (18 intervenciones) el 09/08/2018 18:35:13
Gracias cuando alguien sabe manejar una herramienta los que hacemos chapuzas nos damos cuenta lo ignorantes que somos.

Estoy asustada e impresionada, de lo que podéis hacer en un momento y a mi me cuesta toda la tarde. Ya veo que lo que te dí mucho no te he ayudado y lo hice mal, jajaja, si supieses lo que me costo escribirlo todo ordenado así jajaja, que tonta !! xD, me da un poco de vergüenza.

Lo miro todo este fin de semana mas despacio y trato de asimilar.
Una cosa que me sucede con el primer excel (Buscar_datos2), el pc que uso fuera de casa solo tiene office 2007, quizá para el tema de la macro sea importante pero me da un error, este:

U7rCvFl

Puestos en el depurador señala esto:

yD80jVY

Crea las tablas pero no el autofiltro.
Seguiré enredado en casa que tengo office mas alto que 2007, no recuerdo cual y te digo si el archivo "Buscar_datos2" da el mismo error.

¿Qué proceso debiese seguir en caso de tener que ampliar la lista de mapas?
¿Debo estar posicionada en alguna hoja para ejecutar las macro o da lo mismo?

Muchisimas gracias !!! estoy muy impresionada de lo que has hecho en tan poco tiempo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana

Buscar multiples condiciones multiples resultados

Publicado por Antoni Masana (771 intervenciones) el 09/08/2018 21:34:58
La macro de Buscar_datos_2 tiene un error. Una vez ha creado las tablas ordena la tabla de Países y pone el AutoFiltro en la de relación o debería si no fuese por el error.

Mira el fichero que te he enviado el día 9. Hay dos libros. Es posible usar los dos sistemas y mejor para los dos casos es crear un formulario para cada una de las tablas.

La primera Tabla pueden ser
* Mapas
* Recetas
* Menus
* Reposteria
* etc

La segunda Tabla puede ser:
* Paises
* Ingredientes
* Platos.
* Otros Ingedientes
* etc.

Y la tercera tabla la relación entre las dos primeras.

Cada una de las Tablas debe tener un formulario hacer nuevas entradas, modificar y borrar. Esto se debe a que se deben seguir unas reglas para mantener la coherencia de la información.

El formulario de la tercera tabla esta en el Libro Buscar_Datos_2 y sale pulsando sobre la cabecera de las dos primeras tablas.
Es lo más rápido que se me ha ocurrido, en el futuro pondré un Botón.

Con los tres formularios podrías coger un libro vacío y crear tu propia relación.

Hace veinte años que me peleo con el Excel y por aquel entonces solo dominaba las funciones de sumar, contar y los operadores básicos, Sumar, Restar, Multiplicar y Dividir y para de contar y poco a poco vas aprendiendo.

De la macro que te he enviado el 80% es código que se genera con GRABAR MACRO yo lo pongo un poco más presentable y añado comentarios.
La parte de los FOR ya es programación personal en su mayor parte.

Mañana te reenvío el 2 modificado. aúnque realmente esta macro no te sirve a no ser que tengas las tablas que enviaste ya realizadas y quieras convertirlas.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Buscar multiples condiciones multiples resultados

Publicado por Ana (18 intervenciones) el 09/08/2018 22:09:16
Probando en casa con office 2016 no sale el error en el archivo Buscar_datos2, realiza la tabla bien y pone el filtro.
Lo que veo es que si haces una busqueda unica por ejemplo italia funciona bien y te muestra todos los mapas que contienen Italia.
Haciendo una búsqueda doble Francia Italia debiese mostrar solo los mapas que contienen los dos países y eso no lo hace, muestra los mapas que contienen uno u otro repitiendo los mapas que contengan los dos.

Por ejemplo, vamos a buscar los mapas que contengan 3 países (a mi me gustaría hasta 5 condiciones) Francia, Italia, España.

En el filtro de la columna D (archivo Buscar_datos_4) desmarco todo y selecciono Francia
Resultado en B:

Central Europe
Central Europe West
Europe

Ahora si marco Italia el resultado debiese quedar igual, en este caso, pero muestra:

Central and Eastern Europe
CEE Zone 2
Central Europe
Central Europe
Central Europe South
Central Europe West
Europe
Europe

Si marco España el resultado debiese ser solo Europe, porque es el único que contiene las tres búsquedas señaladas pero el resultado es:

5QcOBK0

Si conseguimos que funcione la idea del formulario es mucho mas bonita que solo la tabla filtrada.
Yo seguiré mirando tu trabajo a ratos este "finde" porque estoy fascinada, para ti seguro que es poca cosa pero para mi es un trabajo brutal
Gracias de nuevo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana

Buscar multiples condiciones multiples resultados

Publicado por Antoni Masana (771 intervenciones) el 10/08/2018 08:44:17
La ventaja del Acces sobre el Excel es la facilidad para las consultas.

Con este comando el SQL realizas la consulta que comentas

1
2
3
4
5
SELECT Mapas
FROM [Tabla Relación]
WHERE Paises="España" OR Paises="Italia"
GROUP BY Mapas
HAVING Count(Mapas)=2

La respuesta a esto es Europa

Y te preguntadas ¿y esto que quiere decir? Traducido al castellano es algo asi como:

1
2
3
4
5
6
SELECCIONE el campo Mapas
DE la tabla [Tabla Relación]
DONDE el campo Paises es igual a "España" o
         campo Paises es igual a "Italia"
AGRUPE POR Mapas
QUE TIENE que Contar Mapas y sea igual a 2

Este tipo de consultas no se me ocurre como hacerlo en Excel.

Se puede hacer usando una Tabla Dinámica pero no queda tan elegante. (ver fichero Adjunto Buscar_Datos_3_TD.xlsm)

Y siempre puedo hacer un formulario que realice una consulta de que mapas contienen hasta 5 paises determinados.

Y todo este embrollo ¿Para que es? Cual es su finalidad, su función, es algo estático o tienes previsto ir haciendo modificaciones. Que tipo de datos se van a introducir, que tipos de consultas se quieren hacer.

Sin saber para que va a servir se me hace difícil pensar en soluciones que se ajusten a las necesidades que tienes

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Antoni Masana

Buscar multiples condiciones multiples resultados

Publicado por Antoni Masana (771 intervenciones) el 10/08/2018 10:46:37
Te envío el libro 3 con un formulario de consulta y el formulario de agrupar ya actualiza.

Para que estés entretenida el fin de semana, que si tienes pareja, hijos y perro seguro que te aburres un montón.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Buscar multiples condiciones multiples resultados

Publicado por Ana (18 intervenciones) el 10/08/2018 21:37:40
La finalidad va ser siempre la misma para mi para usar en foros de gps, aunque ya existe algo similar y es de donde saqué la idea, pero el señor que tiene la hoja no me quiere decir como lo hace, y la mas importante una amiga ha puesto un puesto de hierbas, crea productos con diversos componentes, recordar que lleva cada uno es complicado porque muchos componentes se repiten hasta en cinco veces en muchos productos, ahora lo tiene organizado apuntado a mano y quise preparar una tabla que hiciese la búsqueda que he propuesto, como escribir sus productos me iba resultar eterno a mi, me incliné por realizar la prueba con algo que domino, los mapas, que lo tengo ya escrito en varios listados, una vez que viese que funciona, puedo sustituir los mapas por las hierbas porque el formato sería el mismo y solo sería escribir los textos.

Si quieres te paso el excel que me dio la idea, el del señor que te comento, pero está protegido con contraseña y no se puede ver nada o yo no se como.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana

Buscar multiples condiciones multiples resultados

Publicado por Antoni Masana (771 intervenciones) el 11/08/2018 01:48:22
Pásamelo que le de un vistazo y seguro que saco algunas ideas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Buscar multiples condiciones multiples resultados

Publicado por Ana (18 intervenciones) el 11/08/2018 09:20:04
Vale te lo cuelgo en mega.nz porque tiene mucho tamaño, no se si hay limite en este foro para los adjuntos pero me parece recargar el servidor de forma innecesaria el ponerlo como adjunto.
Este es el enlace

Por lo que intuyo de otras conversaciones el libro tiene 6 hojas o mas, visibles solo 3, yo creo que lleva en una hoja oculta una tabla, en otra hoja hace un cruce de datos ('Cruce Listas') y ademas la tercera hoja oculta sería para las listas dependientes de las celdas desplegables de la tercera hoja visible (el formulario).

Otro compañero me ha pasado esta formula no se bien de donde la obtenido, pero debe ser de un libro anterior del mismo formato, que considero sirve para que en las desplegables de países no haya repetidos, contar los resultados y si no hay, lanzar el mensaje de no hay resultados y por lo que veo traer los resultados concatenados de la hoja oculta donde se hace el cruce de datos:

1
=SI(O(Y(M$5<>"";M$7<>"";M$5=M$7);Y(M$5<>"";M$9<>"";M$5=M$9);Y(M$5<>"";M$11<>"";M$5=M$11);Y(M$5<>"";M$13<>"";M$5=M$13);Y(M$7<>"";M$9<>"";M$7=M$9);Y(M$7<>"";M$11<>"";M$7=M$11);Y(M$7<>"";M$13<>"";M$7=M$13);Y(M$9<>"";M$11<>"";M$9=M$11);Y(M$9<>"";M$13<>"";M$9=M$13);Y(M$11<>"";M$13<>"";M$11=M$13));"... hay PAÍSES REPETIDOS, cambia tu elección !!!";(SI(Y(O(M5<>"";M7<>"";M9<>"";M11<>"");('Cruce Listas'!B53)="");"Los países que has elegido NO tienen ningún MAPA en común !!!";(SI.ERROR(concatenarceldas('Cruce Listas'!H55:H186);"")))))

Por esa formula y por como veo el libro es por lo que supongo lleva 6 hojas mínimo.

A ver si nos sirve de algo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Buscar multiples condiciones multiples resultados

Publicado por Ana (18 intervenciones) el 12/08/2018 23:11:56
He estado probando el libro, me encanta, es rápido y funciona muy bien. he estado escribiendo un poco estos dias.

Un detalle, si quiero meter un mapa nuevo en la primera hoja pongo el nombre doy a guardar y no termina de ir bien, es mejor poner los nombres que quieras aumentar cerrar el libro y volverlo abrir para luego ir colocando los países, si ya están incluidos en la hoja dos, sino lo están los incluyó y cierro y abro el libro, de ese modo me funciona mejor.

Una cosa que no se es como se puede editar, el User form, si quiero cambiar los textos (Texto -1, etc...).

Eres un genio, has hecho un trabajo enorme. Te adjunto lo que he ampliado de textos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Buscar multiples condiciones multiples resultados

Publicado por Ana (18 intervenciones) el 13/08/2018 08:44:38
Al formulario de consulta le falta el scroll.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Buscar multiples condiciones multiples resultados

Publicado por Ana (18 intervenciones) el 13/08/2018 09:13:07
Oleeeeee, ya he hallado como editar los formularios (me daba miedo), si quieres mirar lo que hecho te lo adjunto de nuevo, también le he puesto el scroll al formulario de consulta, cambiados algunos caption.

Estoy aprendiendo un motón de cosas gracias a tu trabajo fantástico, muchas gracias por los comentarios del código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana

Buscar multiples condiciones multiples resultados

Publicado por Antoni Masana (771 intervenciones) el 13/08/2018 11:07:27
Los genios son los que salen de las lamparitas y te conceden tres deseos.

Los demás solo trabajamos y estudiamos mucho para aprender y compartimos nuestros conocimientos con otras personas, son muchos años programando.

Ahora tengo el Excel entretenido descifrando los mapas que me pasaste, no creo que llegue a ver el código pero si las hojas ocultas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Buscar multiples condiciones multiples resultados

Publicado por Ana (18 intervenciones) el 13/08/2018 11:37:01
Tu de momento ya me has concedido un deseo, tus conocimientos, por lo que te estoy eternamente agradecida.
Estoy enredando en los formularios, poniendo y quitando cosas sencillas, colores de fondo, transparencias en los label y cosas de estas, veo que tengo un mundo infinito solo con el diseño, ya que la funcionalidad no creo que llegue a entenderla por mis limitaciones de conocimiento.

Me asalta un pregunta, ¿es complicado hacer (igual ni se puede) que una vez se obtiene un resultado en el list box del formulario_consulta, pulsando cada uno de los item lance una imagen?

Es decir imagina que en el list box salen 2 mapas (Iberia y Europe), como resultado, pulsando el primero te muestra la imagen que se le asigne a Iberia y pulsando el segundo sale la imagen que le corresponda a Europe.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Buscar multiples condiciones multiples resultados

Publicado por Ana (18 intervenciones) el 14/08/2018 18:46:10
Lo de la imagen lo tengo puesto y funciona, pero solo en mi pc si lo pongo en otro no funciona.
He añadido un cuadro de imagen (Image1) al formulario consulta con este código al listbox:

1
2
3
4
5
6
7
Private Sub LB_Selec_Click()
Dim imag As String
Dim item As String
item = LB_Selec.Text
imag = ThisWorkbook.Path & "\imagenes_cobertura\"
Image1.Picture = LoadPicture(imag & item & ".jpg")
End Sub

Mi problema ya se cual es, pero no se como hacerlo, ahora tengo la ruta para la carpeta de las imágenes definida con la variable imag, pero no se como añadir la carpeta al libro para que cuando mueva el libro no tenga que mover también la carpeta y la carpeta vaya como "comprimida" en el libro. ¿Como se añade una carpeta de imágenes?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana

Buscar multiples condiciones multiples resultados

Publicado por Antoni Masana (771 intervenciones) el 16/08/2018 13:30:17
Si se puede pero la imagen debe estar en el libro, porque de lo contrario para que funcione en otro equipo debes llevarte el libro y todas las imágenes del disco.

El libro que tomaste como referencia tiene todos los mapas y banderas en sus tripas por eso tiene el tamaño que tiene y por si te interesa se pueden sacar de una forma muy simple.

Luego te miro como hacerlo.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Buscar multiples condiciones multiples resultados

Publicado por Ana (18 intervenciones) el 16/08/2018 20:46:19
Gracias Antoni, no te molestes en sacar las imágenes de ese libro, si te ha servido de algo me alegraré mucho.

He añadido algunas cosas mas que quiero comentar por si el código no es correcto, aparte del cuadro de imagen he puesto un botón para limpiar los campos CB_Texto_*
Y también un aviso de términos de búsqueda repetidos.

Para limpiar los campos he usado este código:

1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Btn_clean_Click()
    Dim imag As String
    imag = ThisWorkbook.Path & "\imagenes_cobertura\"
    CB_Texto_5.Text = ""
    CB_Texto_4.Text = ""
    CB_Texto_3.Text = ""
    CB_Texto_2.Text = ""
    CB_Texto_1.Text = ""
    LB_Selec.Clear
    Image1.Picture = LoadPicture(imag & "ini.jpg")
    CB_Texto_1.SetFocus
End Sub

Para comprobar los repetidos en tu código...

1
2
3
4
5
6
7
8
9
Private Sub CB_Texto_2_Change()
    If CB_Texto_2.ListIndex < 0 Then
       Etiqueta_3.Visible = False
       CB_Texto_3.Visible = False: Exit Sub
    Else
       Etiqueta_3.Visible = True
       CB_Texto_3.Visible = True: Call Filtrar(2)
    End If
End Sub
:

He añadido esto (lo de negrita):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub CB_Texto_2_Change()
    If CB_Texto_2.ListIndex < 0 Then
       Etiqueta_3.Visible = False
       CB_Texto_3.Visible = False: Exit Sub
    Else
       Etiqueta_3.Visible = True
       CB_Texto_3.Visible = True: Call Filtrar(2)
    End If
    If CB_Texto_1.Text = CB_Texto_2.Text Then
       MsgBox "El dato ya existe", vbCritical, "Repetido"
       CB_Texto_2.SetFocus
       CB_Texto_2.Text = ""
    End If
End Sub

El condicional CB_Texto_1.Text = CB_Texto_2.Text para el CB_Texto_3 se dobla, para el siguiente se triplica así hasta el CB_Texto_5 que me queda así (la posible chapuza la marco en negrita):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Private Sub CB_Texto_5_Change()
    If CB_Texto_5.ListIndex < 0 Then
       Exit Sub
    Else
       Call Filtrar(5)
    End If
    If CB_Texto_4.Text = CB_Texto_5.Text Then
       MsgBox "El dato ya existe", vbCritical, "Repetido"
       CB_Texto_5.SetFocus
       CB_Texto_5.Text = ""
    End If
    If CB_Texto_3.Text = CB_Texto_5.Text Then
       MsgBox "El dato ya existe", vbCritical, "Repetido"
       CB_Texto_5.SetFocus
       CB_Texto_5.Text = ""
    End If
    If CB_Texto_2.Text = CB_Texto_5.Text Then
       MsgBox "El dato ya existe", vbCritical, "Repetido"
       CB_Texto_5.SetFocus
       CB_Texto_5.Text = ""
    End If
    If CB_Texto_1.Text = CB_Texto_5.Text Then
       MsgBox "El dato ya existe", vbCritical, "Repetido"
       CB_Texto_5.SetFocus
       CB_Texto_5.Text = ""
    End If
End Sub

Funcionar funciona pero no se si es correcto el código, principalmente el del botón limpiar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana

Buscar multiples condiciones multiples resultados

Publicado por Antoni Masana (771 intervenciones) el 17/08/2018 09:05:37
El boton limpiar creo que lo más correcto es

1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Btn_clean_Click()
    Dim imag As String
        imag = ThisWorkbook.Path & "\imagenes_cobertura\"
        CB_Texto_5.ListIndex= -1
        CB_Texto_4.ListIndex= -1
        CB_Texto_3.ListIndex= -1
        CB_Texto_2.ListIndex= -1
        CB_Texto_1.ListIndex= -1
        LB_Selec.Clear
        Image1.Picture = LoadPicture(imag & "ini.jpg")
        CB_Texto_1.SetFocus
End Sub


Para comprobar los repetidos, que lo pensé pero no lo puse. Yo le quitaria el limiar el Combo puede que se halla equivocado en una línea y le obligas a volver a buscar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub CB_Texto_2_Change()
    If CB_Texto_2.ListIndex < 0 Then
       Etiqueta_3.Visible = False
       CB_Texto_3.Visible = False: Exit Sub
    Else
       If CB_Texto_1.Text = CB_Texto_2.Text Then
          MsgBox "El dato ya existe", vbCritical, "Repetido"
          CB_Texto_2.SetFocus
          CB_Texto_2.ListIndex = -1
       Else
          Etiqueta_3.Visible = True
          CB_Texto_3.Visible = True: Call Filtrar()
       End If
    End If
End Sub


Para el ComoBox 5.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private Sub CB_Texto_5_Change()
    If CB_Texto_5.ListIndex < 0 Then
       Exit Sub
    Else
       If CB_Texto_4.Text = CB_Texto_5.Text Then
          MsgBox "El dato ya existe", vbCritical, "Repetido"
          CB_Texto_5.SetFocus
          CB_Texto_5.ListIndex  = -1
       ElseIf CB_Texto_3.Text = CB_Texto_5.Text Then
          MsgBox "El dato ya existe", vbCritical, "Repetido"
          CB_Texto_5.SetFocus
          CB_Texto_5.ListIndex  = -1
       ElseIf CB_Texto_2.Text = CB_Texto_5.Text Then
          MsgBox "El dato ya existe", vbCritical, "Repetido"
          CB_Texto_5.SetFocus
          CB_Texto_5.ListIndex  = -1
       ELseIF CB_Texto_1.Text = CB_Texto_5.Text Then
          MsgBox "El dato ya existe", vbCritical, "Repetido"
          CB_Texto_5.SetFocus
          CB_Texto_5.ListIndex  = -1
       Else
          Call Filtrar()
       End IF
    End If
End Sub

Otra forma de hacerlo. A mi me gusta más porque se ve más claro y menos líneas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub CB_Texto_5_Change()
    Dim Repe as Boolean
    If CB_Texto_5.ListIndex < 0 Then
       Exit Sub
    Else
       Repe = False
       If CB_Texto_4.Text = CB_Texto_5.Text Then Repe = True
       If CB_Texto_3.Text = CB_Texto_5.Text Then Repe = True
       If CB_Texto_2.Text = CB_Texto_5.Text Then Repe = True
       IF CB_Texto_1.Text = CB_Texto_5.Text Then Repe = True
       IF Repe Then
          MsgBox "El dato ya existe", vbCritical, "Repetido"
          CB_Texto_5.SetFocus
          CB_Texto_5.ListIndex  = -1
       Else
          Call Filtrar()
       End IF
    End If
End Sub



El proceso Filtrar esta mal. ¿Y que tiene de mal? Tiene que si filtro por ejemplo por Italia salen 4 mapas, después España, sale un solo mapa. Ahora voy al primer texto y selecciona Kansas, ignora el segundo texto y salen los mapas de América.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
' </> --------------------------------------------------------------------- </>
' </> ----&---  FILTRO                                              ---&--- </>
' </> --------------------------------------------------------------------- </>
 
Sub Filtrar()
    Dim Tabla_Txt(100) As String, a As Integer, Lin As Integer, Ok As Boolean, _
        Tabla_Num(100) As Integer, Campo As String, Num As Byte, _
        Tabla_Pun As Integer
 
    Sheets(TABLA_3).Select
 
    Tabla_Pun = 0
    Lin = 2
    While Cells(Lin, 1) <> ""
        Campo = Cells(Lin, 2): Ok = False: Num = 0
 
        If CB_Texto_1.ListIndex >= 0 Then Num = Num + 1: If Campo = CB_Texto_1.List(CB_Texto_1.ListIndex) Then Ok = True
        If CB_Texto_2.ListIndex >= 0 Then Num = Num + 1: If Campo = CB_Texto_1.List(CB_Texto_2.ListIndex) Then Ok = True
        If CB_Texto_3.ListIndex >= 0 Then Num = Num + 1: If Campo = CB_Texto_1.List(CB_Texto_3.ListIndex) Then Ok = True
        If CB_Texto_4.ListIndex >= 0 Then Num = Num + 1: If Campo = CB_Texto_1.List(CB_Texto_4.ListIndex) Then Ok = True
        If CB_Texto_5.ListIndex >= 0 Then Num = Num + 1: If Campo = CB_Texto_1.List(CB_Texto_5.ListIndex) Then Ok = True
 
        If Ok Then
           Ok = False
           For a = 1 To Tabla_Pun
               If Tabla_Txt(a) = Cells(Lin, 1) Then
                  Tabla_Num(a) = Tabla_Num(a) + 1
                  Ok = True
               End If
           Next
           If Not Ok Then
              Tabla_Pun = Tabla_Pun + 1
              Tabla_Txt(a) = Cells(Lin, 1)
              Tabla_Num(a) = 1
           End If
        End If
        Lin = Lin + 1
    Wend
 
    LB_Selec.Clear
    For a = 1 To Tabla_Pun
        If Tabla_Num(a) = Num Then LB_Selec.AddItem Tabla_Txt(a)
    Next
End Sub


Para las imagenes mejor crea el objeto picture y añares una imagen en cada objeto y solo tienes que hacerlo visible y como mucho posicionarlo en el formulario y te evitas ficheros externos.

Luego te cuento como buscarlos.

Saludos
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana

Buscar multiples condiciones multiples resultados

Publicado por Antoni Masana (771 intervenciones) el 17/08/2018 10:34:27
Te adjunto una muestra de como ver los mapas en la consulta

Solicita un país de uno de estos mapas (solo es una muestra)

Africa
Argentina and Uruguay
Australia
Benelux
Brazil
Canada and Alaska

Pulsa sobre el nombre del mapa y saldrá a la derecha de la ventana cuando cambies de selección desaparece.

Si tienes dificultad para entender como lo he realizado te lo contaré pero investigando se aprende mucho más, ya un pequeño truco.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Buscar multiples condiciones multiples resultados

Publicado por Ana (18 intervenciones) el 17/08/2018 19:10:58
Creo que ya lo entiendo, hay que crear un cuadro image por mapa, asignarle el mismo nombre que el mapa que quieres ver, pero no acepta el nombre (Name) con espacios, por lo que ponemos guion bajo, luego hay que modificar la caracteristica visible a falso. En picture selecciono la imagen asignada. Muy chulico queda así.

Veo que no tengo que preocuparme por el tamaño en los image del user form y los puedo poner pequeñitos, porque tengo que añadir muchos.

También he visto que en esta prueba "buscar_datos_4" ya has modificado el filtro.

Por otra parte he adoptado el código para limpiar campos que ahora como no tengo el image que yo había puesto el código queda así:

1
2
3
4
5
6
7
8
9
Private Sub Btn_Limpiar_Click()
    CB_Texto_5.ListIndex = -1
    CB_Texto_4.ListIndex = -1
    CB_Texto_3.ListIndex = -1
    CB_Texto_2.ListIndex = -1
    CB_Texto_1.ListIndex = -1
    LB_Selec.Clear
    CB_Texto_1.SetFocus
End Sub

Pero hay un detalle ¿como hago para cerrar el evento Graf al limpiar los campos? ¿Se puede cerrar la imagen del mapa desde Btn_Limpiar?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Buscar multiples condiciones multiples resultados

Publicado por Ana (18 intervenciones) el 18/08/2018 09:16:19
He añadido algunas imágenes y mas mapas, me encontrado con un problema con el gráfico.

Haces una búsqueda por ejemplo de luxemburgo y te da varios resultados, si te posicionas en primero del listbox (Benelux) te muestra la imagen y si vas bajando por los resultados te va cambiando la imagen pero si subes falla.
Te dejo el libro numerado 4.1.
Si haces esa prueba ten en cuenta que las imágenes de Europe Central verde, Europe Central 1Gb son la misma.

También he añadido el código para evitar los repetidos y el botón limpiar campos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana

Buscar multiples condiciones multiples resultados

Publicado por Antoni Masana (771 intervenciones) el 20/08/2018 08:26:54
Opción 1 (4.2)

Hay un par de fallos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
' </> --------------------------------------------------------------------- </>
' </> ----&---  Ver el Mapa                                         ---&--- </>
' </> --------------------------------------------------------------------- </>
 
Private Sub LB_Selec_Click()
    Dim Texto As String, Mapa As String, a As Integer
 
    On Error Resume Next: Graf.Visible = False:
    On Error GoTo 0
 
    Texto = ""
    Mapa = LB_Selec.List(LB_Selec.ListIndex)
 
    For a = 1 To Len(Mapa)
        If Mid$(Mapa, a, 1) = " " Then
           Texto = Texto + "_"
        Else
           Texto = Texto + Mid$(Mapa, a, 1)
        End If
    Next
 
    For Each Graf In Me.Controls
        If Graf.Name = Texto Then
           Graf.Visible = True
           Graf.Top = 30
           Graf.Left = 440
           Graf.Height = 270
           Graf.Width = 270
           Me.Width = 780: DoEvents: Exit For
        End If
    Next
End Sub

Ocultar el mapa anterior antes de mostrar el Siguiente y salir del For cuando encuentra el mapa para posteriormente poder ocultarlo.

Opción 2 ( 4.3)

Los objetos de Mapas en el nombre se añade el prefijo Mapa_ y cuando busca el mapa va ocultando los otros.

Además he corregido un cosa que te faltaba, restaurar el tamaño del formulario al borrar los filtros. No hace falta ocultar el ultimo mapa cuando realice una nueva visualización de mapas ya lo ocultara.

La variable Graf no hace falta que sea global..

Adjunto los ficheros.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Buscar multiples condiciones multiples resultados

Publicado por Ana (18 intervenciones) el 21/08/2018 09:30:19
Gracias Antoni funciona, así no hay que llevar la carpeta de imágenes adosada al archivo.

Detalles que no me incomodan pero si se puede mejorar...

Si rellenas un combobox se abre el siguiente que si no haces nada no lo tiene en cuenta pero una vez que ha escrito un valor ya no hay manera de salir de ese combobox. Bueno si que la hay, dejas vacío el campo, si estas en el 4 te posicionas en el 2, escribes el dato aunque sea el mismo, y así ya vuelve a señalar los resultados.
¿Se puede hacer que si borras el valor del ultimo combobox abierto deje tener en cuenta ese combobox?

Pongo imagenes
Realizamos la búsqueda de tres condiciones:

X96D2hi

Por error señalamos una cuarta condición:

80SIz29

Si la borras con la tecla retroceso o suprimir no muestra los resultados de las otras tres aunque si hace desaparecer el campo 5:

a4jqnBW

Una solución es ir a un campo anterior el 1 ó el 2 y repetir el dato:

kazCVLv
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana

Buscar multiples condiciones multiples resultados

Publicado por Antoni Masana amasana@hotmail.com (771 intervenciones) el 21/08/2018 21:21:26
He estado pensando y se me ocurren varias cosa.

Entre ellas usando tu ejemplo ¿Que pasa si llenas el 1, 2, 3 y 4, subes y borras el contenido del 2?

- Mostrar los cinco Combos y no ocultarlos

- Es indiferente si ponen un país en el 1º, 2º y 3º o 1º, 3º y 5º la busqueda funciona igual.

- En los Combos añadir una primera linea que diga algo así como <Todos> o <*> o <***> o <_______> o espacios en blanco. Esta seria el primero de la lista el ListIndex valdria 0

- No repetir país. Se puede hacer de una forma muy Simple con una Función.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Pais = ""
Repe = False
Punt=ComboBox1.ListIndex:
If Pun > 0 Then
   IF Instr(Pais, ComoBox1.List(Punt))=0 Then Pais = Pais & "^" & ComoBox1.List(Punt) Else Repe=True
End IF
 
Punt=ComboBox2.ListIndex:
If Pun > 0 Then
   IF Instr(Pais, ComoBox2.List(Punt))=0 Then Pais = Pais & "^" & ComoBox2.List(Punt) Else Repe=True
End IF
 
Punt=ComboBox3.ListIndex:
If Pun > 0 Then
   IF Instr(Pais, ComoBox3.List(Punt))=0 Then Pais = Pais & "^" & ComoBox3.List(Punt) Else Repe=True
End IF
 
Punt=ComboBox4.ListIndex:
If Pun > 0 Then
   IF Instr(Pais, ComoBox4.List(Punt))=0 Then Pais = Pais & "^" & ComoBox4.List(Punt) Else Repe=True
End IF
 
Punt=ComboBox5.ListIndex:
If Pun > 0 Then
   IF Instr(Pais, ComoBox5.List(Punt))=0 Then Pais = Pais & "^" & ComoBox5.List(Punt) Else Repe=True
End IF

Se puede hacer un poco más corto pero igual es un poco chapuza.

Mañana hare unas pruebas.

Y si prefieres que sigamos por correo te dejo el mio.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Buscar multiples condiciones multiples resultados

Publicado por Ana (18 intervenciones) el 21/08/2018 21:40:54
Podemos seguir por aquí, si esto le sirve a mas gente como yo sería estupendo.

Por otra parte no quisiera resultar pesada y cuando no puedas atender el tema o creas que debes dejarlo comentalo, tal como está me vale muy bien también Antoni.

Si tu piensas que es mejor por correo tampoco hay problema, pero a mi resulta mas cómodo el foro porque al correo le hago poco caso, de hecho tengo desactivadas las notificaciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad