Una consulta por demas de frecuente.
Observemos la siguiente tabla y, al margen de deducir las pocas ganas de dibujar tablas que tengo, veamos que varios registros quedaron en blanco:
[+/-] Ver el resto / Ocultar
Observemos la siguiente tabla y, al margen de deducir las pocas ganas de dibujar tablas que tengo, veamos que varios registros quedaron en blanco:
[+/-] Ver el resto / Ocultar
La "receta" habitual nos dice que lógicamente debemos armar el siguiente esquema:
a) calculo cual es el ultimo registro de la tabla
b) me posiciono en la primer celda
c) comienzo a recorrer hacia abajo cada celda, SI está vacía la elimino
Si bien los ordenadores están especialmente diseñados para la ejecución de tareas repetitivas, podemos ver que esto implica mucho trabajo: en cada celda debo evaluar una condicion, si está vacía, y entonces eliminarla.
Por suerte Excel tiene una línea de comando muy poco conocida y extremadamente util: SpecialCells
o, simplemente, celdas especiales.
Con una sola linea de codigo puedo hacer que se borren todas las filas en blanco:
Sub BorrarFilasVacias()
Range("D1:D16").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
'aqui posiciono el cursor en la celda D1
Range("D1").Select
End Sub
Range("D1:D16").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
'aqui posiciono el cursor en la celda D1
Range("D1").Select
End Sub
Analicemos la instrucción: Range("D1:D16").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
En pocas palabras y a lo criollo, le digo: del rango D1:D16 seleccioname todas las celdas TypeBlanks (que están en blanco) y borrá la fila entera. La nueva tabla queda así:
.... y con una sola linea de código.
Continuemos exponiendo los distintos argumentos de SpecialCells:
*** SpecialCells(xlCellTypeVisible) 'para ubicar las celdas visibles.
*** SpecialCells(xlCellTypeComments) 'aquellas que poseen comentarios
***SpecialCells(xlCellTypeFormulas) 'las que tienen formulas
por citar algunos ejemplos. Entonces, si pongo:
Range("A1:Z100").SpecialCells(xlCellTypeFormulas).Clear
la macro me borrará todas las funciones que existan dentro del rango especificado.
para darme solamente el gusto, comparen el primer ejemplo de código con este, el tradicional:
Sub BorrarBlancas()
For x = 2 to 16
if(cells(x, 4).value = "" then
cells(x,4).entirerow.delete
x = x - 1
end if
range("d1").select
End Sub
No solamente ahorramos mucho código, si no que también le ahorramos trabajo al microprocesador.
- Obtener enlace
- Correo electrónico
- Otras aplicaciones
Etiquetas
Macros
Etiquetas:
Macros
- Obtener enlace
- Correo electrónico
- Otras aplicaciones
Comentarios
Publicar un comentario