Dim hr As Long
Dim lc As Long
Dim c As Long
' Designate which row has headers
hr = 1
' Find column with last header on header row
lc = Cells(hr, Columns.Count).End(xlToLeft).Column
Application.ScreenUpdating = False
' Loop through all columns backwards, deleting ones with "Wake..."
For c = lc To 1 Step -1
If Left(Cells(hr, c), 4) = "Wake" Then
Application.ScreenUpdating = True
You can easily change the row you headers are on by changing what the "hr" variable is set to.
Also needs xlWhole specified in case another Find has previously been done with xlPart in which case a similar issue to the above would arise.
This code would of course also incorrectly delete any column that happened to be missing a heading in row 3.
Both codes would be more robust with something, say, On Error Resume Next in case there were no headers with "Wake*" (eg the code accidentally gets run a second time)