
Generisk formel
=SMALL(IF(logical,ROW(list)-MIN(ROW(list))+1),n)
Sammanfattning
För att få positionen för den nionde matchningen (till exempel det andra matchningsvärdet, det tredje matchningsvärdet etc.) kan du använda en formel baserad på funktionen SMALL. I exemplet som visas är formeln i G5:
=SMALL(IF(list=E5,ROW(list)-MIN(ROW(list))+1),F5)
Denna formel returnerar positionen för den andra förekomsten av "rött" i listan.
Obs: detta är en matrisformel och måste anges med kontroll + skift + enter.
Förklaring
Denna formel använder det namngivna intervallet "lista" som är intervallet B5: B11.
Kärnan i denna formel är funktionen SMALL, som helt enkelt returnerar det n: a minsta värdet i en lista med värden som motsvarar radnummer. Radnumren har "filtrerats" av IF-satsen, som använder logiken för en matchning. Arbetar inifrån och ut, jämför IF alla värden i det namngivna intervallet "lista" med värdet i B5, vilket skapar en array som denna:
(TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;TRUE)
"Värdet om det är sant" är en uppsättning relativa radnummer som skapats av den här koden:
ROW(list)-MIN(ROW(list))+1
Resultatet är en array som denna:
(1;2;3;4;5;6;7)
Se den här sidan för en fullständig förklaring.
Med ett logiskt test som returnerar en rad resultat fungerar IF-funktionen som ett filter - endast radnummer som motsvarar en match överlever, resten returnerar FALSE. Resultatet som returneras av IF ser ut så här:
(1;FALSE;FALSE;FALSE;5;FALSE;7)
Siffrorna 1, 5 och 7 motsvarar platsen för "rött" i listan.
Slutligen returnerar SMALL det nionde minsta objektet i listan och ignorerar FALSE-värden. I exemplet innehåller F5 2, så SMALL returnerar det 2: a minsta värdet: 5.
Få tillhörande värde
När du har den relativa positionen för den n: e matchningen kan du använda den positionen med INDEX-funktionen för att returnera ett associerat värde.