Function time_find(ByVal rng_test_data As Range) As Double Dim lng_result_array As Long Dim dbl_start_time As Double, dbl_end_time As Double Dim rng_lookup_column As Range, rng_found_result As Range Dim str_first_address As String dbl_start_time = Timer Set rng_lookup_column = rng_test_data.Resize(rng_test_data.Rows.Count, 1) With rng_lookup_column Set rng_found_result = .Find("foo", After:=.Cells(.Rows.Count, .Columns.Count), _ LookIn:=xlValues, SearchDirection:=xlNext, MatchCase:=False) str_first_address = rng_found_result.Address Do Set rng_found_result = .FindNext(rng_found_result) If rng_found_result.Offset(0, 1) = "bar" Then lng_result_array = lng_result_array + 1 End If Loop While Not rng_found_result Is Nothing And rng_found_result.Address <> str_first_address End With dbl_end_time = Timer time_find = dbl_end_time - dbl_start_time End Function