Fórmula o macro para que el contenido de una celda sea condicionado por un filtro

Necesito una solución para que sea el motor de otra que no he logrado encontrar respuesta, voy a poner un ejemplo: Tengo una lista de los meses del año y al filtrar por uno de ellos (no hay repetidos) en la columna DE celda 4 (D4), ahora en la celda D2 tengo el "resultado", al realizar el filtro de los meses y elegir "Agosto", en la celda resultado D2 debe estar la palabra "Agosto". Adjunto imagen de plan y al según es como debería quedar (ahora esta manual)... Espero me puedan ayudar...

1 respuesta

Respuesta
1

Para que una macro se ejecute en automático, debe ocurrir un evento en tu hoja, si solamente realizas un autofiltro, ninguno de los eventos de la hoja se activa, es decir, no ha ocurrido nada en tu hoja, por lo tanto, no se puede ejecutar ninguna macro.

Lo que podemos hacer es, cuando selecciones un mes, del rango D5 a D16, en ese momento ese mes que seleccionaste se copie a la celda E2.

Pon la siguiente macro en los eventos de tu hoja.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Range("D5:D16")) Is Nothing Then
        If Target.Count = 1 Then
            [E2] = Target
        End If
    End If
End Sub

Si ya tienes el evento Worksheet_SelectionChange, entonces, dentro de ese código pon lo siguiente:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'tú código
    '
    '
    '
    '
    '
'
'Por.Dante Amor
    If Not Intersect(Target, Range("D5:D16")) Is Nothing Then
        If Target.Count = 1 Then
            [E2] = Target
        End If
    End If
End Sub

Disculpa, te puse mi correo, pero no es necesario que me envíes tu archivo.

Dante: Te remití el archivo. Incluí lo que me enviaste pero no sé qué hice mal porque no funciona. Gracias.

En tu hoja tienes 2 eventos, yo te envié el selectionchange y tu ya tenías el change.

Así es como deben quedar.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B4")) Is Nothing Then
        Select Case [B4]
            Case "Proyecto_1": Proyecto_1
            Case "Proyecto_2": Proyecto_2
            'Case "Proyecto_3": Proyecto_3
         End Select
    End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Range("D5:D16")) Is Nothing Then
        If Target.Count = 1 Then
            [E2] = Target
        End If
    End If
End Sub

Saludos.Dante Amor

No olvides valorar la respuesta.

Lo que necesitas es acoplar en tu macro que hace el filtro la instrucción para que bajar una celda con la "flecha abajo", pero no conozco tu macro, así que voy a suponer lo siguiente:

Sub Macro3()

'

    Range("D4").Select

    Selection.AutoFilter

    ActiveSheet.Range("$D$4:$D$16").AutoFilter Field:=1, Criteria1:="Marzo"

    Selection.End(xlDown).Select

End Sub

Lo que hace la macro es seleccionar la celda D4, después hacer el autofiltro seleccionando el mes de "Marzo", lo siguiente es seleccionar la siguiente celda, si el filtro es efectivo se posicionará en "Marzo".

O pon la macro que hace el autofiltro o envíame tu archivo.

Quedo así...

Range("D4").Select    

Selection.End(xlDown).Select

Y funcionó... Solo coloque esas dos sentencias al final de la macro que ejecuta el filtro desde la Ribbon y se ubica una abajo del encabezado! Eso se lleva mediante una igualdad a otra celda que da el arranque a una macro especifica...

Así que lo logramos! Gracias Dante!

Cuando vengas a Medellín te invito unos tequilas! Feliz año!

¡Gracias! 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas