Crear archivo csv usando un archivo texto

El el siguiente archivo txt, la columna 3 corresponde a la hora, Quiero crear una macro que lea el archivo y cree un archivo cst con los siguientes datos
Primera fila: mínimo y máximo valor encontrado en columna 3
Segunda fila: llenar 24 celdas 0 hasta 23 ( 0,1,2,3,4, etc )
Tercera fila: contar valores para cada hora en columna 3, Si no hay valores para alguna hora poner el valor 0
Archivo texto

123 3 04
122 3 03
122 4 03
122 3 04
122 4 04
122 5 05
122 3 12
122 4 15
122 5 21
122 5 20
122 5 20

Archivo csv deseado ( 3 filas )

3,21
0,1,2,3,4,5,6,7,8,9,10,11,12,13,15,16,17,18,19,20,21,22,23
0,0,0,2,3,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,2,1,0,0

1 Respuesta

Respuesta
1

Te anexo la macro.

Pon la macro en un archivo de excel y guarda el archivo como excel habilitado para macros en la misma carpeta donde tienes tu archivo txt.

Cambia en la macro "reloj" por el nombre de tu archivo txt.

Sub Macro1()
'
' Por Dante Amor
'
    'Crear archivo csv usando un archivo texto
'
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    '
    Set l1 = ThisWorkbook
    ruta = l1.Path & "\"
    arch = "reloj"
    Workbooks.OpenText Filename:=ruta & arch & ".txt", _
        Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, _
        TextQualifier:=xlNone, ConsecutiveDelimiter:=True, _
        Tab:=True, Semicolon:=False, Comma:=False, Space:=True, Other:=False, _
        FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True
    Set l2 = ActiveWorkbook
    Set h2 = l2.Sheets(1)
    Set h3 = l2.Sheets.Add
    h3.Cells(1, "A").Value = WorksheetFunction.Min(h2.Columns("C"))
    h3.Cells(1, "B").Value = WorksheetFunction.Max(h2.Columns("C"))
    For i = 0 To 23
        h3.Cells(2, i + 1).Value = i
        h3.Cells(3, i + 1).Value = WorksheetFunction.CountIf(h2.Columns("C"), i)
    Next
    l2.SaveAs Filename:=ruta & arch & ".csv", FileFormat:=xlCSV, CreateBackup:=False
    l2.Close False
    MsgBox "Archivo CSV creado", vbInformation
End Sub


En realidad el resultado de tu archivo CSV será algo como esto:

3,21,,,,,,,,,,,,,,,,,,,,,,
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23
0,0,0,2,3,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,2,1,0,0

Si se guarda el archivo como CSV delimitado por comas, en la primera fila también te pondrá todas las comas de todas las columnas.


'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 

Hola Dante.

Muchas gracias por la macro funciona perfecto ya le e probado y funciona muy bien.

Por favor podrías adaptarla al siguiente ejemplo de texto.

La hora esta entre la column 75 y 76
El tiempo esta esta entre column 75 hasta la 80 ( datos para primera línea )

1 33433.00 50345.00 11 483913.3 2359413.7 146.9 85185028
1 33433.00 50357.00 11 484062.0 2359413.1 148.1 85185204
1 33433.00 50369.00 11 484211.8 2359411.6 148.2 85191824
1 33433.00 50381.00 11 484362.0 2359413.5 149.9 85192001
1 33433.00 50393.00 11 484512.0 2359412.1 145.6 85194442
1 33433.00 50405.00 11 484662.4 2359411.9 144.4 85194627
1 33433.00 50417.00 11 484812.8 2359412.6 142.2 85201109
1 33433.00 50429.00 11 484962.1 2359412.3 143.3 85201300
1 33433.00 50441.00 11 485112.9 2359413.3 142.8 85203723
1 33433.00 50453.00 11 485262.0 2359412.2 144.8 85203911
1 33433.00 50465.00 11 485412.5 2359413.1 143.9 85210428

el archivo csv quedaria asi

185020,210428
0,1,2,3,4,5,6,7,8,9,10,11,12,13,15,16,17,18,19,20,21,22,23
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,4,1,0,0

Saludos y gracias

No entiendo tu siguiente petición.

Con gusto te ayudo con todas tus peticiones. Valora esta respuesta. Al final de mi respuesta hay un botón para valorar: Votar o Excelente.

Y después crea una nueva pregunta y explicas con detalle lo que necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas