Excel - Ayuda macro filas columnas

   
Vista:

Ayuda macro filas columnas

Publicado por unibane (1 intervención) el 17/11/2011 12:53:16
Hola a todos lo primero. Soy nuevo en el foro y tengo una duda que resolver, la cual paso a explicaros:

- Tengo un archivo excel bastante extenso (tiene más de 50.000 líneas).

- El archivo se divide en bloques iguales; a ver si me explico, las 42 primeras lineas son un bloque que contiene diferentes campos en la columna A (dirección, nombre...) y valores en la columna B; de la linea 43 a la 84 es otro bloque en el que la columna A coincide con la columna A del primer bloque (direccion, nombre...), lo único q varía es la columna B (los valores). Es decir, la columna A es la misma para cada bloque de 42 líneas, la B varía para cada bloque.


- Lo q quiero hacer es un archivo excel de 42 líneas en total de tal manera q:

o En la columna A y B aparezcan los campos que aparecen ahora mismo.

o En la columna C los campos que ahora estan en las filas 43 a 84 de la columna B.

o En la columna D los campos que ahora estan en las filas 85 a 126 de la columna B.

o Y así sucesivamente, es decir, organizar los datos de tal manera que sólo aparezcan una vez los campos de direccion, nombre, etc.

Espero haberme podido explicar. Tengo que resolverlo urgentemente y no lo consigo. Agradecería enormemente que me echarais una mano.

Gracias de antemano y un saludo a todos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JuanC

Ayuda macro filas columnas

Publicado por JuanC juanc2942@gmail.com (1053 intervenciones) el 17/11/2011 14:15:29
fijate si este pequeño código te resuelve el problema, sino lo seguimos...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
'//By JuanC - Nov. 2011
Sub test()
Dim rngSrc As Range
Dim rngDst As Range
Dim n&, i&, col&, fil&, count&
Hoja2.Cells.Clear '//Hoja destino...
Set rngSrc = Hoja1.Range("a1")
Set rngDst = Hoja2.Range("a1")
n = 42 '//Cantidad de filas por bloque...
For i = 0 To n - 1
    rngDst.Offset(i, 0).Value = rngSrc.Offset(i, 0).Value
    rngDst.Offset(i, 1).Value = rngSrc.Offset(i, 1).Value
Next
fil = i
i = 0
col = 2
count = 0
Do While 1
   If rngSrc.Offset(fil, 1).Value = "" Then Exit Do
   rngDst.Offset(i, col).Value = rngSrc.Offset(fil, 1).Value
   If n = count + 1 Then
      col = col + 1
      count = 0
      i = 0
   Else
        count = count + 1
        i = i + 1
   End If
   fil = fil + 1
Loop
End Sub


Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar