Excel-formel: Tæl celler, der indeholder enten x eller y -

Generisk formel

=SUMPRODUCT(--((ISNUMBER(FIND("abc",rng)) + ISNUMBER(FIND("def",rng)))>0))

Resumé

For at tælle celler, der indeholder enten x eller y, kan du bruge en formel baseret på SUMPRODUCT-funktionen. I det viste eksempel er formlen i celle F5:

=SUMPRODUCT(--((ISNUMBER(FIND("abc",B5:B11))+ISNUMBER(FIND("def",B5:B11)))>0))

Dette er encelleformelopløsningen, forklaret nedenfor. Det er også muligt at bruge en enklere formel baseret på en hjælpekolonne, også forklaret nedenfor.

Forklaring

Når du tæller celler med "ELLER logik", skal du være forsigtig med ikke at fordoble antallet. Hvis du f.eks. Tæller celler, der indeholder "abc" eller "def", kan du ikke bare tilføje to COUNTIF-funktioner, fordi du muligvis dobbelt tæller celler, der indeholder både "abc" og "def".

Encelleopløsning

For en enkelt formel kan du bruge SUMPRODUCT med ISNUMBER + FIND. Formlen i F5 er:

=SUMPRODUCT(--((ISNUMBER(FIND("abc",B5:B11)) + ISNUMBER(FIND("def",B5:B11)))>0))

Denne formel er baseret på formlen forklaret her, der lokaliserer tekst inde i en celle:

ISNUMBER(FIND("abc",B5:B11)

Når der gives en række celler, returnerer dette uddrag en matrix med SAND / FALSK-værdier, en værdi for hver celle i området. Da vi bruger dette to gange (en gang for "abc" og en gang for "def"), får vi to arrays.

Derefter tilføjer vi disse arrays sammen (med +), hvilket skaber et nyt enkelt array af tal. Hvert nummer i denne matrix er resultatet af at tilføje de SANDE og FALSKE værdier i de oprindelige to arrays sammen. I det viste eksempel ser det resulterende array sådan ud:

(2;0;2;0;1;0;2)

Vi er nødt til at tilføje disse tal, men vi vil ikke fordoble antallet. Så vi er nødt til at sikre, at enhver værdi større end nul bare tælles en gang. For at gøre det tvinger vi alle værdier til SAND eller FALSK med "> 0", og tvinger derefter til 1/0 med dobbeltnegativet (-).

Endelig returnerer SUMPRODUCT summen af ​​alle værdier i arrayet.

Hjælpesøjleopløsning

Med en hjælpekolonne til kontrol af hver celle individuelt er problemet mindre komplekst. Vi kan bruge COUNTIF med to værdier (leveres som en "arraykonstant"). Formlen i C5 er:

=--(SUM(COUNTIF(B5,("*abc*","*def*")))>0)

COUNTIF returnerer en matrix, der indeholder to elementer: et antal for "abc" og et antal for "def". For at forhindre dobbeltoptælling tilføjer vi elementerne og tvinger resultatet til SAND / FALSK med "> 0". Endelig konverterer vi de SANDE / FALSKE værdier til 1'er og 0'er med et dobbelt negativt (-).

Det endelige resultat er enten 1 eller 0 for hver celle. For at få et total for alle celler i området skal du blot summere hjælpekolonnen.

Interessante artikler...