Excel - Macro para eliminar filas que contengan un valor específico en una celda

 
Vista:

Macro para eliminar filas que contengan un valor específico en una celda

Publicado por Héctor (1 intervención) el 01/08/2019 17:46:03
Tengo el siguiente archivo (adjunto) en el que intento borrar las filas de la hoja "TRÁNSITOS (LOIN_llenos)" cuyos valores de la columna (D= "Días en tránsito") sean menores a 1080...

Si le aplico lo siguiente:

1
2
3
4
5
6
7
8
For Contador1 = 2 To 100
    Sheets("TRÁNSITOS (LOIN_llenos)").Select
    If Sheets("TRÁNSITOS (LOIN_llenos)").Range("D" & (Contador1)) > 1080 Then
        Range("D" & (Contador1)).Select
        Selection.EntireRow.Select
        Selection.Delete Shift:=xlUp
    End If
Next


Al final de la ejecución de la macro, el no elimina todas las filas y deja algunas con valores mayores a 1080... no se si la cantidad de datos de la hoja influye en la efectividad de la macro, pero quisiera saber si a uds se les ocurre alguna macro distinta a la que elaboré para lograr el objetivo o si saben el motivo de que mi macro no elimine todas las filas que debería
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
Imágen de perfil de Hector Madriz
Val: 575
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para eliminar filas que contengan un valor específico en una celda

Publicado por Hector Madriz (137 intervenciones) el 01/08/2019 20:50:46
Buen dia, prueba esto:

1
2
3
4
5
6
7
8
9
10
11
12
Sub BorrarFilas()
    TotalFilas = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
    Cont = 1
    While TotalFilas >= Cont
          If IsNumeric(Cells(Cont, 1)) And Cells(Cont, 1) >= 1080 Then  'celda a comparar
             ActiveSheet.Cells(Cont, 1).Delete
             TotalFilas = TotalFilas - 1
          Else
             Cont = Cont + 1
          End If
    Wend
End Sub

Saludos
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 Hector Madriz
Val: 575
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para eliminar filas que contengan un valor específico en una celda

Publicado por Hector Madriz (137 intervenciones) el 01/08/2019 20:59:18
Buen dia, prueba esto:

1
2
3
4
5
6
7
8
9
10
11
12
Sub BorrarFilas()
    TotalFilas = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
    Cont = 1
    While TotalFilas >= Cont
          If IsNumeric(Cells(Cont, 1)) And Cells(Cont, 1) >= 1080 Then  'celda a comparar
             ActiveSheet.Cells(Cont, 1).Delete
             TotalFilas = TotalFilas - 1
          Else
             Cont = Cont + 1
          End If
    Wend
End Sub

Saludos
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 Dirk
Val: 455
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para eliminar filas que contengan un valor específico en una celda

Publicado por Dirk (166 intervenciones) el 01/08/2019 22:41:51
Hola Hector, a mi me borraba filas demás...... y así me funcionó

1
2
3
4
5
6
7
8
For contador1 = 2 To 10
    If IsNumeric(Cells(contador1, 4)) And Cells(contador1, 4) > 1080 Then
        Range("D" & (contador1)).Select
        Selection.EntireRow.Select
        Selection.Delete Shift:=xlUp
        contador1 = contador1 - 1
    End If
Next

Importante restar a la variable contador un valor, sino va a pasar por alto la fila que está a después de la que estás borrando

Salu2
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 Hector Madriz
Val: 575
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para eliminar filas que contengan un valor específico en una celda

Publicado por Hector Madriz (137 intervenciones) el 01/08/2019 23:12:55
Esta de mas seleccionar la celda y luego eliminarla; simplemente elimina de una vez (el objeto cuenta con el método delete)

Saludos
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 Dirk
Val: 455
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para eliminar filas que contengan un valor específico en una celda

Publicado por Dirk (166 intervenciones) el 02/08/2019 19:26:41
tienes razón... delete de una vez.... lo importante es decrementar el contador...

Salu2
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 Hector Madriz
Val: 575
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para eliminar filas que contengan un valor específico en una celda

Publicado por Hector Madriz (137 intervenciones) el 02/08/2019 19:59:08
Puedes mantener el flujo feliz del {FOR} haciéndolo decreciente y el código queda más óptimo.


1
2
3
4
5
Sub EliminarFilas()
   For Fila = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row To 2 Step -1 ' Desde la ultima fila hasta la fila 2
       If IsNumeric(Cells(Fila, 1)) And Cells(Fila, 1) > 1080 Then Cells(Fila, 1).EntireRow.Delete
   Next Fila
End Sub


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
Imágen de perfil de Dirk
Val: 455
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para eliminar filas que contengan un valor específico en una celda

Publicado por Dirk (166 intervenciones) el 02/08/2019 20:25:39
Asi mismo es..... 3 líneas de código... mejor IMPOSIBLE!!!!!!!

Salu2
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 Hector Madriz
Val: 575
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para eliminar filas que contengan un valor específico en una celda

Publicado por Hector Madriz (137 intervenciones) el 02/08/2019 01:23:18
1
2
3
4
5
6
7
8
Sub EliminarFila()
  For Cont = 2 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row   'Desde la la fila 2 hasta la ultima fila de la hoja
      If IsNumeric(Cells(Cont, 1)) And Cells(Cont, 1) > 1080 Then
         Cells(Cont, 1).EntireRow.Delete   'Elimina la fila
         Cont = Cont - 1
      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
1
Comentar