bungeejumper2,
Using 1,004,287 rows as a test sample size, this code completed in roughly 15 seconds:
Sub tgr_v1()
Dim lCalc As XlCalculation
With Application
lCalc = .Calculation
.Calculation = xlCalculationManual
.EnableEvents = False
.ScreenUpdating = False
End With
With Intersect(ActiveSheet.UsedRange.EntireRow, Columns("G"))
.Formula = "=IF(COUNT(SEARCH({""ib"","";iber"",""iiber"",""iber"",""ibir""},B" & .Row & ")),""Cat1"",IF(ISNUMBER(SEARCH(""Unavailable"",B" & .Row & ")),""Cat2"",""Cat3""))"
.Value = .Value
End With
With Application
.Calculation = lCalc
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
Bookmarks