Como puedo Filtrar o quitar las celdas vacías y con fechas en una macro?

Hola Expertos Tengo la siguiente Tabla y quisiera Filtrar con una Macro en VBA unos datos y que solo me muestre el código y la descripción del Cliente que están en la columna D y E, el numero o la cantidad de clientes siempre es Distinta, entonces quiero quitar las Fechas y las Celdas Vacías, ojalá y me puedan ayudar.

2

2 Respuestas

181.200 pts. Si de mis mayores gustos, mis disgustos han nacido,...

Prueba con esta macro asi queda al correrla

Sub MOSTRAR_CLIENTES()
Set DATOS = Range("D:D").CurrentRegion
With DATOS
    COL = .Columns.Count: FILAS = .Rows.Count
    Set CLIENTES = .Columns(COL + 4).Resize(FILAS, 2)
End With
With CLIENTES
    .Value = DATOS.Columns(1).Resize(FILAS, 2).Value
    .Sort KEY1:=Range(.Columns(1).Address), ORDER1:=xlAscending
    Set CLIENTES = .CurrentRegion
    COL = .Columns.Count: FILAS = .Rows.Count
    For I = 1 To FILAS
        If IsDate(.Cells(I, 2)) = True Then .Rows(I).Clear
    Next I
End With

¡Gracias por tu ayuda¡¡¡ si me sirve pero parcialmente, se me olvido indicar que también quería que me desplegara el total por cada Cliente, Saludos

41.375 pts. La verdadera sabiduría está en saber que nunca terminas...

Rafael Ramos,

Adjunto en enlace archivo excel con el desarrollo de tu consulta para su revisión. Se te ha proporcionado 2 posibles soluciones:

1. Por medio de filtro y su ordenamiento descendente en la segunda columna. Previamente se agregó una columna para asignar el número de registro correlativamente y una fila para incluir las cabeceras en cada columna. Se insertó filtro en la tabla y se paso a ordenar la segunda columna.

2. Por medio del desarrollo de una macro que permita extraer los datos de las dos primeras columnas según los criterios indicados.

Sub DepurarTabla()
Set Rango = Range("D1").CurrentRegion
x = 1
For i = 1 To Rango.Rows.Count
    If Not (IsDate(Rango.Cells(i, 2)) Or IsEmpty(Rango.Cells(i, 2))) Then
        Cells(x, 15) = Rango.Cells(i, 1)
        Cells(x, 16) = Rango.Cells(i, 2)
        x = x + 1
    End If
Next i
End Sub

Espero que te sirva de ayuda y este acorde a tu necesidad. Cualquier consulta estaré pendiente.

Macro depurar tabla quitar celdas vacías y fechas

Ander GS.

Hola Ander, Use el método 2, con la Macro y creo que es el que más me sirve, solo que se me paso poner un detalle, también tenia que desplegar el total del cliente. Por cierto esta muy sencilla y efectiva tu macro, te agradecería mucho tu ayuda, Saludos

Rafa Ramos,

Adjunto código con las modificaciones según lo requerido para su revisión. Este código esta basado en el archivo excel que se te brindo como ejemplo.

Sub DepurarTabla()
Set Rango = Range("D1").CurrentRegion
x = 1
For i = 1 To Rango.Rows.Count
    If Not (IsDate(Rango.Cells(i, 2)) Or IsEmpty(Rango.Cells(i, 2))) Then
        Cells(x, 15) = Rango.Cells(i, 1)
        Cells(x, 16) = Rango.Cells(i, 2)
        x = x + 1
    End If
    If Rango.Cells(i, 3) = "TOTAL CLIENTE" Then
        Cells(x - 1, 17) = Rango.Cells(i, 7)
    End If
Next i
End Sub

Espero que ya este acorde a tu necesidad. Cualquier consulta estaré atento.

Por favor, no olvidar de valorar las respuestas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas