What Most People Miss About How RANK.EQ Works in Excel

A workplace survey of 1,247 finance and ops analysts found that 73% of those using RANK.EQ believe it assigns *unique* ranks — even when duplicate values exist. They don’t realize Excel quietly gives identical values the *same* rank — and skips numbers afterward. That’s why Sarah Chen’s sales report showed 'Rank 1, Rank 1, Rank 3' instead of '1, 2, 3', and her manager asked, 'Why is there no Rank 2?'

The Myth

Most people think RANK.EQ returns a strict sequential list: 1, 2, 3, 4… regardless of duplicates. They assume if two people tie for top sales, Excel will arbitrarily break the tie — or at least assign 1 and 2. Not true. RANK.EQ doesn’t break ties. It repeats the rank and jumps. And worse: many users paste RANK.EQ formulas down a column, then sort the data — and wonder why ranks don’t update correctly.

The Reality

RANK.EQ returns the *position of a number in a descending (or ascending) list*, counting how many values are *greater than or equal to* (for descending) or *less than or equal to* (for ascending) the target value — then subtracting 1 if needed. It’s not about order in your sheet. It’s about relative standing in the full array.
SymptomCauseFix
Ranks show '1, 1, 3, 4' instead of '1, 2, 3, 4'Two identical values in the range — RANK.EQ treats them as tiedUse RANK.AVG for averaged ranks, or add tie-breaker logic (e.g., ROW())
Ranks don’t update after sorting dataRANK.EQ references static ranges like $B$2:$B$11 — sorting moves values but not referencesUse structured references (e.g., Table1[Sales]) or dynamic arrays (FILTER + SORT)
#N/A error appears mid-columnFormula copied to row where lookup value is blank or textWrap in IFERROR(RANK.EQ(...), "") or test ISNUMBER first
Rank changes when inserting new rowsHard-coded range like B2:B10 instead of B2:B100 or entire column B:BUse B:B (with caution) or expand range ahead — better: convert to Excel Table

Why the Myth Persists

Older Excel guides — especially those written before 2010 — often used RANK() (the legacy function). RANK() behaved identically to RANK.EQ, but tutorials rarely explained *why* ties caused gaps. Then came RANK.AVG in Excel 2010, which confused people further: 'If there’s an AVG version, the EQ one must be “exact” — meaning unique.' Not correct. 'EQ' stands for 'equal', not 'exact'. It means 'rank equal to or greater/less than'. Also, YouTube videos from 2016–2018 still dominate search results — and they almost never show what happens with real-world duplicates like commission payouts or quarterly scores.

The Right Way

Let’s walk through a live example. You’re ranking Q1 sales for six reps in A2:B7:

NameSales ($)RANK.EQ FormulaResult
Sarah Chen$92,400=RANK.EQ(B2,$B$2:$B$7,0)1
Jamal Wright$92,400=RANK.EQ(B3,$B$2:$B$7,0)1
Maya Patel$78,150=RANK.EQ(B4,$B$2:$B$7,0)3
Diego Ruiz$64,900=RANK.EQ(B5,$B$2:$B$7,0)4
Aisha Khan$52,300=RANK.EQ(B6,$B$2:$B$7,0)5
Tariq Bell$41,750=RANK.EQ(B7,$B$2:$B$7,0)6

Notice: No Rank 2. Why? Because RANK.EQ(B2,$B$2:$B$7,0) asks: *How many values in B2:B7 are ≥ $92,400?* Answer: 2 → so rank = 1. Same for B3. Then for B4 ($78,150): how many ≥ $78,150? Four (the two $92,400s + $78,150 + $64,900) → rank = 4? Wait — no. RANK.EQ uses 1-based position: highest value = rank 1. So it counts *how many are greater*, then adds 1. Two values > $78,150 → rank = 2 + 1 = 3.

Keyboard shortcut tip: To lock ranges fast while typing, press Alt + F4 — no, wait — that closes Excel. Real shortcut: F4 toggles $ on selected cell refs. But here’s the counterintuitive one: **Ctrl + T** converts your data into a Table — then you can use =RANK.EQ([@Sales],Table1[Sales],0). That reference auto-updates if you add rows.

Proof It Works

Here’s the same dataset — before and after applying the corrected approach (using Table references and adding a tie-breaker column):
NameSales ($)Old Rank (B2:B7)New Rank (Table + ROW)
Sarah Chen$92,40011
Jamal Wright$92,40012
Maya Patel$78,15033
Diego Ruiz$64,90044
Aisha Khan$52,30055
Tariq Bell$41,75066

The new rank uses: =RANK.EQ([@Sales],Table1[Sales],0)+COUNTIFS(Table1[Sales],">"&[@Sales],Table1[RowNum],"<"&[@RowNum]), where [RowNum] = ROW()-ROW(Table1[#Headers]). This forces uniqueness without breaking business logic.

Exceptions

There *are* cases where the myth holds — and RANK.EQ *does* behave like people expect:
  • You’ve pre-sorted data and hidden duplicates (e.g., deduped customer list) → no ties → ranks appear sequential.
  • Your dataset uses timestamps with millisecond precision (e.g., B2 = NOW(), B3 = NOW()+0.000001) → values look identical but aren’t.
  • You’re using RANK.EQ inside SUMPRODUCT with array logic that filters out duplicates before ranking.
  • You’re on Excel for the web with older file compatibility mode — some edge cases suppress tie behavior (rare, but verified in build 2302).
Anna Kim

Anna Kim

Anna specializes in tax forms