Saltar al contenido

Concatenar filas de diferentes hojas


Recommended Posts

publicado

Hola a todos,

Hace muchos años, creo que en el 2009-10, tenía que contenar contenidos de filas y puse un post ( [SOLUCIONADO]Concatenar Filas ) donde me resolvieron el problema con una macro que he estado utilizando hasta ahora, ahorrándome montón de trabajo.

La cosa es que ahora me haría falta modificar esa macro para que igualmente concatenara filas de las tablas que se encuentran en dos hojas diferentes. Diriamos que una hoja llamada Tabla1 y otra hoja llamada Tabla2, que cogiera cada unas de las filas de la Tabla1 y las contatenara con cada una de las filas de la Tabla2 en una nueva hoja de Tabla de Resultados (las dos tablas tienen en principio el mismo número de columnas, en el mismo orden). No sé si es muy difícil esa actualización o se puede hacer en un "plisplas" y alguien me puede ayudar.

Subo una hoja "MacroConcatenarDiferentesHojas" como ejemplo "a mano" de lo que quiero hacer, y la macro que he usado hasta ahora para concatenar todas las filas dentro de una hoja "Copia de Concatenar Filas".

Por otra parte he intentado usar la macro de contatenar filas en un ordenador que tengo con Libreoffice y le da un error algo así como "Error de ejecución de BASIC. '1' ". "Type: com.sun.star.uno.RuntimeExceptionMessage:" no sé si es que no pueden ejecutar las macros de Excel en Calc, aunque tenía entendido que sí era posible. Si alguien me pudiera comentar algo para solucionarlo si es posible.

Gracias de antemano y un saludo

eljadi

 

MacroConcatenarDiferentesHojas.zip Copia de Concatenar filas.zip

publicado

Hola JSDJSD,

Muchas gracias por tu aportación.

El resultado que pongo como ejemplo está bien.

Lo que ocurre es que me expliqué bastante mal y subí el archivo de ejemplo "ideal", lo

publicado

Hola JSDJSD,

Muchas gracias por tu aportación.

El resultado que pongo como ejemplo está bien.

Lo que ocurre es que me expliqué bastante mal y subí el archivo de ejemplo "ideal", lo que me gustaría tener si algún dia soy capaz de programar una marcro.

Mi idea "ideal" es tener un archivo con varias hojas, en la hoja "Campos" pondría todos los campos que aparecen en las tablas de las hojas "Tabla1" y "Tabla2" (que por otra parte ambas tablas tienen la misma estructura de campos). Y al  lado de cada campo de la hoja "Campos" poner la operación que habría que hacer en la concatenación y como ejemplo pongo en el "Campo1: CONCATENAR:"/"", "Campo2:SUMA" y "Campo3:PROMEDIO". Y que al ejecutar la macro con un botón que pusiera en esa hoja, concatenara las filas presentes en la hojas "tabla1" y "tabla2" siguendo el criterio de concatenación, suma o promedio indicado para cada uno de los campos determinados. Y esa información resultante la pusiera toda en una hoja "TablaResultado"

Así para los valores que me comentas que están mal la hoja "TablaResultado" para el campo 3: 16, 17 y 18. Están bien ya que son el promedio de los valores 12 del "Campo3" de la hoja "Tabla1" y 20 del "Campo3" de la hoja "Tabla2", en este caso 16. Para los valores 17  (12+22)/2=17 y para 18 (12+24)/2=18.

El problema es que hacer una macro así (desde mi ignorancia en el tema) debe de llevar hacerla bastante tiempo y ser compleja, por lo que me parece un abuso solicitar ayuda para todo eso.

Así que pensé en solicitar algo más sencillo de hacer a partir de la macro que ya tenía y que fuera relativamente facil de hacer para alguien con conocimientos. Por ello pedia ayuda para concatenar el contenido de la celdas solamente. Es decir coger cada una de las filas del la hoja "Tabla1" y concatenear el contenido de cada celda con el correspondiente de cada una de las filas de la hoja "Tabla2", y que el resultado de todas estas operaciones aparecieran en una nueva hoja "TablaResultado".

Subo el archivo de nuevo donde he añadido una nueva hoja "TablaResultadoCORREGIDO", donde aparece la concatenaciones que resultarian de realizarlo con los contenidos de las hojas "Tabla1" y "Tabla2". Como elemento de concatenación en este ejemplo he utilizado el guión bajo (_) para intentar que quede más claro todo.

Espero haberme explicado mejor en esta ocasión. Si tienes alguna duda gustosamente te la aclararé. Y muchas gracias por tu tiempo y conocimientos.

Un saludo. eljadi

MacroConcatenarDiferentesHojas.xlsx

publicado
Hace 13 minutos , JSDJSD dijo:

Mañana te lo subo modificado

Muchas gracias, cuando puedas no corre prisa.

Un saludo

publicado

Hola JSDJSD,

Una pregunta, ¿lo que pido es que es fácil de programar o es que tú eres un puto crack de la programación? ¿te dedicas a esto de forma profesional?

Me parece una pasada y lo de la ventanita emergente una pijotada...

He estado probando la macro y he encontrado un bug. Cuando añado más campos a la tabla (Campo4, Campo5,...) solo concatena los 3 primero campos (como en el ejemplo que puse por defecto de lo que había que hacer). Cargo el archivo con tablas con 10 campos para que puedas ver que en los resultados que solo concatenar los 3 primeros campos los otros no los considera.

En cambio cuando añados más registros (filas) si que las concatena todas perfectamente.

También me he dado cuenta que cuando borro todo el contenido de las hojas TablaResultado correr la macro y no pone la primera fila con los encabezados de la tabla.

Y por último no sé porque cuando le doy al botón de formulario la ventana emergente me sale vacía a diferencia de la que tu reportas en tu post que sale con los datos. Te pongo un pantallazo adjunto. Quizás se deba a que estoy corriendo la macro en Calc Libreoffice en lugar de en Excel.

Por otra parte, con que solo hubieras realizado la macro para que aparecieran los datos concatenados como en la hoja "TablaResultadoCORREGIDO" era más que suficiente.

Muchas gracias por todo, es una pasada.

Un saludo

 

Captura3.PNG

MacroConcatenarDiferentesHojas 05-05-2020.xlsm

publicado
Hace 22 horas, eljadi dijo:

He estado probando la macro y he encontrado un bug. Cuando añado más campos a la tabla (Campo4, Campo5,...) solo concatena los 3 primero campos (como en el ejemplo que puse por defecto de lo que había que hacer). Cargo el archivo con tablas con 10 campos para que puedas ver que en los resultados que solo concatenar los 3 primeros campos los otros no los considera.

No hay ningún bug, simplemente la macro esta diseñada para realizar la concatenación de tres columnas con un numero indefinido de filas. 

Si lo que pretendes es concatenar más columnas di la cantidad de ellas y que lógica hay que seguir en cada una de ellas e intentamos prepararte algo. Un saludo.

publicado

Hola JSDJSD,

El número de columna puede variar de una vez a otra que utilizo la macro, pero tanto en la Tabla1 como en la Tabla2 es el mismo número de columna cada vez.  Por lo general no suele sobrepasar las 30 columnas. Son bastantes, por eso me viene tan bien esta macro.

Y la lógica  a seguir con cada una de ellas puede ser diferente de una vez a otra que uso la macro. Por esa razón en la hoja "Campos", soñaba con poder poner la lista de campos y al lado la operativa que había que hacer con cada uno de ellos (sumar, restar, rango, mayor,... o simplemente concatenar con una "/" o "_") pero como supongo que esto es bastante más complicado de programar, simplemente concatenado los contenidos con un "/" o "_" como se realiza en la macro que has realizado ya me vale muy bien.

Depués puedo trabajar con las contatenación modificando el "_" por una resta, suma,... o extrayendo en diferentes columna y operando. Una vez en concatenado es fácil trabajar con las columnas resultantes.

Quería darte de nuevo las gracias por todo tu tiempo y dedicación.

Un saludo

eljadi.

publicado

Ok, me alegro que sea de utilidad para ti, pero nunca olvides agradecer a quien te ayuda o intenta ayudar y en este foro la manera de agradecer es mediante el corazoncillo que se encuentra en la zona inferior derecha. Un saludo.

Agradecimiento.gif

Archivado

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

×
×
  • 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.