
Generisk formel
=SUMPRODUCT(--((ISNUMBER(FIND("abc",rng)) + ISNUMBER(FIND("def",rng)))>0))
Sammanfattning
För att räkna celler som innehåller antingen x eller y kan du använda en formel baserad på SUMPRODUCT-funktionen. I exemplet som visas är formeln i cell F5:
=SUMPRODUCT(--((ISNUMBER(FIND("abc",B5:B11))+ISNUMBER(FIND("def",B5:B11)))>0))
Detta är den enkla cellformellösningen, som förklaras nedan. Det är också möjligt att använda en enklare formel baserad på en hjälpkolumn, som också förklaras nedan.
Förklaring
När du räknar celler med "ELLER logik" måste du vara försiktig så att du inte dubbelt räknar. Om du till exempel räknar celler som innehåller "abc" eller "def", kan du inte bara lägga till två COUNTIF-funktioner, för du kan dubbla räkna celler som innehåller både "abc" och "def".
Encellslösning
För en enda formel kan du använda SUMPRODUCT med ISNUMBER + FIND. Formeln i F5 är:
=SUMPRODUCT(--((ISNUMBER(FIND("abc",B5:B11)) + ISNUMBER(FIND("def",B5:B11)))>0))
Denna formel är baserad på den formel som förklaras här som lokaliserar text inuti en cell:
ISNUMBER(FIND("abc",B5:B11)
När ett cellintervall ges kommer detta kodavsnitt att returnera en matris med SANT / FALSKA värden, ett värde för varje cell i intervallet. Eftersom vi använder detta två gånger (en gång för "abc" och en gång för "def") får vi två matriser.
Därefter lägger vi till dessa matriser tillsammans (med +), vilket skapar en ny enskild grupp med siffror. Varje nummer i denna matris är resultatet av att man sätter SANT och FALSKA värden i de två ursprungliga grupperna tillsammans. I exemplet som visas ser den resulterande matrisen ut så här:
(2;0;2;0;1;0;2)
Vi måste lägga till dessa siffror, men vi vill inte räkna dubbelt. Så vi måste se till att något värde större än noll bara räknas en gång. För att göra det tvingar vi alla värden till SANT eller FALSKT med "> 0" och tvingar sedan till 1/0 med det dubbla negativa (-).
Slutligen returnerar SUMPRODUCT summan av alla värden i matrisen.
Hjälpkolonnlösning
Med en hjälpkolumn för att kontrollera varje cell individuellt är problemet mindre komplicerat. Vi kan använda COUNTIF med två värden (tillhandahålls som en "arraykonstant"). Formeln i C5 är:
=--(SUM(COUNTIF(B5,("*abc*","*def*")))>0)
COUNTIF returnerar en matris som innehåller två objekt: ett antal för "abc" och ett antal för "def". För att förhindra dubbelräkning lägger vi till objekten och tvingar sedan resultatet till SANT / FALSKT med "> 0". Slutligen konverterar vi SANT / FALSKA värden till 1 och 0 med en dubbel negativ (-).
Det slutliga resultatet är antingen 1 eller 0 för varje cell. För att få en summa för alla celler i intervallet summerar du bara hjälpkolumnen.