Excel - Jose

 
Vista:
sin imagen de perfil

Jose

Publicado por Autofiltros (21 intervenciones) el 23/01/2009 10:28:16
Buenas,

Existe alguna fórmula o instruccion VBA que te permita contar el número de elementos que tiene el desplegable de un autofiltro?? ¿Cómo se podría averiguar?

Gracias

Jose
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Abraham Valencia
Val: 313
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

RE:Jose

Publicado por Abraham Valencia (2415 intervenciones) el 23/01/2009 18:58:50
Pues porque no usas la funcion SUBTOTALES? Si insistes con VBA, pues, debes crearte una rutina que te cuente las filas no ocultas despues de aplicar tu filtro

Abraham
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JuanC

RE:Jose

Publicado por JuanC (1237 intervenciones) el 25/01/2009 13:40:17
Option Explicit

'//By JuanC - Ene. 2009

Sub test()
Dim rng As Range, h As Range, ws As Worksheet
Dim i&, lCount&, sAdd$, sFirst$, sLast$
On Error Resume Next

Set ws = Sheets(1)

If Not ws.FilterMode Then GoTo fin '//No hay filtro aplicado

'//Toma rango del Autofiltro
Set rng = ws.AutoFilter.Range '//Ej: $B$2:$D$13

If Not rng Is Nothing Then
'//Reduce rango del Autofiltro (quita 1er fila)
Set rng = rng.Offset(1).Resize(rng.Rows.Count - 1) '//Ej: $B$3:$D$13

'//Reduce nuevamente el rango del Autofiltro
'//(toma sólo la primer columna del rango del Autofiltro)
sAdd = rng.Address
sFirst = Split(sAdd, "$")(1)
sLast = Split(Cells(, rng.SpecialCells(xlCellTypeLastCell).Column).Address, "$")(1)
sAdd = Replace(sAdd, sLast, sFirst) '// $B$3:$D$13 -> $B$3:$B$13
Set rng = Range(sAdd)

'//Verifica si hay datos como resultado del Autofiltro (filas visibles)
Set h = Nothing
Set h = rng.SpecialCells(xlCellTypeVisible)
If h Is Nothing Then GoTo fin
sAdd = h.Address '//Ej: $B$4,$B$7:$B$8,$B$12

'//Cuenta las filas tomando rango por rango (celda individual o
'//celdas contiguas), esto es: $B$4, luego $B$7:$B$8 y por último $B$12
Do
Set h = Range(Split(sAdd, ",")(i))
If h Is Nothing Then Exit Do
i = i + 1
lCount = lCount + h.Rows.Count '//Contador
Set h = Nothing
Loop

End If

fin:
MsgBox lCount

Set rng = Nothing
Set ws = Nothing
Set h = Nothing
End Sub

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Jose

Publicado por Jose (21 intervenciones) el 25/01/2009 21:19:25
Juan,

Mil gracias por el código. Perfecto, este codigo cuenta el número de filas que tiene el autofiltro activo, pero, ¿existe alguna instrucción o código que te de como resultado el número de valores unicos del filtro activo para cada columna del autofiltro?

Gracias

Jose
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JuanC

RE:Jose

Publicado por JuanC (1237 intervenciones) el 26/01/2009 12:17:10
no es acaso lo que pediste??
si ahora te hago lo que pedís, después vas a pedir otra cosa?
alguna vez vas a hacer algo vos?
con el código que te dí tenés la base para hacer lo que quieras, ahora bien,
si no sabés ni te interesa aprender a programar, pues bien, a otra cosa...

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Abraham Valencia
Val: 313
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

RE:Jose

Publicado por Abraham Valencia (2415 intervenciones) el 26/01/2009 15:49:09
Y ademas, no es que las macros existan para cada cosa, las macros son rutinas de programacion que UNO CREA PARA TAREAS ESPECIFICAS... asi que como bien ya te dijo JuanC, o programas, o ya sabes :)

Abraham
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar