Excel-formel: Räkna rader som innehåller specifika värden -

Generisk formel

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

Sammanfattning

För att räkna rader som innehåller specifika värden kan du använda en matrisformel baserad på funktionerna MMULT, TRANSPOSE, COLUMN och SUM. I exemplet som visas är formeln i G5:

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

där data är det namngivna området B4: B12.

Obs: detta är en matrisformel och måste anges med kontrollskiftet.

Förklaring

Arbetar inifrån och ut, de logiska kriterierna som används i denna formel är:

--(data=90)

där data är det namngivna området B4: D12. Detta genererar ett SANT / FALSKT resultat för varje värde i data, och det dubbla negativet tvingar de Sanna FALSKA värdena till 1 och 0 för att ge en matris så här:

(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)

Liksom originaldata är denna array 9 rader med 3 kolumner (9 x 3) och går in i MMULT-funktionen som array1 .

Array2 härrör från:

TRANSPOSE(COLUMN(data))

Detta är den knepiga och roliga delen av denna formel. COLUMN-funktionen används enkelt för enkelhets skull som ett sätt att generera en numerisk matris av rätt storlek. För att utföra matrixmultiplikation med MMULT måste kolumnantalet i array1 (3) vara lika med radantalet i array2 .

KOLONN returnerar 3-kolumnmatrisen (2,3,4) och TRANSPOSE ändrar denna matris till 3-radig matris (2; 3; 4). MMULT körs sedan och returnerar ett 9 x 1 array-resultat:

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

Vi söker efter poster som inte är noll med> 0 och tvingar igen TRUE FALSE till 1 och 0 med en dubbel negativ för att få en slutlig array i SUM:

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

I denna slutliga matris representerar en 1 en rad där det logiska testet (data = 90) returnerade sant. Summan som returneras av SUM är ett antal av alla rader som innehåller antalet 90.

Bokstavlig innehåller

Om du behöver söka efter specifika textvärden, med andra ord, bokstavligen kontrollera om celler innehåller vissa textvärden, kan du ändra logiken i formeln på denna sida för att använda ISNUMBER- och SÖK-funktionen. För att till exempel räkna celler / rader som innehåller "apple" kan du använda:

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

Detaljer om hur denna formel fungerar här.

Bra länkar

Stackoverflow-svar med XOR LX

Intressanta artiklar...