Excel - Dividir un columna en varios archivos txt de 100 filas

   
Vista:

Dividir un columna en varios archivos txt de 100 filas

Publicado por Antonio JUlca matenco@hotmail.com (4 intervenciones) el 25/09/2015 05:19:00
Hola y gracias por la ayuda. Tengo en un excel una columna de más de 340 000 filas. Necesito dividirlas en archivos txt de máximo 100 lineas cada uno. ¿Hay alguna forma de hacerlo automatizado?
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

Dividir un columna en varios archivos txt de 100 filas

Publicado por Juanjo (494 intervenciones) el 25/09/2015 08:56:35
Muy buenas.

Adapta esta macro a tus necesidades. Tienes que modificar el nombre de las hojas y la carpeta donde quieres guardarla. He hecho una prueba con 34.000 filas y ha tardado algo más de un minuto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub guardar()
    inicio = Time()
    veces = Int(Sheets("Hoja1").Range("A1").End(xlDown).Row / 100) + 1
    For i = 1 To veces
        Sheets("Hoja1").Select
        desde = (i - 1) * 100 + 1
        hasta = desde + 99
        Rows(desde & ":" & hasta).Select
        Selection.Copy
        Sheets("Hoja2").Select
        Range("A1").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        f = Format(i, "0000") & ".txt"
        ActiveWorkbook.SaveAs Filename:="C:\aa\" & f, FileFormat:=xlTextMSDOS, CreateBackup:=False
    Next
    fin = Time()
    MsgBox fin & " - " & inicio
End Sub

Un saludo. Juanjo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Dividir un columna en varios archivos txt de 100 filas

Publicado por Antonio Julca Matenco@Hotmail.com (4 intervenciones) el 27/09/2015 08:50:30
Hola Muchas gracias por la respuesta. Disculpa por favor. Sólo conozco hasta tablas dinámicas. ¿Donde escribo lo que me dices?
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

Dividir un columna en varios archivos txt de 100 filas

Publicado por Cacho R (44 intervenciones) el 27/09/2015 00:02:16
Hola! Antonio (y Juanjo)
- El código que te muestro se ha demorado entre 2 y 3 segundos en procesar las 340 mil filas.
- Sólo debes indicarle al procedimiento la primera celda a procesar (iniCell = "$E$1", por ejemplo)

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
Sub Macro340()
'------------------
'by Cacho Rodríguez
'------------------
Dim mPath$, iniCell$, i&, LR&, Vec, j%, iniTime!, R%
 
iniCell = "$E$1"
 
iniTime = Timer
mPath = ThisWorkbook.Path & "\Txt\"
 
With CreateObject("Scripting.FileSystemObject")
  On Error Resume Next: .GetFolder(mPath).Delete True: On Error GoTo 0
  .GetFolder(ThisWorkbook.Path).subFolders.Add "Txt"
End With
 
LR = Cells(Rows.Count, Range(iniCell).Column).End(xlUp).Row
 
For i = Range(iniCell).Row To LR Step 100
  Vec = Cells(i, Range(iniCell).Column).Resize(100)
  R = 1 + R
  Open mPath & Format(R, "0000") & ".txt" For Output As #1
  For j = 1 To 100
    If Vec(j, 1) = "" Then Exit For
    Write #1, Vec(j, 1)
  Next
  Close
Next
MsgBox "Proceso terminado en: " & Format(Timer - iniTime, "0.00 seg")
End Sub

Saludos, Cacho R.
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

Dividir un columna en varios archivos txt de 100 filas

Publicado por Juanjo (494 intervenciones) el 27/09/2015 22:32:32
Muy buenas.

Qué tal, Cacho?

He ejecutado tu código y me ha llevado algo más de 5 segundos, lo cual es perfectamente complatible con lo que tú dices, teniendo en cuenta que mi ordenador tiene ya unos añitos.

También he ejecutado el mío, que ha llevado 33 minutos. Obviamente las diferencias son escandolosas en favor del tuyo. Seguro que la opción que propones de crear el documento e ir escribiendo es más eficiencte que la que yo propongo que es copiar la información en otra hoja y luego irla guardando en ficheros.

Solo una apreciación y no quiero que nadie piense que quiero entrar en una guerra de defender nada. Antonio quiere que se copien 340.000 filas, no 340.000 celdas. Lógicamente se puede adaptar tu código para meter más columnas y seguiría siendo mejor que mi sistema

Así pues, enhorabuena.

Un saludo. Juanjo.
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

Dividir un columna en varios archivos txt de 100 filas

Publicado por Cacho R (44 intervenciones) el 28/09/2015 07:20:26
- Tienes razón, Juanjo, en que con un "retoque ínfimo" se consiguen traspasar más columnas por fila.
Sin embargo -y en tal caso- faltaría un dato importante: el separador de columnas (una "coma", un Tab, un Espacio, etc).

- Pero te sugiero que esperemos la evaluación del consultante puesto que este comentario:
> "Tengo en un excel una columna de más de 340 000 filas."

sigo interpretándolo como que tiene info en una sola columna.

¡Veremos!, ¿No?...
Saludos, Cacho R.
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

Dividir un columna en varios archivos txt de 100 filas

Publicado por Antonio Julca matenco@Hotmail.com (4 intervenciones) el 28/09/2015 14:17:01
Hola y muchísimas gracias. Es verdad, es una sola columna pero igual gracias a los dos. Quisiera probar sus macros pero no se donde ingresarlas. Como puedo hacerlo?
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

Dividir un columna en varios archivos txt de 100 filas

Publicado por Juanjo (494 intervenciones) el 29/09/2015 07:55:49
Muy buenas.

Pues sí, efectivamente, tenías razón. Buen trabajo.

Un saludo. Juanjo.
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

Dividir un columna en varios archivos txt de 100 filas

Publicado por Antonio JUlca matenco@hotmail.com (4 intervenciones) el 01/10/2015 21:34:56
Estimado Cacho
Corrí tu formula, la ejecuto en menos de 0.5 seg. pero hay un problema. En el resultado los valores salen entre "comillas" Hay alguna forma de modificar la formula para que esto no suceda
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

Dividir un columna en varios archivos txt de 100 filas

Publicado por nn (8 intervenciones) el 03/10/2015 22:55:50
probá poniendo Print #1, Vec(j, 1) en lugar de Write #1, Vec(j, 1)
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

Dividir un columna en varios archivos txt de 100 filas

Publicado por jorge (1 intervención) el 08/10/2015 20:38:05
Felicidades !!

Es un código muy rápido.

Permitidme una pregunta: si en vez de ser una sola columna, fuesen varias columnas, ¿como se podría modificar para que cumpliera esa función?. Por ejemplo, tener los datos en A1:G10000

He probado vafrias opciones, pero no van bien.

Gracias. Recibid un cordial saludo
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