Inicio > Microsoft Excel > elsamatilde > OCULTAR FILAS VACIAS

OCULTAR FILAS VACIAS

Experto:
Usuario:
Fecha: 07/05/2008
Valoración: (5,00 sobre 5) Categoría: Microsoft Excel
02/05/2008
xjaci, usuario preguntando en Microsoft Excel
Usuario
Hola, lo que nesecito es poder ocultar un numero determinado de filas vacias, como por ejemplo 30, de la hoja llamada 1 a la hoja llamada 13.
El criterio para ocultar las 30 filas vacias seria de las ultimas, ya que son las que menos utilizo, y preferentemente de abajo hacia arriba.
Esto es para que si una de las 30 filas no esta vacia, no oculte 29, porque lo que nesecito en realidad es que oculte "LAS 30 ULTIMAS FILAS VACIAS"
Tengo mi archivo por el cual estoy consultando en: http://www.subir-archivos.com.ar/
con el nombre de: -AA PEDIDOS PUEBLOS pero no esta la macro en el archivo.
Yo cuento con esta:
Sub OcultarFilas()
Dim r As Range
Application.ScreenUpdating = False 'volverla a True al finalizar la macro
For Each r In Range("C3:C80")
If r.Value = "" And r.Offset(0, 1) = "" And r.Offset(0, 2) = "" And _
r.Offset(0, 3) = "" And r.Offset(0, 4) = "" And r.Offset(0, 5) = "" And _
r.Offset(0, 6) = "" And r.Offset(0, 8) = "" And r.Offset(0, 9) = "" And _
r.Offset(0, 10) = "" And r.Offset(0, 11) = "" Then
r.EntireRow.Hidden = True
Else
r.EntireRow.Hidden = False
End If
Next
End Sub
Pero esta macro con el rango que tiene oculta todas las vacias y yo lo que nesecito es que oculte las 30 ultimas vacias, si pongo el rango (c49:c80) y una de ellas no esta vacia, supongamos una , oculta 29 filas y no 30. ¿Me podrias ayudar?
Desde ya muchas gracias.
A la espera de una pronta respuesta, le saludo atte. Jacinto.
04/05/2008
xjaci, experto respondiendo en Microsoft Excel
Experto
Hola:
Viendo tu ejemplo, comprobé que todas tienen fórmulas hasta la fila 83, entonces no será necesario buscar la última fila, solo colocá ese valor en la variable (fila).
Sub ocultaRango()
'macro desarrollada por Elsamatilde el 2/05/08
conta = 1
'se posiciona en la primer hoja a evaluar repitiendo el bucle hasta la hoja 13
Sheets("1").Select
While conta <= 13
'se guarda la última celda con fórmula o dato
fila = Range("B65536").End(xlUp).Row    ' o fila = 83
'seleccionar rango
Range(Cells(fila, 2), Cells(fila - 30, 13)).Select
Set rgo = Selection
For Each celdita In rgo
If celdita.Value <> "" Then
MsgBox "no hay 30 vacías - no se elimina el rango"
Exit Sub
End If
Next celdita
'se oculta el rango
Selection.EntireRow.Hidden = True
conta = conta + 1
ActiveSheet.Next.Select
Wend
End Sub

Esto solo funcionará si las 13 hojas se encuentran continuas.

Saludos
Elsa
http://galeon.com/aplicaexcel
04/05/2008
xjaci, usuario preguntando en Microsoft Excel
Usuario
Hola de nuevo Elsa, probé la macro y me dice el mensaje de que no hay 30 vacias y no se elimina el rango en la hoja 3. puesto que  dentro de las ultimas 30 está una o mas que no estan vacias.
Lo que yo necesito en realidad es que oculte dentro del rango fila 3 hasta la fila 81 inclusive, las 30 ultimas filas vacias.
Ejemplo: si dentro de la fila 52 a la 81 (30 ultimas) estan todas vacias, oculta de la 52 a la 81 inclusive, pero en cambio si la 60 u otra no esta vacia, oculta fila 51 a 81 sin ocultar la 60, y asi tambien si hay mas filas que no esten vacias.
A medida que haya mas filas ocupadas, irá subiendo de fila el rango
Ejemplo: si demtro de (52:81) hay una fila no vacia el rango sera (51:81), si hay dos filas  no vacias el rango será (50:81) y asi sucesivamente solo que tienen que quedar a la vista las no vacias.
Resumiendo lo que tengo que ocultar son "LAS 30 ULTIMAS FILAS QUE ESTEN VACIAS"
Desde ya muchas gracias, esperando una pronta respuesta me encuentro a su disposicion
Saluda atte Jacinto.
 
05/05/2008
xjaci, experto respondiendo en Microsoft Excel
Experto
Cambiá la rutina por esta otra:
Sub ocultaRango2()
'macro desarrollada por Elsamatilde el 5/05/08
filas = 0
crit = 0
conta = 1
Sheets("1").Select
While conta <= 13
'se guarda la última celda con fórmula o dato
fila = Range("B65536").End(xlUp).Row
'seleccionar rango
While filas <= 30
Range(Cells(fila, 2), Cells(fila, 13)).Select
Set rgo = Selection
For Each celdita In rgo
If celdita.Value <> "" Then
crit = 1
End If
Next celdita
'se oculta la fila
If crit = 0 Then
Selection.EntireRow.Hidden = True
filas = filas + 1
Else
crit = 0
End If
fila = ActiveCell.Offset(-1, 0).Row
Wend
filas = 0: crit = 0
conta = conta + 1
ActiveSheet.Next.Select
Wend
End Sub
Probala y comentame.

Saludos
Elsa
http://galeon.com/aplicaexcel
07/05/2008
xjaci, usuario preguntando en Microsoft Excel
Usuario
Hola Elsa, queria decirte que usé la nueva macro y funciona  barbaro. Muchas gracias por tu ayuda.
Espero que nos encontremos por aqui de nuevo. Atte. Jacinto
Enlaces patrocinados