Crear macro para crear una planilla

Necesito que me ayuden a crear un macro que genere una tabla a partir de otra tabla en excel, pero que tome solo algunos datos de ella.
Como ejemplo soy el siguiente link que es la tabla de la cual se sacaran los datos:

http://dl.dropbox.com/u/31683777/Captura.PNG

Necesito un macro que genere otra tabla con el siguiente orden ( adjunto archivo excel que es como debe quedar). Este lo hice manualmente para que quede la idea mas clara de como se toman los datos.

http://dl.dropbox.com/u/31683777/SUELDOS%20SEP%20-%20XT.xls

** Por el momento deseo crear un macro para la la columna A (MX).
SI se fijan hay espacios vacíos entre datos de columnas y filas, estos deben obviarse de alguna forma con alguna formula para que avance hasta el siguiente dato.

1 respuesta

Respuesta
1

Te anexo una macro, copia los datos de la hoja1 a la hoja2

Me falta copiar la fecha, que no encontré de dónde la toma

Instrucciones para ejecutar macro
1. Abre tu hoja 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. Para ejecutarla presiona F5

Sub creaplanilla()
'copia datos a otra hoja
'Por.Dam
Set hactual = Sheets("Hoja1")
Set hdest = Sheets("Hoja2")
hactual.Select
ufila = Range("A" & Rows.Count).End(xlUp).Row
j = 1
For i = 7 To ufila
    If Cells(i, 1) <> "" Then
        hdest.Cells(j, 1) = hactual.Cells(1, 34)
        hdest.Cells(j, 2) = hactual.Cells(i, 1)
        'hdest.Cells(j, 3) = hactual.Cells(1, ) 'fecha
        hdest.Cells(j, 4) = hactual.Cells(i, 34)
        j = j + 1
    End If
Next
End Sub

Prueba y me dices tus comentarios.

Saludos. Dam

Tu Código esta perfecto Dan, ahora la fecha tiene que ser fija ( la puedes incluir dentro del macro noma para que rellene toda la columna "C" hasta donde termine la columna"A" (después cuando yo quiera ejecutar el macro y necesite otra fecha, se la cambio en el código.

Lo otro que necesito es que los campos vacíos o distintos a Números, sean rellenados con un "0" Ejemplo: AH7 = 140 (eso esta ok en el resultado de la hoja2), AH12 = "" (aqui necesito que el resultado en la hoja2 sea un "0", y AH13= x ( que el resultado sea "0")

y finalmente necesito que el código prosiga con AM7, AN7, etc ,saltándose los las celdas como la que dice "pendiente" y las que están vacías.

Muchísimas gracias Dam eres genial.

Te cambio la macro

Sub creaplanilla()
'copia datos a otra hoja
'Por.Dam
Set hactual = Sheets("Hoja1")
Set hdest = Sheets("Hoja2")
hactual.Select
ufila = Range("A" & Rows.Count).End(xlUp).Row
j = 1
For i = 7 To ufila
    If Cells(i, 1) <> "" Then
        hdest.Cells(j, 1) = hactual.Cells(1, 34)
        hdest.Cells(j, 2) = hactual.Cells(i, 1)
        hdest.Cells(j, 3) = "15/11/2012" 'fecha"
        If hactual.Cells(i, 34) = "" _
            Or Not IsNumeric(hactual.Cells(i, 34)) Then
            hdest.Cells(j, 4) = 0
        Else
            hdest.Cells(j, 4) = hactual.Cells(i, 34)
        End If
        If hactual.Cells(i, 39) = "" _
            Or Not IsNumeric(hactual.Cells(i, 39)) Then
            hdest.Cells(j, 5) = 0
        Else
            hdest.Cells(j, 5) = hactual.Cells(i, 39)
        End If
        If hactual.Cells(i, 40) = "" _
            Or Not IsNumeric(hactual.Cells(i, 40)) Then
            hdest.Cells(j, 6) = 0
        Else
            hdest.Cells(j, 6) = hactual.Cells(i, 40)
        End If
        If hactual.Cells(i, 41) = "" _
            Or Not IsNumeric(hactual.Cells(i, 41)) Then
            hdest.Cells(j, 7) = 0
        Else
            hdest.Cells(j, 7) = hactual.Cells(i, 41)
        End If
        If hactual.Cells(i, 42) = "" _
            Or Not IsNumeric(hactual.Cells(i, 42)) Then
            hdest.Cells(j, 8) = 0
        Else
            hdest.Cells(j, 8) = hactual.Cells(i, 42)
        End If
        If hactual.Cells(i, 43) = "" _
            Or Not IsNumeric(hactual.Cells(i, 43)) Then
            hdest.Cells(j, 9) = 0
        Else
            hdest.Cells(j, 9) = hactual.Cells(i, 43)
        End If
        If hactual.Cells(i, 44) = "" _
            Or Not IsNumeric(hactual.Cells(i, 44)) Then
            hdest.Cells(j, 10) = 0
        Else
            hdest.Cells(j, 10) = hactual.Cells(i, 44)
        End If
        If hactual.Cells(i, 45) = "" _
            Or Not IsNumeric(hactual.Cells(i, 45)) Then
            hdest.Cells(j, 11) = 0
        Else
            hdest.Cells(j, 11) = hactual.Cells(i, 45)
        End If
        j = j + 1
    End If
Next
End Sub

Saludos.Dam

Hola Dam,

Hay un detalle en el código mira te lo muestro en las siguientes imágenes:

Esta es la planilla que me genera el macro que creaste...

http://dl.dropbox.com/u/31683777/macro%20dam.PNG

Pero como debe quedar es asi:

http://dl.dropbox.com/u/31683777/Como%20deberia%20ser.PNG

Y como hacer para que la fecha tome este formato MM/YYYY? ya que cuando le saco el dia me lo deja en nov-2012, y lo necesito en 11/2012.

y por ultimo las columnas que sean vacías o distintas a un numero ENtero, que no las tome.

saludos.

Te cambio la macro

Sub creaplanilla()
'copia datos a otra hoja
'Por.Dam
Set hactual = Sheets("Hoja1")
Set hdest = Sheets("Hoja2")
hactual.Select
ufila = Range("A" & Rows.Count).End(xlUp).Row
ucol = ActiveCell.SpecialCells(xlLastCell).Column
hdest.Columns("C").NumberFormat = "mm/yyyy"
j = 1
For k = 34 To ucol
If IsNumeric(hactual.Cells(1, k)) And hactual.Cells(1, k) <> "" Then
For i = 7 To ufila
    If Cells(i, 1) <> "" Then
        hdest.Cells(j, 1) = hactual.Cells(1, k)
        hdest.Cells(j, 2) = hactual.Cells(i, 1)
        hdest.Cells(j, 3) = Format("15/11/2012", "mm/yyyy") 'fecha"
        If hactual.Cells(i, k) = "" _
            Or Not IsNumeric(hactual.Cells(i, k)) Then
            hdest.Cells(j, 4) = 0
        Else
            hdest.Cells(j, 4) = hactual.Cells(i, k)
        End If
        j = j + 1
    End If
Next
End If
Next
End Sub

Saludos.Dam

Dam mil gracias, pero necesito hacerte la ultima pregunta.

Este código toma la colunmna "A" y me genera el archivo tal cual como lo quería.

Pero necesito crear otro idéntico que me tome la columna "B", como te lo reflejo en esta imagen.

http://dl.dropbox.com/u/31683777/Captura.PNG

saludos.

Podrías cerrar esta pregunta y crear una nueva con la siguiente petición.

Muy agradecido del foro en especial a Dam que quien me ha ayudado con una macro la cual me sirve mucho para agilizar el proceso que tengo que realizar. saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas