Mostrar u ocultar columnas con un filtros en otra hoja

Tengo la HOJA1 con los siguientes datos

y una HOJA2, con los datos de la listas de la HOJA1

Digamos que filtro de la lista de días de HOJA1 ( LUNES, MIÉRCOLES, VIERNES ), y de la lista de meses de HOJA1 (ENERO, MARZO), entonces lo que ocupo es que en la HOJA2 se oculten las columnas que no están dentro de lo filtrado, es decir que se muestre así:

Y como se puede ver en la imagen sin afectar la COLUMNA A

Espero haberme explicado bien y que exista alguna forma de lograr este filtrado de información

1 Respuesta

Respuesta
1

Lo que deseas hacer es imposible, por como lo tienes estructurado. Quizás por eso no te han respondido, tal vez creen que no aceptaras esa respuesta.

Te explicaré por qué no se puede hacer lo que quieres.

Excel, si es muy bueno, pero tiene sus limitaciones. En tu ejemplo dices que quieres filtrar por LUNES, MIÉRCOLES y VIERNES, pero en los meses solo quieres ENERO y MARZO. Bueno eso no es posible, porque al incluir VIERNES en tu filtro, MAYO también se incluirá.

Lo mismo pasaría si es al revés, en conclusión el filtro siempre mostrara la misma cantidad de filas y la información de cada columna debe corresponder una con otra.

Por ejemplo si quisieras filtrar solo LUNES y el mes DICIEMBRE, esto no seria posible, porque en la estructura de la tabla ambos usan filas diferentes, LUNES no corresponde a DICIEMBRE y viceversa. Espero haberme explicado.

El filtro no esta pensado para como tu lo quieres usar.

Tal vez deberías usar controles CheckBox, y así poder "Seleccionar" lo que quieres filtrar en la otra hoja.

Gracias Andy, entiendo lo que comentas.

Y si nos olvidamos de la columba B (meses) y que solo fuera por la columna A (días), ¿es posible así con un autofiltro sin un checkbox?, la verdad me bastaría con esa columna A

Saludos

Si se basa en una sola columna si, pero debes leer con atención lo siguiente:

Excel no tiene funcionalidad para filtrar horizontalmente. Hay que hacerlo por macro.

Además de eso, tampoco hay una forma de detectar cuando aplicas el filtro y que se dispare la macro. Para lograrlo, hay que "engañar" a Excel.

Y para engañar a Excel hay que usar una Fórmula como carnada. Si tu hoja ya cuanta con CUALQUIER fórmula (no importa cual) entonces no hay problema. Pero si no tienes ninguna fórmula ahora mismo, simplemente pon cualquier cosa en cualquier celda, por ejemplo:

=(C2)

Esto es para que la macro que te voy a dar pueda ejecutarse cuando tu apliques filtros ya que la macro debe ir en el evento Calculate de la hoja, y este evento solo se dispara cuando una fórmula cualquiera es recalculada. La macro debe ir en el modulo de la hoja 1, esa hoja donde aplicaras el filtro. Ajusta los nombres y los rangos.

Private Sub Worksheet_Calculate()
Dim HOJA1 As Worksheet: Set HOJA1 = Sheets("Sheet1")
Dim HOJA2 As Worksheet: Set HOJA2 = Sheets("Sheet2")
Dim DiasRng1 As Range: Set DiasRng1 = HOJA1.Range("A2:A8")
Dim DiasRng2 As Range: Set DiasRng2 = HOJA2.Range("B1:H1")
Dim Dias1 As Range, Dias2 As Range
Dim SelDias As Range
Set SelDias = DiasRng1.SpecialCells(xlCellTypeVisible)
DiasRng2.Columns.Hidden = True
If SelDias.Count < 7 Then
    For Each Dias1 In SelDias.Cells
        For Each Dias2 In DiasRng2.Cells
            If Dias1.Value = Dias2.Value Then
                Dias2.Columns.Hidden = False
                Exit For
            End If
        Next Dias2
    Next Dias1
Else
    DiasRng2.Columns.Hidden = False
End If
End Sub

Te dejo un vídeo ejemplo, de esos que yo hago por si acaso quedó alguna duda, ya que una imagen vale mas que mil palabras:

VIDEO DEMO

Andy

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas