Saltar al contenido

Extraer datos de otro libro de forma dinámica


Jameo

Recommended Posts

publicado

Buenos días comité de sabios:

Voy a tratar de explicar mi problema, sobre el que googleado mucho pero no alcanzo a encontrar una solución definitiva. 

Mi propósito es hacer vínculos dinámicos a otro libro para extraer datos en concreto de una serie de celdas en concreto, valga la redundancia. 
El tema es que el software del sitio donde trabajo no realiza las operaciones que necesitaría, lo que sí puedo hacer desde el programa es exportar en .xls un listado como fuente de dichos datos. Es una lista de productos en la columna A, y las unidades vendidas en la columna D, el resto de datos son despreciables. Como cada vez que solicito el listado es un archivo nuevo, no puedo ejecutar sobre él las operaciones, o no sería cómodo, así que mi objetivo es crear una hoja para extraer de ahí lo que necesito. 
El tema es que el software solo lista productos con unidades vendidas superiores a 0, es decir, solo muestra lo que se ha vendido y no muestra lo que, aún existiendo, no se vende, por lo que el orden de dichos productos no es siempre el mismo, varía en función de las ventas. De no ser así serían referencias fijas porque siempre estarían en el mismo sitio. Aunque siempre estará su nombre en la columna A y sus unidades en la columna D, es no varía. 
En otra hoja, tendré una lista con todos los productos, y a base de fórmulas quiero extraer las unidades, el nombre no es importante porque ya lo tendré en la hoja nueva, solo quiero saber el número de unidades vendidas para un determinado producto. 
Paso a la parte un poco más práctica:
Teniendo la lista en el listado "destino", busco coincidencias en el listado "fuente" con:

[En la celda b9] -> =COINCIDIR(A9;'[fuente.xlsx]Hoja1'!$A$1:$A$185;0)
esto me devuelve la fila en la que el registro que ya tengo en A9 en destino (pongamos Producto 1). 
Luego paso a: [En la celda C9] -> =DIRECCION(B9;4)
Donde recupero la dirección de la celda a la que quiero apuntar, como es la columna D, pongo 4. 
Entonces ya tengo la dirección de la celda que necesito: $D$18
Si yo ahora utilizo: ='[fuente.xlsx]Hoja1'!$D$18 Me devuelve exactamente el dígito que necesito. 
Pero mi problema es que la celda de destino no siempre será $D$18, sino que es el resultado de la fórmula anterior. ( =DIRECCION(b9;4) )
Quisiera hacer referencia en la llamada a la celda al resultado de dicha fórmula, contenida en este caso en C9 (por ejemplo). 
No puedo utilizar ='[fuente.xlsx]Hoja1'!C9 , porque me estaría refiriendo a la celda de la hoja de origen, pero quiero que sea "ruta de destino de la otra hoja"+"celda especificada en hoja actual". 
Hay alguna manera de usar ='[fuente.xlsx]Hoja1'!=c9 ? o cual sería la sintaxis correcta para que en esa parte de la fórmula se aplique el resultado de la celda mencionada? 
En Google siempre se comenta sobre la función INDIRECTO, pero eso me obliga a tener el libro fuente abierto para que funcione, y quisiera saber alguna forma de que no fuera necesario, toda vez que los datos hasta ahora los obtengo sin problemas con el libro fuente cerrado. 

Si alguien tiene una manera menos complicada también es bienvenida, y cualquier aporte sobre como solucionar el problema también. 
Sé que no me explico muy bien así que pueden consultar lo que buenamente quieran. 
Muchas gracias de antemano.

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 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.
    • Hola, tal cual se plantea, solamente con macros (VBA); en todo caso, hacerlo a mano o con "CTRL + ;". Saludos.
    • Mil gracias, en verdad todo apoyo es super agradecido,   Su aporte y comentarios valen mucho para in servidor, y tiene razon esperare a conocer si alguien comparte alguna otra manera,   Gracias!!! (y)
  • 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.