HLOOKUP
Quirk foundCategory: Lookup and reference · Last tested 2026-08-06
Real, executed compatibility results for the HLOOKUP 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 HLOOKUP’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 HLOOKUP working in LibreOffice?
HLOOKUP 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
- =HLOOKUP("a",A1:C2,5,FALSE) on LibreOffice Calc returned #VALUE!, but the documented/expected result is #REF!. 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 |
|---|---|---|---|---|
| =HLOOKUP("b",A1:C2,2,FALSE) | Exact match (range_lookup=FALSE) on a horizontal lookup table | 2 | 2 | Matched |
| =HLOOKUP(6,A1:E2,2,TRUE) | Approximate match (TRUE) requires the first row sorted ascending; returns the largest header <= lookup_value | 50 | 50 https://support.microsoft.com/en-us/office/hlookup-function-a3034eec-b719-4ba3-bb65-e1ad662ed95f -- approximate match finds the next largest value that is <= lookup_value; 6 falls between 5 and 7, so it matches 5 -> 50 |
Matched |
| =HLOOKUP("z",A1:C2,2,FALSE) | Exact match with no match found -> #N/A | #N/A | #N/A | Matched |
| =HLOOKUP("a",A1:C2,5,FALSE) | row_index_num greater than the number of rows in table_array -> #REF! | #VALUE! | #REF! | Mismatch |
Docs & syntax
- Excel: official documentation
- Google Sheets: official documentation
- LibreOffice Calc: official documentation