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!