Excel vzorec: Získejte umístění hodnoty ve 2D poli -

Obecný vzorec

=SUMPRODUCT((data=MAX(data))*ROW(data))-ROW(data)+1

souhrn

Chcete-li vyhledat pozici hodnoty v 2D poli, můžete použít funkci SUMPRODUCT. V zobrazeném příkladu jsou vzorce použité k vyhledání čísel řádků a sloupců maximální hodnoty v poli:

=SUMPRODUCT((data=MAX(data))*ROW(data))-ROW(data)+1 =SUMPRODUCT((data=MAX(data))*COLUMN(data))-COLUMN(data)+1

kde „data“ je pojmenovaný rozsah C5: G14.

Poznámka: v tomto příkladu libovolně najdeme umístění maximální hodnoty v datech, ale data = MAX (data) můžete nahradit jakýmkoli jiným logickým testem, který danou hodnotu izoluje. Všimněte si také, že tyto vzorce selžou, pokud jsou v poli duplicitní hodnoty.

Vysvětlení

Chcete-li získat číslo řádku, data se porovná s maximální hodnotou, která generuje pole výsledků TRUE FALSE. Ty jsou vynásobeny výsledkem ROW (data), který generuje a pole čísel řádků asociovaných s pojmenovaným rozsahem „data“:

=SUMPRODUCT((FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,TRUE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE;FALSE,FALSE,FALSE,FALSE,FALSE)*(5;6;7;8;9;10;11))

Operace násobení způsobí, že aplikace Excel vynutí hodnoty TRUE FALSE v prvním poli na 1 s a 0 s, takže můžeme vizualizovat přechodný krok takto:

=SUMPRODUCT((0,0,0,0,0;0,0,0,0,0;0,0,0,0,0;0,0,0,0,0;0,0,1,0,0;0,0,0,0,0;0,0,0,0,0)*(5;6;7;8;9;10;11))

SUMPRODUCT poté vrátí výsledek 9, což odpovídá 9. řádku v listu. K získání indexu vzhledem k pojmenovanému rozsahu „data“ používáme:

-ROW(data)+1

Konečným výsledkem je pole (5; 4; 3; 2; 1; 0; -1), ze kterého se zobrazí pouze první hodnota (5).

Vzorec pro určení polohy sloupce funguje stejným způsobem.

Poznámka: Na tento přístup jsem narazil v komentáři Mika Ericksona na MrExcel.com. V tomto vlákně jsou také některé další dobré nápady, včetně možnosti maticového vzorce.

Zajímavé články...