My main criticism is that your use of the For each ... next loop will cause the code to search each and every entry for a match. It can be an effective "brute force" algorithm, and may be necessary for some situations. I would consider including, similar to Excel's built in lookup functions, a "range_lookup" argument. If the user will provide a sorted list -- then you can use a much more efficient binary search algorithm (http://en.wikipedia.org/wiki/Binary_search_algorithm ). You also only need to find the first and last match -- recognizing that, if the list is properly sorted, all matches will be in between the first and last match. I could see potential for significant performance improvement if you allow for (or even encourage) the search on a sorted list.