Macro para eliminar datos de una columna que no figuran como condicional

Tengo la siguiente macro donde obtengo datos de un archivo Excel para después guardar su información de precios depende de la locación

De la siguiente imagen deben crearse archivos excel según los nombres de la columna C a partir del 352 hasta ECUA, pero hay veces que se agregan otros valores como por ejemplo:

Y otros valores.

Consulta: Cómo puedo evitar que estos datos se sigan adicionando?.

Yo he intentado con esto, ósea eliminar el dato cada vez que salga error, pero necesito una macro para controlar que evite estos datos y sólo respete los datos condicionales de la imagen 1:

fila1 = contador("A")
Rows("1:1").Select
Selection.Copy
Rows("2:2").Select
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False
Selection.AutoFilter
'Range("J1").Select
ActiveSheet.Range("$A$2:$A" & cont1 + 1).AutoFilter Field:=1, Criteria1:="NR"
Rows("2:2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp

Function contador(columna)

Range(columna & "1").Select
Range(Selection, Selection.End(xlDown)).Select
contador = Selection.Count

End Function

Respuesta
1

Resolví el asunto que tenía pero si alguien puede mejorarla sería genial.

Public Sub ELIMINAR_NO_CONDICIONAL()
Dim i, j As Integer

u = Range("A" & Rows.Count).End(xlUp).Row

For i = 2 To u
If Hoja1.Cells(i, 1) = "352" Or Hoja1.Cells(i, 1) = "BOLI" Or Hoja1.Cells(i, 1) = "ARGE" Or Hoja1.Cells(i, 1) = "ECUA" Or Hoja1.Cells(i, 1) = "CILE" Or Hoja1.Cells(i, 1) = "COLO" Then
'MsgBox (Hoja1.Cells(i, 1).Text & ": True")
Else
'MsgBox (Hoja1.Cells(i, 1).Text & ": Falso")
Hoja1.Cells(i, 1).EntireRow.Delete
End If
Next

End Sub

2 respuestas más de otros expertos

Respuesta
1

[Hola 

En la hoja1 están tus datos en la fila 2 y tus datos que no se eliminaran pon en la hoja2 en la columna A.


Valora la respuesta para finalizar saludos!

Sub eliminar()
    'Por Adriel Ortiz
    '
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    '
    u1 = h1.Range("A" & Rows.Count).End(xlUp).Row
    '
    For i = u1 To 2 Step -1
        Set b = h2.Columns("A").Find(h1.Cells(i, "A"), lookat:=xlWhole)
        If b Is Nothing Then
            h1.Rows(i).Delete
        End If
    Next
    MsgBox "Datos eliminados"
End Sub
Respuesta
1

Por si alguien le sirve paso unos ejemplos

https://youtu.be/CCEaj0qIXzE

https://youtu.be/M3C5AyDMLOY

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas