Comparar Columnas para después Borrar Filas en un archivo Excel. (Macros)

Buenas tardes, es la primera vez que pido ayuda por esta página. Espero alguien pueda ayudarme.. :)

Estoy trabajando con una macro que me elimine filas, pero que antes de eliminar verifique que las celdas de la columna A y B de estén vacías. Si la celda de la columna A tiene información y la B no, no debe eliminarla y viceversa.. Solo donde las dos celdas estén vacías..

¿Alguien podría ayudarme con esto?. Tengo la idea, pero la verdad esto ciclada.. :S

1 Respuesta

Respuesta
1

Te dejo un ejemplo donde se elimina la fila activa si están vacías las celdas en A y B. Si te da algún error al agregar las instrucciones a tu macro deberás dejarla escrita aquí completa para revisar y ajustar.

Sub eliminaFilaActiva()
'x Elsamatilde
'trata de eliminar la fila activa
'si A y B están vacías elimina
If Range("A" & ActiveCell.Row) = "" And Range("B" & ActiveCell.Row) = "" Then
    ActiveCell.EntireRow.Delete
End If
End Sub

Si esto resuelve tu consulta no olvides valorarla y finalizarla.

Sdos

Elsa

Muchas gracias por responderme... :D 

La macro si me funciona, solo que me falta un ciclo o algo así para que me busque en las dos columnas hasta que ya haya información en la columna C.

Eso puede ser con un for each?. 

Espero no molestar mucho.. 

Puede ser algún tipo de bucle (while... wend, for...next,  for each... next, etc).

¿Lo qué no se comprende del todo es si el ciclo recorre col C hasta encontrar un dato? ¿Y en qué fila empieza?

PD) Ya valoraste y todavía necesitas algo más... por favor no olvides cambiar tu valoración entonces.

Sdos

Elsa

Te dejo una macro para que puedas avanzar... solo ajusta el inicio de la col C que asumí en fila 2.

El proceso recorre col C finalizando cuando encuentre un valor allí.

Sub eliminaFilaActiva()
'x Elsamatilde
'recorre col C hasta encontrar un dato
'si A y B están vacías elimina la fila
'se empieza en C2
Range("C2").Select
While ActiveCell = ""
If Range("A" & ActiveCell.Row) = "" And Range("B" & ActiveCell.Row) = "" Then
    'si están vacías A y B se elimina la fila
    ActiveCell.EntireRow.Delete
Else
    'sino se pasa a la fila sgte repitiendo el bucle
    ActiveCell.Offset(1, 0).Select
End If
Wend
End Sub

Si esto responde a tu consulta, no olvides cambiar la valoración.

Sdos

Elsa

¿La valoración la hago hasta que mi duda quede completamente resuelta?.

El ciclo se detiene cuando no encuentra valor en la columna C.

Cuando ya no encuentra valores, significa que ya no tengo más datos en ninguna celda, entonces ahí para.

El ciclo se detiene cuando 'encuentra' un valor en C, considerando tu petición que da a entender de que en algún momento habrá información allí.

'... Que me busque en las dos columnas hasta que ya haya información en la columna C...'

Por eso el bucle recorre la col C mientras la celda C esté vacía (While ActiveCell = "")

Si no es esto lo que quisiste solicitar debiera subir una imagen de tu hoja o enviarmela al correo que aparece en mi sitio.

Sdos!

Este es mi archivo....cuando llegue al ultimo valor de la columna c dejara de buscar si hay información en A y B. Si me equivoque en mi explicación, Era hasta que ya NO haya información en C. La información de la columna C cuando no hay nada A y B no me importa. 

While ActiveCell <> ""

En ese caso la lìnea del While debe quedar con el signo <> para que recorra 'mientras' la celda no sea vacìa.

Sdos !

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas