I have a rather large table of data (whole table is ~800 columns by ~2700 rows) from which I need to extract a few rows at a time chosen by the value in column A. I therefore created a second sheet with the column headers and a VLOOKUP function. I paste the desired values into column A and it returns the desired rows.

The problem, however, is that if I use "TRUE" for the range_lookup value, many of the rows do not return the correct information but return the information for another row instead. The attached example spreadsheet is a cut down version of the original, with most of the columns removed to shrink the file size. When I tried removing some of the rows as well, it changed the results significantly. Even if I removed some rows that seemed to play no part (were neither the row referenced or the row returned incorrectly), some of the rows began to return the right values, and others returned different, but still wrong, values. One would think that this is just a case of Excel finding the closest value, but in this case, the value being looked up is simply copied and pasted from the table.

If I use "FALSE" for the range-lookup value, it fixes the problem, but it comes at a significant performance penalty. It's no big deal for this spreadsheet, but I have another one that does something similar with the same dataset for which the performance penalty is much larger. If I use "TRUE", it takes about 3 minutes to calculate the spreadsheet, but if I use "FALSE", it takes about 20 minutes. I'm not worried about getting #N/A values because I know the lookup values are in the table, but now I don't think I can trust the results unless I can figure out why it's not working properly and fix it.

Does VLOOKUP have a problem when the lookup array is too large?

## Bookmarks