# How to return the column header of the lowest value in a row in Excel

Look up the row's minimum in the row and return the header above it: `=XLOOKUP(MIN(B2:D2),B2:D2,B$1:D$1)`.

**Excel:** `=XLOOKUP(MIN(B2:D2),B2:D2,B$1:D$1)` (Excel 2021, 2024 and Microsoft 365)

**Google Sheets:** the same formula works.

## Example

Sample data (row 1 is the header):

| A | B | C | D | E |
| --- | --- | --- | --- | --- |
| Item | Acme Supply | BrightCo | Corvex | Cheapest supplier |
| Copy paper (case) | 42.5 | 39.9 | 44.25 |  |
| Toner cartridge | 89 | 94.5 | 86.75 |  |
| Stapler | 14.2 | 12.95 | 13.4 |  |
| Desk chair | 189 | 199 | 179 |  |
| Whiteboard | 64.5 | 61 | 68.9 |  |

Formula in E2, filled to E6: `=XLOOKUP(MIN(B2:D2),B2:D2,B$1:D$1)`

Result: BrightCo; Corvex; BrightCo; Corvex; BrightCo

## How it works

MIN finds the lowest price in the row, $39.90 for copy paper. XLOOKUP looks for that price across `B2:D2` and returns the header in the same column of `B$1:D$1`. The `$` keeps the header row fixed while the rows change.

## Other ways

- `=INDEX(B$1:D$1,MATCH(MIN(B2:D2),B2:D2,0))`: Works in every Excel version.

## Common mistakes

- Ties return the first supplier from the left.
- MIN skips blank cells, so a supplier that doesn't carry the item is ignored. A price of 0 is not skipped and would win.

## Questions

**How do I return the header of the highest value?**

Use MAX instead of MIN.

**How do I list every supplier tied for the lowest price?**

Filter the headers: `=TEXTJOIN(", ",TRUE,FILTER(B$1:D$1,B2:D2=MIN(B2:D2)))`.

Every formula and result on this page was checked by running it in the Spreadsheet Practice formula engine on 2026-10-30.

Source: https://spreadsheetpractice.com/formulas/header-of-lowest-value-in-row
