Change to
Sub test()
Dim myMonths, myMin As Long, myMax As Long, ws As Worksheet
Dim i As Long, r As Range, rng As Range, temp
myMonths = Array("Jan", "Feb", "Mar", "Apr", "May", _
"Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
Application.ScreenUpdating = False
For Each ws In Worksheets
myMin = Month(Application.Min(ws.Columns("b")))
myMax = Month(Application.Max(ws.Columns("b")))
Set rng = ws.[e1:e2]: temp = rng.Value
ws.Columns("f").Resize(, 60).EntireColumn.Clear
For i = myMin To myMax
rng(2).Formula = "=month(b6)=" & i
Set r = ws.[a5].Offset(, i * 5).Cells(1)
[a5].CurrentRegion.AdvancedFilter 2, rng, r
With r.CurrentRegion
.Offset(1).Resize(.Rows.Count - 1).Columns(1).Value = _
Evaluate("row(1:" & .Rows.Count - 1 & ")")
End With
With r.Cells(0, 2)
.Value = UCase$(myMonths(i - 1))
.Interior.Color = vbRed: .Font.Bold = True
.HorizontalAlignment = xlCenter
End With
Next
rng.Value = temp
Next
Application.ScreenUpdating = True
End Sub
Bookmarks