Inicio > Microsoft Excel > elsamatilde > Macro para copiar celdas de manera secuencial

Macro para copiar celdas de manera secuencial

Experto:
Usuario:
Fecha: 02/04/2009
Valoración: (5,00 sobre 5) Categoría: Microsoft Excel
13/03/2009
dudemx, usuario preguntando en Microsoft Excel
Usuario
Macro para copiar celdas A1:N14 (son 2005 filas y 14 columnas) en otra hoja pero de A1:A14, osea que fila/registro lo transponga/coloque en una columna de manera secuencial. Que copie la celda de A1 hasta N1, coloque el contenido de las celdas en otra hoja iniciando en A1, luego pase la siguiente celda a A2. En total serian 28056 celdas copiadas. Gracias y saludos
13/03/2009
dudemx, experto respondiendo en Microsoft Excel
Experto
Hola:
Si los datos de la fila 1 (A1:N1) van a otra hoja en col A, aclarame dónde debieran ir los datos de la fila 2: ¿en la misma col a continuación o en la col B?
Porque si fuese en col B con seleccionar todo el rango y copiar con Pegado Especial, Transponer solucionas el tema.

Saludos. Espero tus aclaraciones
Elsa

http://es.geocities.com/lacibelesdepunilla/macros
13/03/2009
dudemx, usuario preguntando en Microsoft Excel
Usuario
Gracias por contestar tan pronto mi duda, ya implemente una solucion parcial. Tengo una hoja de excel con 20004 registros y 29 campos (osea tengo datos de A1:AC20004).
Intente antes de preguntar aqui copiar y pegar especial con transponer pero excel no ejecuto la orden, ya que eran demasiados datos
Esta hoja la dividi en 3 hojas, una parte de los datos se quedaron igual (hoja 1), y otra parte la tenia que transponer (hoja2), pero sin perder la secuencia de donde estaban los datos, osea el orden del registro original, y otra parte (hoja 3) mezcla datos de las otras 2 hojas y tiene datos exclusivos de ella. Todo esto es para luego migrarlo a Access, y luego a MS SQL.
Buscando encontre esta macro, y le fui modificando el contador, la fila y la columna:
Sub Datos1()      'hay un tope de 65534
                           'estos son los periodos 1-65534, 65535-131069, 131070-196604,
                           '196605-280056
Dim x, y, z As Integer
y = 1
z = 1
   
    For x = 1 To 65534 '280056 es el valor total 83451
        Worksheets("Hoja2").Cells(x, 1).Value = Worksheets("Hoja1").Cells(y, z)
        If z = 14 Then y = y + 1
        If z < 14 Then z = z + 1 Else z = 1
    Next x
End Sub
Me di cuenta que excel solo puede operar hasta con 65536 registros, asi que tuve que dividir la secuencia de vaciado de datos por partes.
Todo muy bien, hasta que llegue a una parte que tiene varios datos en secuencia enlazados de 2 hojas y ahora tengo que integrarlos en la misma secuencia en la 3era hoja. Este el orden, copiar en excel para mejor visualizacion:
Llenado de Celdas    Procesos    ProcesosValores    ProcesosDetalle        Datos ejemplo
        Id    Id    Descripcion   
1    Procesos col 3        2    CR    151
2    Procesos col 2        10    Sucursal    11
3        17    17    Remision    $36,371.00
4        16    16    Real    $36,371.00
5        28    28    Real-Remision    $0.00
6    Procesos col 7        9    Folio    705827
7        25    25    Real (dlls)    $22.00
8        18    18    $1,000    $0.00
9        19    19    $500    $9,500.00
10        20    20    $200    $18,200.00
11        21    21    $100    $7,700.00
12        22    22    $50    $950.00
13        23    23    $20    $20.00
14        24    24    Moralla    $1.00
15        27    27    Total Real    $36,371.00
16        30    30    Remision-Total Real    $0.00
17        29    29    Real-Total Real    $0.00
18    1        11    Num. Envases    1
19    Procesos col 5        6    Fecha Venta    31/12/2008
20    null        12    Billetes Falsos   
21    null        15    Comentarios   
Tengo que vaciar todo en procesodetalles. debo confesar que es la 1era vez que uso VBA y las macros, nunca pense que fuera tan util :)

Nuevamente gracias por la atencion, deberia implementar un boton de donacion paypal en su pagina web!!!
17/03/2009
dudemx, experto respondiendo en Microsoft Excel
Experto
No entiendo qué me estás consultando..... si todavía no lo resolviste podés enviarme tu libro (o esta última parte) y veré si puedo comprenderlo.

Saludos
Elsa

PD) Buena idea lo del botón en la web.... aunque prefiero que reciban algo a cambio, como un manual .
17/03/2009
dudemx, usuario preguntando en Microsoft Excel
Usuario
Si, la consulta era para cambiar de posicion datos de celdas que estan ordenados en filas/registros a campos/columnas, osea, hacer una transpuesta. Pero como eran demasiados datos no se podia. Use y modifique el codigo de arriba y ya lo consegui, ahora...
Ocupo una instruccion que cambie el formato de una celda de numero a fecha. Esta instruccion la pienso usar en el ciclo for para que me cambie una celda de uan columna cada 20 filas.
Yo soy de Mexico, y nunca eh usado el sistema de pago que usa en su pagina pero si paypal por eso lo sugeri, saludos :)
21/03/2009
dudemx, experto respondiendo en Microsoft Excel
Experto
Para cambiar el formato cada 20 filas, aquí te dejo una rutina de ejemplo:
Sub FormatoFecha()
'empieza en fila 2 de col A
Range("A2").Select
While ActiveCell.Row <= 2000 'ajustar el límite máximo
Selection.NumberFormat = "dd/mm/yyyy;@"
ActiveCell.Offset(20, 0).Select
Wend
End Sub

Saludos. Si este tema quedó resuelto por favor finaliza y comienza una nueva consulta por un nuevo tema.

Elsa

http://es.geocities.com/lacibelesdepunilla/macros
01/04/2009
dudemx, experto respondiendo en Microsoft Excel
Experto
Si el tema quedó concluído no olvides finalizar la consulta.
Sdos
Elsa
02/04/2009
dudemx, usuario preguntando en Microsoft Excel
Usuario
Muchas Gracias por responder tan rapido, definitivamente deberia pensar en poner un boton de paypal para poder agradecerle por su ayuda. Saludos
Enlaces patrocinados