Excel-formel: Maks verdi med variabel kolonne -

Generisk formel

=MAX(INDEX(data,0,MATCH(column,header,0)))

Sammendrag

For å hente ut maksverdien i et datasett, der kolonnen er variabel, kan du bruke INDEX og MATCH sammen med MAX-funksjonen. I eksemplet vist er formelen i J5:

=MAX(INDEX(data,0,MATCH(J4,header,0)))

der data (B5: F15) og overskrift (B4: F4) er navngitte områder.

Forklaring

Merk: Hvis du ikke er kjent med INDEX og MATCH, kan du se: Hvordan bruke INDEX og MATCH

I en standardkonfigurasjon henter INDEX-funksjonen en verdi i en gitt rad og kolonne. For eksempel for å få verdien i rad 2 og kolonne 3 i et gitt område:

=INDEX(range,2,3) // get value at row 2, column 3

INDEX har imidlertid et spesielt triks - muligheten til å hente hele kolonner og rader. Syntaksen innebærer å oppgi null for argumentet "annet". Hvis du vil ha en hel kolonne, oppgir du rad som null. Hvis du vil ha en hel rad, oppgir du kolonne som null:

=INDEX(data,0,n) // retrieve column n =INDEX(data,n,0) // retrieve row n

I eksemplet som vises vil vi finne maksimumsverdien i en gitt kolonne. Vridningen er at kolonnen må være variabel, slik at den enkelt kan endres. I F5 er formelen:

=MAX(INDEX(data,0,MATCH(J4,header,0)))

Når vi arbeider fra innsiden og ut, bruker vi først MATCH-funksjonen for å få "indeksen" til kolonnen som er forespurt i celle J4:

MATCH(J4,header,0) // get column index

Med "Green" i J4 returnerer MATCH-funksjonen 3, siden Green er den tredje verdien i det nevnte områdetittelen . Etter at MATCH har returnert et resultat, kan formelen forenkles til dette:

=MAX(INDEX(data,0,3))

Med null angitt som radnummer, returnerer INDEX alle verdiene i kolonne 3 i de nevnte områdedataene . Resultatet returneres til MAX-funksjonen i en matrise som dette:

=MAX((83;54;35;17;85;16;70;72;65;93;91))

Og MAX returnerer det endelige resultatet, 93.

Minimum verdi

For å få minimumsverdien med en variabel kolonne, kan du ganske enkelt erstatte MAX-funksjonen med MIN-funksjonen. Formelen i J6 er:

=MIN(INDEX(data,0,MATCH(J4,header,0)))

Med FILTER

Den nye FILTER-funksjonen kan også brukes til å løse dette problemet, siden FILTER kan filtrere data etter rad eller kolonne. Trikset er å lage et logisk filter som ekskluderer andre kolonner. COUNTIF fungerer bra i dette tilfellet, men det må konfigureres "bakover", med J4 som område, og overskrift for kriterier:

=MAX(FILTER(data,COUNTIF(J4,header)))

Etter at COUNTIF har kjørt, har vi:

=MAX(FILTER(data,(0,0,1,0,0)))

Og FILTER leverer 3. kolonne til MAX, samme som INDEX-funksjonen ovenfor.

Som et alternativ til COUNTIF kan du bruke ISNUMBER + MATCH i stedet:

=MAX(FILTER(data,ISNUMBER(MATCH(header,J4,0))))

MATCH-funksjonen er igjen satt opp "bakover", slik at vi får en matrise med 5 verdier som vil tjene som det logiske filteret. Etter ISNUMBER og MATCH har vi:

=MAX(FILTER(data,(FALSE,FALSE,TRUE,FALSE,FALSE)))

Og FILTER leverer igjen 3. kolonne til MAX.

Interessante artikler...