Excel - MACRO COPIAR Y FILTRAR DATOS

 
Vista:
sin imagen de perfil
Val: 21
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

MACRO COPIAR Y FILTRAR DATOS

Publicado por Ana (27 intervenciones) el 05/03/2020 10:46:12
Buenos días,
Tengo que hacer un programa para controlar las herramientas en mi empresa. Los datos parten de un archivo ini y a partir de ahí tengo que filtrarlas.
Van a ser muchos datos y mi primera pregunta es si lo haríais en excel o access.
Después querría una macro que me copiara los datos de ese archivo ini (adjunto uno de prueba "PARA MODIFICAR") a mi excel (CAMBIO DE HTAS), por el momento lo tengo en excel. Esta macro tiene que copiar en la siguiente celda vacía, es decir, yo voy a pasar los datos al excel pero la acción de pasar los datos va a ser continua por lo que quiero que vaya acumulando datos. Todos estos datos se copian en la pestaña DATOS.
Después tengo que filtrarlos , y aquí empieza a complicarse me. Todos estos datos tienen la misma estructura son grupos de 67 filas (magazine .... a C1_H_Standard=0) y yo necesito extraer el nº de PTN y FTN , en mi excel lo he hecho en la pestaña SEPARACIÓN, pero hacerlo así es imposible porque he puesto a mano las formulas .
Una vez que tengo los datos filtrados , lo que necesito es que me copie solo aquellos grupos de datos (67 filas) que cumplan alguna de estas 2 condiciones : que PTN y/o FTN sean diferentes de 0, es decir , que tengan numero. Esto lo he hecho en las pestaña PTN FTN CON DATOS.
Adjunto el excel y el archivo ini para que se vea mucho mejor.
Muchas gracias de ante mano.
Ana
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 Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

MACRO COPIAR Y FILTRAR DATOS

Publicado por Antoni Masana (2481 intervenciones) el 05/03/2020 19:34:36
Te adjunto un libro con una macro.

La pregunta es ¿No explotarías mejor los datos exportados en este formato?

Saludos.
\\//_
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
sin imagen de perfil
Val: 21
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

MACRO COPIAR Y FILTRAR DATOS

Publicado por Ana (27 intervenciones) el 06/03/2020 09:57:26
Hola,
Primero muchas gracias por contestar.
La macro que me mandas es lo que necesitaba pero hay una cosa que no sale y si que lo necesito, cuando ejecuto la macro me copia los datos pero también me borra los anteriores. En la tabla excel la ultima fila es la 76,lo que necesitaría es que cuando vuelva a importar los datos me copie en la siguiente fila vacía, en este caso la 77 y así sucesivamente.
Muchísimas gracias.
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
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

MACRO COPIAR Y FILTRAR DATOS

Publicado por Antoni Masana (2481 intervenciones) el 06/03/2020 14:23:16
Esta modificada para empezar en una hoja vacía y poner cabecera la primera vez.

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Sub Importar()
    Dim Maga(75) As String, n_Maga As Integer, Pos As Integer, _
        Cabe(67) As String, n_Cabe As Integer, _
        Datos(75, 67) As String, n_Datos As Integer, Reg As String
 
    Dim a As Integer, b As Integer, Texto As String, Valor As String, _
        Fila As Long
 
    ' ---&--- Lee los datos
 
    Open "C:\Tmp\HTAS-ROBERTO\PARA MODIFICAR.txt" For Input As #1
    While Not EOF(1)
        Line Input #1, Reg
 
        If Left(Reg, 1) = "[" Then
            Texto = Mid$(Reg, 2, Len(Reg) - 2)
            n_Maga = n_Maga + 1
            Maga(n_Maga) = Texto
        Else
            Texto = Mid(Reg, 1, InStr(Reg, "=") - 1)
            Valor = Mid(Reg, InStr(Reg, "=") + 1)
            Pos = 0
            For a = 1 To n_Cabe
                If Texto = Cabe(a) Then Pos = a: Exit For
            Next
            If Pos = 0 Then
               n_Cabe = n_Cabe + 1: Pos = n_Cabe
            End If
 
            Cabe(Pos) = Texto
            Datos(n_Maga, Pos) = Valor
        End If
    Wend
    Close #1
 
    ' ----&---- Busca donde debe ponerlos
 
    Fila = 1
    While Cells(Fila, "A") <> ""
        Fila = Fila + 1
    Wend
 
    ' ---&--- Si la hoja esta vacia pone la cabecera
 
    If Fila = 1 Then
        Cells(1, 1) = "Magazine"
        For a = 1 To n_Cabe
            Cells(1, a + 1) = Cabe(a)
        Next
        Fila = 2
        Range("A1:BO1").Select
        With Selection.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .Color = 65535
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
        Selection.Font.Bold = True
    End If
 
    ' ---&--- Rellena la hoja con los datos
 
    For a = 1 To n_Maga
        Cells(Fila, 1) = Maga(a)
        For b = 1 To n_Cabe
            Cells(Fila, b + 1) = Datos(a, b)
        Next
        Fila = Fila + 1
    Next
End Sub

Saludos.
\\//
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