Saltar al contenido

Error al buscar en dos listas concatenadas


Recommended Posts

publicado

Hola, no salgo de un problema cuando ya estoy con otro, dichoso gráfico.


Os cuento, hay las dos listas concatenadas en una tercera lista:
Lista1 –– Lista2 ––––– Lista3
    1         Mañana        1 Mañana
    2         Tarde             2 Tarde


En la lista desplegable se muestra la tercera, que al escoger una de las opciones de esa lista por ejemplo “1 Mañana”, en la celda se queda el uno “1”, que desde una macro busca ese texto “1” en un listado.
Pero muestra un error, porque lo que busca no es el uno “1”, que es lo que se queda en la celda, si no que buscar el texto “1 Mañana”.

Como puedo hacer para que desde esa macro busque el valor que se queda en la celda que en este caso seria “1”, en lugar del texto completo “1 Mañana”.

La búsqueda se realiza sobre la celda AR7

 

Si alguien me puede echar una mano se la agradecería.

Gracias.

Lista con dos columnas - PRUEBAS 7.xlsm

publicado

amigo @JuanP ya conteste el otro tema, viendo la pregunta aqui, sigo sin entender, pero creo que te estas ahogando en un baso de agua amigo, en la tabla que tienes en la hoja "Datos 2" la columna TURNO tiene codigo UNICOS para cada turno, por lo tanto la busqueda la puedes hacer simplemente por ese campos, es decir, daria lo mismo si buscas "1" o buscas "1 - Mañana" ya que es código es unico, igual si buscas "1FSI" o buscas "1FSI - Mañana FS Inicio", ahora si tuieras por ejemplo "1 - Tarde",  alli si tendrías problema, pues el 1 NO sería unico y estaría asociado a dos resultados, por lo cual si tendrias que buscar la palabra completa

no se si es que no estoy entendiendo, si no es asi, pues explica mejor exactamente que es lo que necesitas.

suerte

publicado

Hola bigpetroman, a ver si puedo explicarme mejor, esta hoja es uno de los primeros pasos para crear un gráfico, con horarios de los turnos, etc, primero antes de crear el grafico de cada usuario, que tendrá puesto los horarios de entrada, salida, etc, y otra clase de eventos, busco a ver si el turno existe.

Los turnos van a llevar números y letras, ya que hay varios turnos de Mañana porque tienen horarios diferentes. 

Para dar una pequeña ayuda de que turnos corresponden a cada grupo, porque para un grupo el 1 será de mañana y para otro grupo será el 23FL, he puesto la lista desplegable para que muestre para un grupo “1 mañana” y para el otro “23FL mañana”, pero lo que se tiene que quedar en la celda es el 1, o el 23FL.

Y luego entre cada fila de turnos (turno 1, turno 2, etc..) hay una fila oculta que llevara si esta de mañana la M, ese es otro grafico que se tiene que crear solo lleva los turnos M, T y N (no está puesto en el archivo ejemplo que está en el post)

El buscador tiene que buscar el turno (igual pueden llegar a 10 hojas), y que me está pasando con el buscador, que en lugar de hacer la búsqueda por el 1 o el 23FL que es lo que se queda en la celda, está haciendo la búsqueda por lo que muestra la lista desplegable “1 mañana”

 

He intentado poner un código como el que hay en el “Worksheet_Change” para dejar el 1 o 23FL en la celda “Target.Value = VBA.Left(.Value, VBA.InStr(1, .Value, " ", vbTextCompare) - 1)” para que deje solo las primera letras antes de hacer la búsqueda, pero no se como poner ese código para que realice bien la búsqueda del contenido de la celda y no de la lista desplegable.

 

Y porque buscar en la columna TURNO, porque hay otros eventos que en la columna TURNO Y TEXTO no hay contenido.

 

 

publicado

Hola bigpetroman, como ya te comente...... iba a preparar un nuevo archivo, que tendría otras hojas donde realizo otras búsquedas que no tiene nada que ver con el problema de esta hoja, porque veo que subiría otro archivos que tendría el mismo problema, con mas hojas que no tienen nada que ver con esta. 

Mira si yo en lugar de poner la lista desplegable, escribo directamente el uno "1", no hay problema para realizar la búsqueda.

El problema viene cuando pongo la lista desplegable porque la búsqueda la hace del texto "1 Mañana", y luego coloca el 1 en la celda, pero primero hace la búsqueda de lo que se selecciona en la lista desplegable.

No se si ahora ves la diferencia. 

Por cierto, en el primer post hay un archivo subido.

Editado

Mira en la celda K7 selecciona de la lista desplegable un turno, te dara error porque busca "1 Mañana", ahora escribe en esa celda por ejemplo el numero 3, veras como lo busca y no te da error.

 

publicado

Bueno parece que ya lo he conseguido, o eso creo porque no me da tiempo a probar mas, mañana seguiré haciendo pruebas por si da algún fallo.

Como veo que hay quien se ha bajado el archivo lo comento y pongo el archivo para que no tengan que hacer pruebas, y por si quieren pegarle un vistazo aquellos que saben de que va el tema, por si hay alguna otra forma de hacerlo mejor.

 

 

Lista con dos columnas - PRUEBAS 8.xlsm

publicado

amigo @JuanP, la explicación no la entendi mucho, luego de revisar y revisar, pues note que es UNA FORMULA que tienes que llama a esa funcion, pues NO habias dicho nada y andaba loco.

NO entiendo cual es la idea, simplemente saber si por algún motivo alguien coloco un turno que no existe?, si es asi, revisa el anexo, NO es necesaria la formula, simplemente en el mismo evento CHANGE de la hoja realizas la validación luego del cambio y das el mensaje.

y en tu funcion de busqueda, buscas en TODAS las hojas, lo cual NO es lógico, pues es una perdida de tiempo, la acomode para evitar eso

 

Suerte

Lista con dos columnas - PRUEBAS 8.xlsm

publicado

Hola bigpetroman, como es el único modulo que hay con la formula pensé que se vería, y al estar puesta en la celda con un nombre personal se vería.

 

La idea es buscar en los turnos que hay si el que he introducido existe.

Y buscar en todas las hojas, a no ser que metiese mal el dato, la idea es que busque a partir de una determinada hoja, porque igual puede llevar 10 hojas con turnos, cada hoja para un grupo, pero estoy pensando que en lugar de buscar en esas hojas hasta que encuentre el turno, que cuando se seleccione el grupo solo busque en la hoja que corresponde a ese grupo, por lo que el Array que has puesto en el módulo mBuscarT se tendría que cambiar o quitar, para que solo busque en una hoja, no?

publicado

Vale bigpetroman, como te he comentado se adapta mas a resolver el problema, aunque tendría que cambiar un poco la forma de obtener los datos de otras hojas, pero igual tengo que cambiar un poco la forma de trabajar, asi que puedo aprovechar para ponerlo como el ejemplo que has puesto, que me gusta mas al ejemplo que he puesto en el otro archivo porque elimino algunos pasos.

Gracias.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      187
    • Comentarios
      97
    • Revisiones
      28

    Más información sobre "Un juego del Rabino en Excel"
    Última descarga
    Por pegones1

    1    1

  • Crear macros Excel

  • Mensajes

    • Hola nuevamente. Por eso la importancia de lo que mencionas tú como "ruta relativa". Tal cual comentas, y aún sin llegar a algunos detalles importantes para ayudarte, en realidad tal cual te comenté le día miércoles, pues sí podías hacer como comentabas, era cosa de obtener los Id de Windows (como tú los llamas) y la ruta de OneDrive en casa usuario y eso sí se puede obtener con VBA y luego pasarlo a PQ, pero medio que te cerraste en que "PQ no puede trabajar con rutas relativas", cosa cierta pero siempre hay formas. Si SAP puede o no guardar en OneDrive o SharePoint, pues si está mapeado en la PC ¡claro que se puede! Pero bueno, creo que si te es útil tu propia propuesta ¡avanza con eso!
    • Perdona @Abraham Valencia pero he estado liado estos días. En realidad todo el problema se reduce a estos dos problemas: Problema 1: El script que "fabrica" SAP y que luego "pego" en la macro, no es capaz de  guardar archivos en SharePoint. He estado buscando, y en realidad muchas personas tienen ese problema (no poder guardar un Excel en SAP a través de VBA). Eso muy probablemente sean problemas de permisos, que no puedo cambiar (no soy administrador de nada). Como no puedo solucionarlo así, paso al plan B, que es guardar en Excel que me genera SAP en el ordenador de cada usuario que ejecute la plantilla (y que sí está guardada en SharePoint), para después con PowerQuery llamar a ese Excel (el export). Para ello, pretendo guardar el export, en la ruta relativa "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" donde los \..\..\..\ saltan las rutas personales de cada usuario (tipo C:\users\IDusuario\). Eso lo hace bien, y el archivo se guarda en la ruta de cada usuario que lo usa, pero surge el problema 2 Problema 2: PowerQuery no trabaja con rutas relativas del tipo  "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" necesita que sea del tipo fija "C:\users\IDusuario\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" pero claro, IDusuario es diferente para cada usuario.   Pero escribiendo todo esto, creo que he dado con una posible solución, no grabar el export en una ruta de usuario, sino en una en la raiz de C:, que siempre será igual para todos los usuarios, del tipo C:\Sap\export.xlsx que seria igual en todos los ordenadores. Asi sí podría decirle a PowerQuery que vaya siempre a la ruta C:\Sap\ que existirá en todos los ordenadores. Mañana intentaré hacer pruebas, aunque mi solución ideal seria que se pudiera guardar en el SharePoint. Saludos.
    • Hola La opción brindada por @torquemada es correcta, funciona, pero hay algunos inconvenientes que (desde mi punto de vista) no la convierten en mi primera elección. Los inconvenientes son: Tendrías que ir columna por columna haciendo los reemplazos, claro que no se harían a mano sino que utilizarías la opción reemplazar o la opción texto en columnas, aun asi demorará un poquito y será trabajoso. Cada vez que descargues otro listado, tendrás que volver a realizar los reemplazos. Me parece una mejor propuesta lo siguiente: Descarga los movimientos a un archivo de Excel Desde tu control de pagos (otro archivo) cargas los movimientos del archivo descargado mediante Power Query Power Query hará los reemplazos y reconocerá todo correctamente (sin que tengas que hacer nada especial) Cuando descargues los movimientos un día posterior, solamente tendrás que hacer clic en "Actualizar" y todo funcionará en automático
    • Hola a todos, Efectivamente, me temo que tal como trabajan las funciones =HOY() y/o =AHORA() (volátiles), sólo con macros puedes obtener soluciones. Un recurso pedestre podría ser, cada vez que quieras que se fije un dato, te sitúes en esa celda y pulses F2, F9 e INTRO.  Pero claro, puede ser un inconveniente si hay que hacerlo repetitivamente en muchas ocasiones,.............. en fin, lo comento sólo como posibilidad. Saludos,
    • Hola nuevamente, mi duda sigue siendo la ruta, o rutas, finales que quedan, esas que llamas "relativas"; igual por si acaso pon 3 o 4 de esas, tal cual son y/o se ven en el explorador de cada PC y, de ser posible, en cualquier otro "lado" en que las veas.
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.