Eliminar filas a partir de una condición

Algún experto me podría ayudar por favor.
Quiero eliminar todo lo que hay hacia arriba desde la palabra hola y todo lo que hay hacia abajo desde la palabra chao. Es como lo del siguiente ejemplo:
343435
FGDFGDF
DFDFGFD
HOLA
HOLA
HOLA
123456789
2345667
435454
64565645
45645645
4545666
CHAO
CHAO
CHAO
CHAO
3453
SDFDF
3445
FDFF
Deseo eliminar todas las filas que están sobre la palabra HOLA (incluyendo la palabra hola, porque puede aparecer hacia arriba más de una vez) y también eliminar todas las filas que están bajo la palabra CHAO (incluyendo la palabra chao porque igual puede estar más de una vez)
Si lo aplico al ejemplo que te doy solo me debería quedar en la planilla esto:
123456789
2345667
435454
64565645
45645645
4545666
Necesito realizar esto con macro,ya que en un archivo la palabra hola puede estar en la celda A40 por ejemplo, en otro en la A66, en otro en la A100, y así, no es definido, lo mismo pasa cuando aparece la palabra chao.

1 Respuesta

Respuesta
1
Estuve revisando tu pregunta y te dejo el código que funciona. Quedo pendiente de tu éxito.
Saludos
No olvides finalizar y puntuar la pregunta
********
Sub EliminarPorCriterio()
''Creada por FSerrano en 120118 para (xxxxxx) en TodoExpertos.com
'' Conserva los registros encontrados EN LA COLUMNA ACTUAL entre los puntos especificados, eliminando todos los demás registros de la columna actual
'Captura los criterios que determinan el rango a eliminar
A = InputBox("Que valor determina el inicio de la eliminación?", "COMIENZO", "HOLA")
B = InputBox("Qué valor determina el fin de la eliminación?", "FIN", "CHAO")
'Determina si la primera fila esta vacia, en caso contrario inserta una fila
If Cells(1, ActiveCell.Column) <> "" Then
Cells(1, ActiveCell.Column).Cells.Insert (xlDown)
End If
'Aplica los filtros para determinar las filas que limitan el rango a preservar
ActiveSheet.Range(Cells.Address).AutoFilter FIELD:=ActiveCell.Column, Criteria1:="=" & A, Operator:=xlFilterValues
A = ActiveCell.SpecialCells(xlLastCell).Row
ActiveSheet.Range(Cells.Address).AutoFilter FIELD:=ActiveCell.Column, Criteria1:="=" & B, Operator:=xlFilterValues
Cells(ActiveCell.SpecialCells(xlCellTypeLastCell).Row, ActiveCell.Column).Select
B = Selection.End(xlUp).Row
'Quita el filtro
Cells.AutoFilter
'Elimina los registros que no se encuentran dentro del rango a preservar
Range(Cells(1, ActiveCell. Column).Address(False, False) & ":" & Cells(A, ActiveCell. Column).Address(False, False) & "," & Cells(B, ActiveCell. Column).Address(False, False) & ":" & Cells(ActiveCell. SpecialCells(xlLastCell). Row, ActiveCell. Column). Address(False, False)).Delete (xlUp)
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas