This is a less redundant way (in ver 4) but a more straight-forward way is in ver 3
Option Explicit
'If BF=1 Un-Hide Columns Q and AS
'If BG=1 Un-Hide Columns R and AT
'If BH=1 Un-Hide Columns S and AU
'If BI=1 Un-Hide Columns T and AV
'Q = 17
'AS = 45 = Q + 28
'BF = 58 = Q + 41
Private Sub Worksheet_Calculate()
Dim iRow As Long, iCol As Long
Application.ScreenUpdating = False
For iCol = 17 To 20
Columns(iCol).Hidden = True
Columns(iCol + 28).Hidden = True
For iRow = 9 To 35
If Cells(iRow, iCol + 41).Value = 1 Then
Columns(iCol).Hidden = False
Columns(iCol + 28).Hidden = False
Exit For
End If
Next iRow
Next iCol
Application.ScreenUpdating = True
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim iRow As Long
If Intersect(Target, Cells(9, 58).Resize(27, 4)) Is Nothing Then Exit Sub
Call Worksheet_Calculate
End Sub