Como crear ocultar una columna en función de una o varias celdas en excel

Estoy intentando crear un control de horas por año, mes y día. Necesito que cuando yo seleccione el mes y el año solo me muestre ese mes y ese año y que se oculten los demás.

2 Respuestas

Respuesta
2

Revisa lo siguiente, tal vez lo puedas adaptar a lo que necesitas:

Curso de macros. Macro para ocultar columnas. - YouTube

---

Otras recomendaciones de mi canal

Cursos de Excel:

https://www.youtube.com/watch?v=w7MYL3wDgH4&t=3s

https://www.youtube.com/watch?v=dy9w9zbkCaw&t=644s

https://www.youtube.com/watch?v=7Xhs04vhrtg&t=188s

---

Cursos de Macros:

https://www.youtube.com/watch?v=PupmVvM16-8&t=1s

https://www.youtube.com/watch?v=f_x8pstpNqc&t=3s

https://www.youtube.com/watch?v=5k0szqErdXg&t=689s

---

Sal u dos Dante Amor

Respuesta
3

En tu imagen se ven todas columnas de Diciembre y no se observan los encabezados, es decir cuáles son los rangos de cada mes.

También indica por favor si las fechas son fechas con un formato o son textos, y en qué fila se encuentran.

Mejor envíame una hoja de modelo para ubicar cada mes.

Primero deberás indicar en la fila 3 (luego podrás cambiarla ajustando la macro) el nro de semana de cada bloque.

Coloca en M3 la fórmula: = NUM.DE.SEMANA(M5). Luego selecciona M3, CTRL C, selecciona con clic derecho T3, Pegar fx . Te adjunto video con este paso.

En el Editor, selecciona con doble clic el objeto HOja donde se encuentre la de las semanas.

Allí copia este código:

Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
Dim x As Integer, y As Integer, finx As Integer    'columnas
Dim buscoSem
'por cambios en F4
If Target.Address <> "$F$4" Then Exit Sub
'las col empiezan en M que es la col 13 (x)
'cada semana tiene 7 días o columnas, por lo que termina en y = x+6
'la última col de la hoja es finx
finx = ActiveSheet.UsedRange.Columns.Count
'se muestran todas 
Range("M13", Cells(1, finx)).EntireColumn.Hidden = False
If Target.Value = "" Then Exit Sub
Set buscoSem = Rows("3:3").Find(Target.Value, LookIn:=xlValues, lookat:=xlWhole)
If Not buscoSem Is Nothing Then
    x = buscoSem.Column: y = x + 6
    'controla si x = 13 es la primer semana, nada para ocultar antes
    If x = 13 Then
        Range(Cells(1, 13), Cells(1, y)).EntireColumn.Hidden = False
        Range(Cells(1, y + 1), Cells(1, finx)).EntireColumn.Hidden = True
    ElseIf x > 13 Then
        'se oculta desde 13 hasta x-1
        Range(Cells(1, 13), Cells(1, x - 1)).EntireColumn.Hidden = True
        Range(Cells(1, x), Cells(1, y)). EntireColumn.Hidden = False
        'se oculta el resto del año
        Range(Cells(1, y + 1), Cells(1, finx)).EntireColumn.Hidden = True
    End If
End If
End Sub

Sdos!

La fórmula para las semanas debe hacer mención a M4 (no M5).

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas