Excel - MACRO ELIMINAR FILAS QUE CONTENGAN LAS PABLABRAS "a determinar"

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

MACRO ELIMINAR FILAS QUE CONTENGAN LAS PABLABRAS "a determinar"

Publicado por Quico (106 intervenciones) el 23/02/2019 09:56:44
Tengo un excel con una macro para IMPORTAR un CSV.
Este CSV puede contener una gran cantidad de datos.
Me interesa descartar durante el proceso de IMPORTACIÓN una serie de filas que contengan unas palabras determinadas.

Lo que hago es:
1. Importar con la macro, el CSV a la página CSV
2. Aplicar una condición para eliminar todas las entradas en la 'Columna D' que tengan las palabras: [Vx], [Ix] y Folder.

He aplicado esto, pero borra indiscriminadamente las filas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sheets("CSV").Select
For i = 1 To 500
    If Range("D" & i).Value = [Vx] Then
        Rows(i & ":" & i).Select
        Selection.Delete Shift:=xlUp
    End If
    If Range("D" & i).Value = [Ix] Then
        Rows(i & ":" & i).Select
        Selection.Delete Shift:=xlUp
    End If
    If Range("D" & i).Value = "*Folder*" Then
        Rows(i & ":" & i).Select
        Selection.Delete Shift:=xlUp
    End If
Next i

¿Alguien podría decirme cual es la mejor manera?

Adjunto un excel con mi macro!
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
sin imagen de perfil
Val: 179
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

MACRO ELIMINAR FILAS QUE CONTENGAN LAS PABLABRAS "a determinar"

Publicado por Quico (106 intervenciones) el 24/02/2019 09:10:05
He añadido una parte, que curiosamente SI FUNCIONA si lo hago como una macro independiente consu botón.
Pero no consigo introducirlo dentro del flujo de:
1. Importa el CSV la página CSV
2. Todas la celdas que contenngas las palabras que le indique, elimina la fila.



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
Sub Importar_CSV_EliminandoPalabras()
 
'Definir objetos a utilizar
Dim RutaArchivo As String 'ruta donde busca el archivo
Dim wsDestino As String
 
 
'Definimos con 'wsDestino' la hoja llamada CSV
Set ws = Worksheets("CSV")
 
'Controlamos algun posible error.
On Error Resume Next
 
'Forzamos para que solo abra ficheros CSV con un cuadro de dialogo
RutaArchivo = Application.GetOpenFilename(Title:="Busca y selecciona el archivo CSV a importar:", _
                            filefilter:="Text Files (*.csv),*.csv")
 
 
'Forzamos que el CSV se abra en la pestaña CSV
    With ws.QueryTables.Add(Connection:="TEXT;" & RutaArchivo, Destination:=ws.Range("$A$1"))
 
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
 
  'Aqui es la parte de ELIMINAR FILAS con ciertas palabras que no hace al importar el CSV.
      With Worksheets("CSV")
      Range("D1").Select
 
        Do While Not IsEmpty(ActiveCell)
            If ActiveCell.Value Like "*Folder*" _
            Or ActiveCell.Value Like "*[Vx]*" _
            Or ActiveCell.Value Like "*[Ix]*" Then
                Selection.EntireRow.Delete
            Else
                ActiveCell.Offset(1, 0).Select
            End If
        Loop
 
  End With
 
End Sub
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 ELIMINAR FILAS QUE CONTENGAN LAS PABLABRAS "a determinar"

Publicado por Antoni Masana (2478 intervenciones) el 24/02/2019 19:24:42
Tienes que empezar a borrar por abajo e ir subiendo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sheets("CSV").Select
For i = 500 To 1 Step -1
    If Range("D" & i).Value = [Vx] Then
        Rows(i & ":" & i).Select
        Selection.Delete Shift:=xlUp
    End If
    If Range("D" & i).Value = [Ix] Then
        Rows(i & ":" & i).Select
        Selection.Delete Shift:=xlUp
    End If
    If Range("D" & i).Value = "*Folder*" Then
        Rows(i & ":" & i).Select
        Selection.Delete Shift:=xlUp
    End If
Next i


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

MACRO ELIMINAR FILAS QUE CONTENGAN LAS PABLABRAS "a determinar"

Publicado por Quico (106 intervenciones) el 24/02/2019 20:32:05
Hola Antoni.

He probado tu propuesta de empezar de abajo a arriba, pero la verdad es que no funciona.
Borra absolutamente todas las entradas importadas del CSV.
He probado a poner las palabras [Vx] de esta 2 formas: "[Vx]" o "*Vx*" pero no funciona nada de nada.
:-(
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 ELIMINAR FILAS QUE CONTENGAN LAS PABLABRAS "a determinar"

Publicado por Antoni Masana (2478 intervenciones) el 25/02/2019 10:23:13
Ahora si que funciona:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Importar_CSV_EliminandoPalabras()
    ...
    Sheets("CSV").Select
    For i = 500 To 1 Step -1
        If Range("D" & i).Value Like "*[Vx]*" Then
            Rows(i & ":" & i).Select
            Selection.Delete Shift:=xlUp
        End If
 
        If Range("D" & i).Value Like "*[Ix]*" Then
            Rows(i & ":" & i).Select
            Selection.Delete Shift:=xlUp
        End If
 
        If Range("D" & i).Value Like "*Folder*" Then
            Rows(i & ":" & i).Select
            Selection.Delete Shift:=xlUp
        End If
    Next i
Exit Sub

Otra forma de hacerlo es:

1
IF InStr(Range("D" & i).Value, "Folder") > 0 Then

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

MACRO ELIMINAR FILAS QUE CONTENGAN LAS PABLABRAS "a determinar"

Publicado por Quico (106 intervenciones) el 25/02/2019 19:34:07
Pues si! Ahora lo hace bien.

Y por lo que veo, era solo un problema de sintaxis y poner el 'LIKE'
Value Like "*[Ix]*" Then

Genial.
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