Mejorar velocidad macro para ocultar columnas según condición
Tengo una macro creada para ocultar columnas según la condición del encabezado de esa columna ( si es 1 se muestra, si es 0 se oculta), pero es muy lenta pues va ocultando columna a columna ¿Sabéis alguna forma de aligerarla o hacerla más rápida?.
Por otro lado quisiera, si es posible, que las columnas se ocultaran en función de dos condiciones localizas por ejemplo en la celda del encabezado y la de abajo, también con valores 0,1. Actualmente la celda de selección es resultado de una multiplicación y creo que eso me relentiza tambien la ejecución del cálculo. He intentado adaptar una macro para filas que vi en otras consultas y que creo que me solventaría los dos problemas, pero sin éxito ( No tengo idea de programación). ¿Podríais ayudarme?. Muchas gracias desde ya.
Macro actualmente utilizada pero lenta:
Sub Real()
Application.ScreenUpdating = False
Call SelectMes 'llamo a una macro que precisamente me coloca en el encabezado 1 o 0
ActiveWindow.ScrollColumn = 4
Dim Celda As Range
Dim Contador
Dim e As Integer
For e = 4 To 400 'columnas de mi matriz de selección
Worksheets("Sheet1").UsedRange.Columns(e).Rows(1).Select
If ActiveCell.Value = 0 Then
Columns(e).Hidden = True
Else
If ActiveCell.Value = 1 Then
Columns(e).Hidden = False
End If
End If
Next
Range("A1").Select
End Sub
Macro adaptada que no funciona.
Sub PruebaReal()
Dim Vec, Rng As Range
Dim Q&, i&
Vec = Range("a1", Cells("a", Column.Count).End(xlLeft)).Offset(2, 400)
Q = UBound(Vec)
For i = 5 To Q ‘ para que me tome las 400 columnas
If Not IsEmpty(Vec(1,i)) Then
If Vec(1,i) = 1 and Vec (2,i)=1 Then ‘ intento meter que se cumplan las dos selecciones que os comentaba antes
If Not Rng Is Nothing Then
Set Rng = Union(Rng, Cells("a",i))
Else
Set Rng = Cells("a", i)
End If
End If
End If
Next
Rng.EntireColumn.Hidden = True
End Sub