Explicación de la macro Eliminar Filas en excel vba

H o l a: Dante Buen día.

Necesito que me explique algunas líneas que no logro entender.

Por ejemplo las comparaciones para lograr eliminar la fila, la aplicación del FOR.. NEXT que indica de "i=u" que es la ultima fila, hasta "To 1" y descuente -1 y los cambios en la asignación de variables.

Estaré agradecido por su valioso tiempo saludos!

Sub EliminarFilas()
'Por.Dante Amor
    u = Range("A" & Rows.Count).End(xlUp).Row
    ant = Cells(u, "A")
    j = u
    n = 0
    For i = u To 1 Step -1
        If ant <> Cells(i, "A") Then
            If valor <> "" And n > 1 Then
                Rows(j & ":" & i + 1).Delete
            End If
            j = i
            n = 0
        End If
        n = n + 1
        ant = Cells(i, "A")
        valor = Cells(i, "B")
    Next
    '
    'Revisar columna F
    u = Range("A" & Rows.Count).End(xlUp).Row
    For i = u To 1 Step -1
        If Cells(i, "F") = "" Then
            Rows(i).Delete
        End If
    Next
    MsgBox "fin"
End Sub

1 Respuesta

Respuesta
1

Te regreso la macro con los comentarios

Sub EliminarFilas()
'Por.Dante Amor
    u = Range("A" & Rows.Count).End(xlUp).Row
    ant = Cells(u, "A")
    j = u
    n = 0
    'El ciclo va desde la última fila hasta la fila 1
 'con el Step -1 se va decrementando de uno en uno
    'La idea de empezar de la última fila hasta la 1
 'es poder eliminar las filas sin afectar el contador
 'es decir, la verificación se realiza de las líneas
 'y cuando se cumple la condición se eleminan las filas revisadas.
    For i = u To 1 Step -1
        'la variable ant contien el valor de la fila anterior
 'is comparada con la nueva fila
 'por ejemplo se compara la fila 3 con la fila2
        If ant <> Cells(i, "A") Then
            'si el valor de la fila anterior es diferente a la fila actual
            'y si el valor de la columna B es diferente de blanco
            'y el contador n es mayor a 1
            'entonces se borran las filas desde la j hasta la i + 1
            'hay que tomar en cuenta que j corresponde a una fila de abajo
            'i contiene la fila actual, por eso se borra desde j hasta la fila actual + 1
            If valor <> "" And n > 1 Then
                Rows(j & ":" & i + 1).Delete
            End If
            'ahora j toma el valor de la fila actual
            j = i
            'el contador regresa a 0
            n = 0
        End If
        'se incrementa el contador n
        n = n + 1
        'se actualiza la variable anterior con la fila actual
        ant = Cells(i, "A")
        'y valor toma el dato de la columna B
        valor = Cells(i, "B")
    Next
    '
    'Revisar columna F
    u = Range("A" & Rows.Count).End(xlUp).Row
    For i = u To 1 Step -1
        If Cells(i, "F") = "" Then
            Rows(i).Delete
        End If
    Next
    MsgBox "fin"
End Sub
'S aludos. Dante Amor
Rows(j & ":" & i + 1).Delete

Dante, en esta parte entendí que eliminará la fila anterior hasta la fila actual.

¿Para obtener la fila actual le agrego más uno?

La fila actual está en i, se le agrega +1 para que no borre la fila actual, ya que la fila actual pertenece a otro grupo que todavía no ha sido validado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas