Ayuda en Macros

25/03/2009 - 21:46 por Rubén GSSer | Informe spam
Estimados amigos necesito su ayuda para mejorar este codigo, muchas gracias
Les comento tengo una base de datos en la cual toda la información en una
sola columna (campo), 14 celdas del campo vienen a formar un registro y asi
sucesivamente, lo que requiero es seleccionar estas 14 celdas copiarles luego
un pegado especial transponer y asi los 14 repetitivamente, debido a esto
decide hacer una macro con el grabador de macros, con el codigo adjunto
llegue transponer los primeros 14 celdas pero el problemas es cuando quiero q
este codigo se repetiva para las siguientes 14 y asi hasta el final.

orkleman@terra.com.pe
http://www.
casa
Calle. Guillermo Dansey 2188- Lima
511 -+51 1 3368
511 -+51 1 425
LIMA/LIMA/LIMA
peru
lima
Walter,Ormeño
orkleman@terra.com.pe
Gerente
511 -4254
511 -4254


gtc@gomelast.com
http://www.
casa 1
Av. 22 de julio 230
511 -+51 1 3521155; 511 -3520039 / 3511658
511 -3516
LIMA\LIMA\ATE
Arequipa
Peru
WILLIAM,GALVEZ
igosac@terra.com.pe
Gerente General
511 -224-
511 -224-

CODIGO
ActiveCell.Range("A1:A14").Select
Selection.Copy
ActiveCell.Offset(0, 2).Range("A1").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=True
ActiveCell.Offset(16, -2).Range("A1:A14").Select
Application.CutCopyMode = False
Selection.Copy
ActiveCell.Offset(0, 2).Range("A1").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=True

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
26/03/2009 - 05:39 | Informe spam
hola, Rubén !

... una base de datos... toda la informacion en una sola columna... 14 celdas... vienen a formar un registro y asi sucesivamente
... seleccionar estas 14 celdas... pegado especial transponer y asi los 14 repetitivamente ...
... con el grabador de macros... llegue transponer los primeros 14 celdas
... el problemas es cuando quiero q este codigo se repetiva para las siguientes 14 y asi hasta el final...



- indica cual es la fila donde inician tus datos (realmente)
- confirma que en cada grupo de 14 celdas NO existen celdas vacias intermedias
- comenta (si hubiera) cualquier otro detalle "en el tintero"

saludos,
hector.
Respuesta Responder a este mensaje
#2 Rubén GSSer
26/03/2009 - 21:55 | Informe spam
Hola Hector gracias por la ayuda,

- indica cual es la fila donde inician tus datos (realmente)


LOS DATOS SE INCIAN EN LA FILA 2, YA QUE EN LA 1ERA ESTA EL ENCABEZADO
- confirma que en cada grupo de 14 celdas NO existen celdas vacias intermedias: ENTRE CADA GRUPO DE LAS 14 CELDAS HAY UNA CELDA EN BLANCO
- comenta (si hubiera) cualquier otro detalle "en el tintero"


BUENO CREO QUE ESO SERIA TODO

Saludos
Rubén

"Héctor Miguel" escribió:

hola, Rubén !

> ... una base de datos... toda la informacion en una sola columna... 14 celdas... vienen a formar un registro y asi sucesivamente
> ... seleccionar estas 14 celdas... pegado especial transponer y asi los 14 repetitivamente ...
> ... con el grabador de macros... llegue transponer los primeros 14 celdas
> ... el problemas es cuando quiero q este codigo se repetiva para las siguientes 14 y asi hasta el final...

- indica cual es la fila donde inician tus datos (realmente)
- confirma que en cada grupo de 14 celdas NO existen celdas vacias intermedias
- comenta (si hubiera) cualquier otro detalle "en el tintero"

saludos,
hector.



Respuesta Responder a este mensaje
#3 Héctor Miguel
27/03/2009 - 04:09 | Informe spam
hola, Rubén !

LOS DATOS SE INCIAN EN LA FILA 2, YA QUE EN LA 1ERA ESTA EL ENCABEZADO
ENTRE CADA GRUPO DE LAS 14 CELDAS HAY UNA CELDA EN BLANCO



(no es necesario que GRITES !!!) :))

prueba con una macro +/- como la siguiente:

Sub Transponer()
Dim Fila As Integer
For Fila = 2 To [a65536].End(xlUp).Row Step 15
Range("c65536").End(xlUp).Offset(1).Resize(, 14).Value = _
Application.Transpose(Range("a" & Fila).Resize(14).Value)
Next
End Sub

saludos,
hector.
Respuesta Responder a este mensaje
#4 Rubén GSSer
27/03/2009 - 15:37 | Informe spam
Estimado Miguel muchas gracias por tu ayuda, diste solución a mi problema, si
no fuera mucha molestia prodrias explicarme el código.

Saludos
Rúben

"Héctor Miguel" escribió:

hola, Rubén !

> LOS DATOS SE INCIAN EN LA FILA 2, YA QUE EN LA 1ERA ESTA EL ENCABEZADO
> ENTRE CADA GRUPO DE LAS 14 CELDAS HAY UNA CELDA EN BLANCO

(no es necesario que GRITES !!!) :))

prueba con una macro +/- como la siguiente:

Sub Transponer()
Dim Fila As Integer
For Fila = 2 To [a65536].End(xlUp).Row Step 15
Range("c65536").End(xlUp).Offset(1).Resize(, 14).Value = _
Application.Transpose(Range("a" & Fila).Resize(14).Value)
Next
End Sub

saludos,
hector.



Respuesta Responder a este mensaje
#5 Héctor Miguel
27/03/2009 - 20:45 | Informe spam
hola, Rubén !

... prodrias explicarme el codigo.

Sub Transponer()
Dim Fila As Integer
For Fila = 2 To [a65536].End(xlUp).Row Step 15
Range("c65536").End(xlUp).Offset(1).Resize(, 14).Value = _
Application.Transpose(Range("a" & Fila).Resize(14).Value)
Next
End Sub





- la primera linea: -> For Fila = 2 To [a65536].End(xlUp).Row Step 15
determina las filas (primera y ultima) de la columna A y repite el bucle en "saltos" de 15 filas
(14 con datos MAS una fila de separacion en cada grupo)

- la segunda instruccion esta en dos lineas (o sea, se trata de una sola instruccion)

- la primera linea: -> Range("c65536").End(xlUp).Offset(1).Resize(, 14).Value "prepara" un rango de 14 columnas [.Resize(, 14)] en la siguiente fila libre [.Offset(1)] de la columna C
para "recibir" la transposicion de valores de las 14 FILAS de cada grupo de 15 (excluyendo la fila de separacion)

- la segunda linea: -> Application.Transpose(Range("a" & Fila).Resize(14).Value)
"toma" los valores de cada grupo de 14 filas y los transpone (para que sean depositados de filas a columnas)

saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida