
Generieke formule
(=MAX(IF(MOD(COLUMN(rng)-COLUMN(rng.first)+1,n)=0,rng)))
Samenvatting
Om het maximum van elke n-de kolom te krijgen, kunt u een matrixformule gebruiken op basis van de functies MAX, MOD en COLUMN. In het getoonde voorbeeld is de formule in M5:
=MAX(IF(MOD(COLUMN(B5:K5)-COLUMN(B5)+1,L5)=0,B5:K5))
Opmerking: dit is een matrixformule en moet worden ingevoerd met control + shift + enter.
Uitleg
Deze formule gebruikt de functies MOD en COLUMN om waarden uit de n-de kolommen uit te filteren en voert vervolgens MAX uit op het resultaat.
De sleutel is dit fragment:
MOD(COLUMN(B5:K5)-COLUMN(B5)+1,L5)=0
Hier gebruikt de formule de functie COLUMN om een set "relatieve" kolomnummers voor het bereik te krijgen (hier in detail uitgelegd) dat er als volgt uitziet:
(1,2,3,4,5,6,7,8,9,10)
Deze array gaat naar de MOD-functie als het getalargument:
MOD((1,2,3,4,5,6,7,8,9,10),K5)=0
waarbij L5 de waarde is die moet worden gebruikt voor "n-de". De MOD-functie retourneert de rest voor elk kolomnummer gedeeld door N. Dus als N = 3, zal MOD een array als volgt retourneren:
(1,2,0,1,2,0,1,2,0,1)
Merk op dat er nullen verschijnen voor kolommen 3, 6, 9, enz., Die overeenkomen met elke 3e kolom. Deze array wordt vergeleken met nul met de logische uitdrukking = 0 om een WAAR te forceren wanneer de rest nul is en een ONWAAR wanneer dat niet het geval is. Deze waarden gaan als logische test naar de ALS-functie. De ALS-functie filtert dienovereenkomstig, dus alleen waarden in het oorspronkelijke bereik in n-de kolommen komen in de laatste array. De andere waarden worden FALSE.
Als n = 3, ziet de laatste array binnen MAX er als volgt uit:
MAX((FALSE,FALSE,11,FALSE,FALSE,8,FALSE,FALSE,19,FALSE))
Ten slotte negeert de MAX-functie FALSE-waarden en retourneert het maximum van de resterende waarden, 19.
Max. Van elke andere kolom
Als u het maximum van elke andere kolom wilt krijgen, past u deze formule zo nodig aan, aangezien u begrijpt dat de formule automatisch 1 toewijst aan de eerste kolom in het bereik. Gebruik om het maximum van EVEN kolommen te krijgen:
(=MAX(IF(MOD(COLUMN(A1:Z1)-COLUMN(A1)+1,2)=0,rng)))
Gebruik om het maximale aantal ODD-kolommen te krijgen:
(=MAX(IF(MOD(COLUMN(A1:Z1)-COLUMN(A1)+1,2)=1,rng)))