Encuéntranos en Google+.
Working Into Binary
Ingeniería electrónica, lenguajes de programación, software, simulación, noticias, ofimática, ERP,...

Cómo eliminar u ocultar en Excel las filas con un cierto valor en una de sus celdas con VBA

05 septiembre, 2012
Hoy me han preguntado sobre como automatizar la eliminación/ocultación de filas en Excel que tengan un cierto valor en una de sus celdas. La solución: Visual Basic. Me atrevería a decir que no hay casi nada imposible para VBA, solo nos limita nuestra capacidad de imaginación en el momento de idear una solución. Por eso, aprovecho esta entrada para recomendaros, al igual que he hecho con el compañero que me ha preguntado, su aprendizaje. Más adelante tengo pensado hacer un tutorial básico de VBA dentro del entorno de Excel.
Pero a lo que ibamos!
Tenemos una tabla como la siguiente:


La tabla corresponde a la tabla de Pedidos de la base de datos de ejemplo de Access llamada Northwind 2007. La podéis descargar desde este blog mismamente (buscar en el SideBar de la derecha) o desde el propio Access.

Queremos eliminar de todas las filas cuyo valor en la columna "Tipo de pago" sea "Cheque" o no contenga nada (la columna es la "O", que queda a la derecha de las columnas que muestra la imagen anterior). Lo que haremos será recorrer una a una las filas de la hoja y comprobar cual es el valor de la celda en la columna "O". Evaluaremos ese valor y realizaremos una acción u otra según el mismo.

Primeramente, diseñaremos un código que nos elimine las filas y, después, otro código que nos oculte las filas. Habrá una ligera diferencia entre ellas.

El código para eliminar las filas es el siguiente:

Sub Delete_Rows()

Dim Wb As Worksheet
Set Wb = Worksheets("Hoja1")

Dim i As Integer
i = 2

Do While Wb.Cells(i, 1) <> ""
  If Wb.Cells(i, 15) = "" Or Wb.Cells(i, 15) = "Cheque" Then
    Wb.Rows(i).EntireRow.Delete
  Else
    i = i + 1
  End If
Loop

MsgBox "Filas eliminadas con éxito!", vbOKOnly + vbInformation, "Tarea finalizada"

End Sub

Podría comentar el código, pero la experiencia me ha demostrado que hay gente que solo le interesa tener el código, adaptarselo y ya está, y luego está la gente que quiere entender el código (que son los que realmente acaban aprendiendo a programar en VBA). A ellos les recomiendo ejecutar el código paso a paso y ver qué hace. Intentar entenderlo facilitará mucho más el aprendizaje de VBA que el que os comente línea a línea todo el código. Buscar en Internet y en los archivos de ayuda de las correspondientes aplicaciones también facilita el aprendizaje del código. Finalmente, si algo no se entiende, no dudéis en dejar un comentario y gustosamente os lo explicaré.

Ahora, el código para esconder las filas:

Sub Hide_Rows()

Dim Wb As Worksheet
Set Wb = Worksheets("Hoja1")

Dim i As Integer
i = 2

Do While Wb.Cells(i, 1) <> ""
  If Wb.Cells(i, 15) = "" Or Wb.Cells(i, 15) = "Cheque" Then
    Wb.Rows(i).EntireRow.Hidden = True
  End If
  i = i + 1
Loop

MsgBox "Filas escondidas con éxito!", vbOKOnly + vbInformation, "Tarea finalizada"

End Sub


Y con estas pocas líneas de código podemos realizar nuestra tarea eficientemente.

(Acordaros que podéis descargaros la base de datos Northwind 2007 en el SideBar de la derecha de este blog. Utilizaré de ahora en adelante sus tablas y diferentes elementos para futuros ejemplos de Excel o Access.)

No hay comentarios:

Publicar un comentario