Sub RemoveWeekends()
Dim x As Long
Dim y As Long
Dim arr() As Variant
Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
With ActiveSheet
'Read values from holidays range into dictionary
arr = .Cells(991, 2).Resize(90).Value
For x = LBound(arr, 1) To UBound(arr, 1)
If LenB(arr(x, 1)) Then dic(arr(x, 1)) = x
Next x
'Read data from L2:AP799
arr = .Cells(2, 12).Resize(798, 31).Value
For y = LBound(arr, 2) To UBound(arr, 2)
If Weekday(arr(1, y), 2) > 5 Or dic.exists(arr(1, y)) Then: For x = LBound(arr, 1) + 1 To UBound(arr, 1): arr(x, y) = vbNullString: Next x
Next y
'Write array to L2:AP799
.Cells(2, 12).Resize(798, 31).Value = arr
End With
Application.ScreenUpdating = True
Erase arr
Set dic = Nothing
End Sub