Valor de la primer celda de un rango filtrado en excel

Agradeceria a quien pueda brindarme la posibilidad de conseguir un código que permita obtener el valor de la primera celda visible de una columna filtrada; es decir, cual seria el valor de la celda A6 si es la primera visible al ser filtrada

2 respuestas

Respuesta
2

Si tienes encabezados en la fila 1, entonces el contador inicia en la fila 2, prueba la siguiente:

Sub PrimeraCelda()
  Dim i As Long
  For i = 2 To Range("A" & Rows.Count).End(3).Row
    If Range("A" & i).EntireRow.Hidden = False Then
      MsgBox "el valor de la primera celda visible " & Range("A" & i).Value
      Exit Sub
    End If
  Next
End Sub

Aquí otra opción:

Sub primeraCelda_2()
  MsgBox "el valor de la primera celda visible " & Evaluate(Replace("=INDEX(#,MATCH(1,SUBTOTAL(3,OFFSET(#,,,ROW(#)-ROW(INDEX(#,1))+1)),0))", "#", Range("A2:A" & Range("A" & Rows.Count).End(3).Row).Address))
End Sub

Muchas gracias!

el último ejemplo me fue más práctico y funcional. Asimismo como ejecutaría el código si solo acciono el filtro?

Sub primeraCelda_2()
    ActiveSheet.Range("$A$1:$AL$2000").AutoFilter Field:=20 ', Criteria1:="27"
      Range("AE1") = Evaluate(Replace("=INDEX(#,MATCH(1,SUBTOTAL(3,OFFSET(#,,,ROW(#)-ROW(INDEX(#,1))+1)),0))", "#", Range("T2:T" & Range("T" & Rows.Count).End(3).Row).Address))
End Sub

Accionar el autofiltro no produce un evento, entonces no podría ejecutarse el código. Pero podrías poner el evento Worksheet_SelectionChange y utilizar una celda; o el evento Worksheet_BeforeDoubleClick y también especificar alguna celda. Entonces sí, podrías ejecutar el código.

Respuesta
2

[Hola

Después de filtrar intenta así:

MsgBox ActiveSheet.AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).Cells(1, 1).Value

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas