Macro para eliminar filas que contengan ciertas palabras

Estoy buscando la forma de poder eliminar todas las filas de un libro excel que contenga estas palabras:

Adobe, Apple, Goji

Normalmente lo hago con Ctrl B busco la palabra y luego selecciono y elimino todas las filas pero lo hago de forma manual y palabra por palabra

Quisiera saber si alguno conoce alguna forma de automatizar este proceso con los macros de excel.

Respuesta

[Hola

¿Son palabras sueltas o parte de frases más largas? ¿Todo ubicado en celdas de una sola columna o de varias?

Abraham Valencia

Hola! gracias por tu respuesta, son palabras sueltas y se encuentran de la comuna A a la D 

Muchas gracias por tu respuesta! 

[Hola nuevamente

Prueba así:

Sub Borrarvalores()
Dim Valor$, filasd$, mCelda$, cadena$
Dim CeldaEncontrada As Range
Let Valor = "Adobe"
With Range("A1:D10000")
    Set CeldaEncontrada = .Find(Valor)
    If Not CeldaEncontrada Is Nothing Then
        Let mCelda = CeldaEncontrada.Address
        Do
            Set CeldaEncontrada = .FindNext(CeldaEncontrada)
            Let cadena = cadena & "," & CeldaEncontrada.Address
        Loop While Not CeldaEncontrada Is Nothing And CeldaEncontrada.Address <> mCelda
    End If
End With
filasd = Replace(cadena, ",", "", 1, 1)
Range(filasd).EntireRow.Delete
End Sub

Solo ajusta el rango al tuyo. Comentas.

Abraham Valencia

Hola! me funciono muy bien, solo tengo una pregunta, tengo que crear un macro para cada palabra? Trate de agregar las otras dos palabras entre comillas al lado del adobe pero me dio error, muchas gracias Abraham por tu ayuda! 

Hazlo así:

Sub Borrarvalores()
Dim Valor$, filasd$, mCelda$, cadena$
Dim CeldaEncontrada As Range
Dim Valores(1 To 3) As String
Dim x As Integer
Valores(1) = "Adobe": Valores(2) = "Apple" : Valores(3) = "Goji"
For x = LBound(Valores) To UBound(Valores)
    With Range("A1:D1000")
        Set CeldaEncontrada = .Find(Valores(x))
        If Not CeldaEncontrada Is Nothing Then
            Let mCelda = CeldaEncontrada.Address
            Do
                Set CeldaEncontrada = .FindNext(CeldaEncontrada)
                Let cadena = cadena & "," & CeldaEncontrada.Address
            Loop While Not CeldaEncontrada Is Nothing And CeldaEncontrada.Address <> mCelda
        End If
    End With
    filasd = Replace(cadena, ",", "", 1, 1)
    Range(filasd).EntireRow.Delete
Next x
End Sub

Comentas

Abraham Valencia

Gracias, mira que lo intenté y me apareció este cuadro, cuando le di depurar me subrayo la parte que dice 

Range(filasd).EntireRow.Delete

Reemplaza toda la parte correspondiente y comentas:

 End With
    filasd = Replace(cadena, ",", "", 1, 1)
    If filasd <> "" Then
        Range(filasd).EntireRow.Delete
    Else
        MsgBox "No hay datos con: " & Valores(x)
    End If
Next x

Abraham Valencia

Hola Abraham! muchas gracias en serio por toda tu ayuda te comento que ya me sirvió lo único es que solo me sirve una vez, es decir, tengo la macro asociada a un botón, cuando lo oprimo por primera vez me funciona correctamente, pero al oprimirlo una segunda vez me da este error y me vuelve a subrayar esta parte cuando le doy depurar 

Range(filasd).EntireRow.Delete   

[Hola nuevamente

¿Agregaste las nuevas líneas que te indiqué? De ser sí la respuesta, coloca tu archivo en algún "drive" (con al menos parte de los datos "originales") y comparte por aquí el enlace. De ser no, solo agrégalas y verás.

Abraham Valencia

PD: OJO, no olvides que el los valores de esto: Valores(1 To 3), deben ser estrictamente iguales a la cantidad de "valores" a los que le das algún dato: Valores(1) = "Adobe": Valores(2) = "Apple" : Valores(3) = "Goji"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas