VLOOKUP
Quirk foundCategory: Lookup and reference · Last tested 2026-08-06
Real, executed compatibility results for the VLOOKUP function across Microsoft Excel, Google Sheets, and LibreOffice Calc — verified by actually running it. Syntax and links to each vendor’s official documentation are below.
Support matrix
| Engine | Documented | Live-tested | Verdict |
|---|---|---|---|
| Excel | Yes | Not yet | n/a |
| Google Sheets | Yes | Not yet | n/a |
| LibreOffice Calc | Yes | Yes (25.8.7.3, 2026-08-06) | Quirk found |
LibreOffice version history
We executed the same test cases under each LibreOffice release to show exactly when VLOOKUP’s support changed — not documentation claims, real results.
| LibreOffice version | Verdict | Tested |
|---|---|---|
| 24.2.0.3 | Quirk found | 2026-07-19 |
| 24.8.7.2 | Quirk found | 2026-07-19 |
| 25.2.0.3 | Quirk found | 2026-07-24 |
| 25.8.7.3 | Quirk found | 2026-08-06 |
Why isn't VLOOKUP working in LibreOffice?
VLOOKUP exists in LibreOffice 25.8.7.3, but it is not a drop-in match for
Excel — our executed tests found real behavioral differences (detailed in the test results on this
page). If a formula that works in Excel or Google Sheets misbehaves in LibreOffice, compare your usage
against the failing cases above before assuming your data is wrong.
Discovered quirks
- =VLOOKUP("a",A1:B3,5,FALSE) on LibreOffice Calc returned #VALUE!, but the documented/expected result is #REF!. Microsoft docs specify #REF! for out-of-range col_index_num; record engines' ACTUAL error code here since this is a known point of cross-engine divergence; MISMATCH vs expected: expected '#REF!', got '#VALUE!'
Executed test cases
LibreOffice Calc 25.8.7.3 (tested 2026-08-06)
| Formula | Description | Result | Expected | Verdict |
|---|---|---|---|---|
| =VLOOKUP("b",A1:B3,2,FALSE) | Exact match mode (range_lookup=FALSE) | 2 | 2 | Matched |
| =VLOOKUP(3,A1:B5,2,TRUE) | Approximate match requires ascending sorted first column | 20 | 20 3 is between 2 and 4; approx match returns the row for the largest value <= lookup (2 -> 20) |
Matched |
| =VLOOKUP("z",A1:B3,2,FALSE) | Exact match with no match -> #N/A | #N/A | #N/A | Matched |
| =VLOOKUP("a",A1:B3,5,FALSE) | col_index_num beyond the table width -> #REF! per Microsoft docs | #VALUE! | #REF! Microsoft docs specify #REF! for out-of-range col_index_num; record engines' ACTUAL error code here since this is a known point of cross-engine divergence |
Mismatch |
| =VLOOKUP("a*",A1:B3,2,FALSE) | Wildcards are honored even in exact-match mode | 1 | 1 First row matching the a* wildcard pattern is 'apple' |
Matched |
Docs & syntax
- Excel: official documentation
- Google Sheets: official documentation
- LibreOffice Calc: official documentation
Related how-to recipes
- How to use VLOOKUP (and the FALSE you must not forget)
- How to VLOOKUP with a partial match (contains)
- How to VLOOKUP from another sheet