Macro para combinar trabajadores en una hoja con todos los centros de trabajo de otra hoja

Buenas,

Necesito ayuda con este problema, espero podáis ayudarme.

Tengo una primera hoja donde están los trabajadores con todos sus datos: nombre, expediente, CENTRO DE TRABAJO, dirección, etc. Se pueden ir incorporando o quitando trabajadores de esta lista.

En otra hoja hay una relación de todos los centros de trabajo de la compañía con el código, dirección, otros datos y también pueden ir añadiendo o quitando líneas.

Necesito que cada línea de trabajador se una a cada centro de trabajo en otra Hoja. Es decir 2 filas con trabajadores en la Hoja 1 + 3 filas con Obras en la Hoja 2 = 6 Lineas en la Hoja 3, donde cada trabajador quede unido a cada centro de trabajo (todos los trabajadores asociados a todos los centros). Cada vez que se añada un trabajador o un centro, habría que borrar lo que hay y hacerlo de nuevo.

Explicar esto con palabras es difícil, espero que hay logrado explicarme.

El ejemplo debería quedar:

Trabajador 1 + Centro 1

Trabajador 1 + Centro 2

Trabajador 1 + Centro 3

Trabajador 2 + Centro 1

Trabajador 2 + Centro 2

Trabajador 2 + Centro 3

1 Respuesta

Respuesta
1

Te anexo la macro, combina la columna "A" de la hoja1 (trabajadores), con la columna "A" de la hoja2 (centros). Combiné esas columnas como ejemplo, porque no mencionaste cuáles columnas combinar. El resultado te lo pone en las columnas "A" y "B", trabajador y centro respectivamente, en la hoja3.

Cambia en la macro "Hoja1", "Hoja2" y "Hoja3" por los nombres de tus hojas.

Sub UnirNombreCentro()
'Por.Dante Amor
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    Set h3 = Sheets("Hoja3")
    h3.Cells.Clear
    '
    k = 2
    For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row
        For j = 2 To h2.Range("A" & Rows.Count).End(xlUp).Row
            h3.Cells(k, "A") = h1.Cells(i, "A")
            h3.Cells(k, "B") = h2.Cells(j, "A")
            k = k + 1
        Next
    Next
End Sub

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: UnirNombreCentro
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

Saludos. Dante Amor

Buenas tardes y muchas gracias. Eres un crack.

He ampliado yo el resto de las columnas con los datos que necesito. Así quedaría:

Y ya estaría de 10 si pudiéramos copiar la primer fila de la hoja 1 tal cual en la hoja 3 donde vienes los títulos de los datos: "Nombre" "Exp" etc. Es decir dejar la barra de cabecera.

Agrega después de esta línea

H3. Cells. Clear

Esta línea

H1. Rows(1). Copy h3. Rows(1)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas