Excel - Eliminación de Filas

 
Vista:

Eliminación de Filas

Publicado por CrisLiz (1 intervención) el 06/06/2016 21:22:35
Hola,
Tengo una consulta respecto al comando que anoto más abajo. Quisiera saber cómo a partir de la celda que esté inmediatamente después de “País 1” elimine todas las filas y se detenga hasta encontrar “País 2". Hay que tener en cuenta que no para todos los libros se va a tener el mismo orden en la columna en la que se encuentran los nombres y no debe ser modificado, es por ello que excel debe detectar el contenido de las celdas y eliminar todo lo que esté entre ella.
He estado utilizando el comando InStr y OffSet para encontrar la coincidencia de texto y eliminar la fila que se encuentra inmediatamente abajo de ella y me funciona bien, el problema es que sólo lo hace en una fila y necesito que lo haga hasta encontrar la celda "País 2". También intenté con Do...Loop pero no pude estructurarlo de manera adecuada. Ojalá alguien pudiera ayudarme.
Los comandos que he utilizado son:

1
2
3
4
5
6
7
8
9
Sub test()
Dim Celda As Object
Dim rng As Range
Set rng = [b8:b37]
For Each Celda In rng
valor = Celda.Value
If InStr(1, valor, "País 1", vbTextCompare) Then Celda.Offset(1, 0).EntireRow.Delete
Next Celda
End Sub
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

Eliminación de Filas

Publicado por JuanC (1237 intervenciones) el 06/06/2016 22:15:51
una posibilidad, sin tener del todo claro el problema a resolver...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub test()
Dim Celda As Range
Dim rng As Range, ini&, fin&, bin As Boolean
 
Set rng = Range("b8:b37")
bin = False
For Each Celda In rng
    If VBA.InStr(1, Celda.Value, "País 1", vbTextCompare) > 0 Then
       bin = True
       ini = Celda.Row + 1
    ElseIf VBA.InStr(1, Celda.Value, "País 2", vbTextCompare) > 0 Then
           If bin Then
              bin = False
              fin = Celda.Row - 1
              Rows(ini & ":" & fin).Delete
              Exit For '¿salir o continuar?
           End If
    End If
Next
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
sin imagen de perfil

Eliminación de Filas

Publicado por juan pablo (62 intervenciones) el 14/06/2016 13:32:07
yo usaria la siguiente rutina

1
2
3
4
5
6
7
8
9
10
11
12
13
Sub depurar()
While ActiveCell.Offset <> ""
  If InStr(1, ActiveCell.Value, "País 1", vbTextCompare) > 0 Then
  ActiveCell.Offset(1, 0).Select
  End If
  If InStr(1, ActiveCell.Value, "País 2", vbTextCompare) > 0 Then
  ActiveCell.Offset(1, 0).Select
  Exit Sub
  Else
    ActiveCell.EntireRow.Delete
  End If
Wend
End Sub
el único problema que encuentro son los acentos

slds

JPP
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