Excel-formule: tel rijen die specifieke waarden bevatten -

Generieke formule

=SUM(--(MMULT(--(criteria),TRANSPOSE(COLUMN(data)))>0))

Samenvatting

Als u rijen wilt tellen die specifieke waarden bevatten, kunt u een matrixformule gebruiken op basis van de functies MMULT, TRANSPOSE, COLUMN en SUM. In het getoonde voorbeeld is de formule in G5:

(=SUM(--(MMULT(--(data=90),TRANSPOSE(COLUMN(data)))>0)))

waarbij data het benoemde bereik B4: B12 is.

Opmerking: dit is een matrixformule en moet worden ingevoerd met control shift enter.

Uitleg

Als je van binnen naar buiten werkt, zijn de logische criteria die in deze formule worden gebruikt:

--(data=90)

waarbij data het benoemde bereik B4: D12 is. Dit genereert een TRUE / FALSE-resultaat voor elke waarde in gegevens, en het dubbele negatieve resultaat dwingt de TRUE FALSE-waarden naar 1 en 0 om een ​​array als deze te geven:

(1,0,0;0,0,0;0,1,1;1,0,0;0,0,0;0,0,0;0,0,0;0,0,0;0,0,1)

Net als de originele gegevens is deze array 9 rijen bij 3 kolommen (9 x 3) en gaat deze in de MMULT-functie als array1 .

Array2 is afgeleid met:

TRANSPOSE(COLUMN(data))

Dit is het lastige en leuke deel van deze formule. De functie COLUMN wordt eenvoudig voor het gemak gebruikt als een manier om een ​​numerieke reeks van de juiste grootte te genereren. Om matrixvermenigvuldiging met MMULT uit te voeren, moet het aantal kolommen in array1 (3) gelijk zijn aan het aantal rijen in array2 .

COLUMN retourneert de matrix met 3 kolommen (2,3,4) en TRANSPONEREN wijzigt deze matrix in de matrix met 3 rijen (2; 3; 4). MMULT wordt vervolgens uitgevoerd en retourneert een 9 x 1 matrixresultaat:

=SUM(--((2;0;7;2;0;0;0;0;4)>0))

We controleren op niet-nul-items met> 0 en dwingen opnieuw TRUE FALSE naar 1 en 0 met een dubbel negatief om een ​​laatste array binnen SUM te krijgen:

=SUM((1;0;1;1;0;0;0;0;1))

In deze laatste array staat een 1 voor een rij waarin de logische test (data = 90) true retourneert. Het totaal dat door SUM wordt geretourneerd, is een telling van alle rijen die het getal 90 bevatten.

Letterlijk bevat

Als u moet controleren op specifieke tekstwaarden, met andere woorden, letterlijk controleren of cellen bepaalde tekstwaarden bevatten, kunt u de logica in de formule op deze pagina wijzigen om de functie ISGETAL en ZOEKEN te gebruiken. Om bijvoorbeeld cellen / rijen te tellen die "appel" bevatten, kunt u het volgende gebruiken:

=ISNUMBER(SEARCH("apple",data))

Details over hoe deze formule hier werkt.

Goede links

Stackoverflow-antwoord door XOR LX

Interessante artikelen...