
Generisk formel
(=SUM(--(MMULT(--(criteria),TRANSPOSE(COLUMN(data)^0))>=N)))
Resumé
For at tælle rækker, der indeholder specifikke værdier, kan du bruge en matrixformel baseret på funktionerne MMULT, TRANSPOSE, COLUMN og SUM. I det viste eksempel er formlen i K6:
(=SUM(--(MMULT(--((data)=2)))
hvor data er det navngivne område C5: I14.
Bemærk, dette er en matrixformel og skal indtastes med kontrolskiftindtastning.
Forklaring
Når man arbejder indefra og ud, er de logiske kriterier, der anvendes i denne formel:
(data)<70
hvor data er det navngivne område C5: I14. Dette genererer et TRUE / FALSE-resultat for hver værdi i data, og det dobbelte negative tvinger de TRUE FALSE-værdier til 1 og 0 for at give en matrix som denne:
(0,0,0,1,0,1,0;0,0,0,0,0,0,0;0,0,0,0,0,0,0;0,1,1,0,0,1,0;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;0,0,0,0,0,0,0)
Ligesom de originale data er denne matrix 10 rækker med 7 kolonner (10 x 7) og går ind i MMULT-funktionen som array1 . Det næste argument, array2 oprettes med:
TRANSPOSE(COLUMN(data)^0))
Her bruges COLUMN-funktionen som en måde at generere et numerisk array med den rigtige størrelse, da matrixmultiplikation kræver søjletællingen i array1 (7) for at svare til rækkeantalet i array2 .
Funktionen COLUMN returnerer arrayet med 7 søjler (3,4,5,6,7,8,9). Ved at hæve denne matrix til en effekt på nul, ender vi med en 7 x 1 matrix som (1,1,1,1,1,1,1), som TRANSPOSE ændres til en 1 x 7 matrix som (1; 1 ; 1; 1; 1; 1; 1).
MMULT kører derefter og returnerer et 10 x 1 array-resultat (2; 0; 0; 3; 0; 0; 0; 1; 0; 0), som behandles med det logiske udtryk> = 2, hvilket resulterer i en matrix med TRUE FALSE værdier:
(SAND; FALSK; FALSK; SAND; FALSK; FALSK; FALSK; FALSK; FALSK; FALSK).
Vi tvinger igen SAND FALSK til 1 og 0 med en dobbelt negativ for at få en endelig matrix inde i SUM:
=SUM((1;0;0;1;0;0;0;0;0;0))
Hvilket korrekt returnerer 2, antallet af navne med mindst 2 scorer under 70.