Excel-formel: Tell rader med ELLER logikk -

Innholdsfortegnelse

Sammendrag

For å telle rader med ELLER logikk, kan du bruke en formel basert på SUMPRODUCT-funksjonen. I eksemplet vist er formelen i G6:

=SUMPRODUCT((group="a")*((color1="red")+(color2="red")>0))

hvor gruppe (B5: B15), farge1 (C5: C15) og farge2 (D5: D15) er kalt områder.

Forklaring

Et av de vanskeligste problemene i Excel er å telle rader i et datasett med "ELLER logikk". Det er to grunnleggende scenarier: (1) du vil telle rader hvor en verdi i en kolonne er "x" ELLER "y" (2) du vil telle rader der en verdi, "x", finnes i en kolonne ELLER en annen .

I dette eksemplet er målet å telle rader der group = "a" OG Color1 ELLER Color2 er "rød". Dette betyr at vi jobber med scenario 2 ovenfor.

Med COUNTIFS

Først kan du nå COUNTIFS-funksjonen, som håndterer flere kriterier naturlig. COUNTIFS-funksjonen føyer seg imidlertid sammen med AND-logikken, så alle kriteriene må være SANNE for å være inkludert i tellingen:

=COUNTIFS(group,"a",color1,"red",color2,"red") // returns 1

Dette gjør COUNTIFS ubrukelig, med mindre vi bruker flere forekomster av COUNTIFS:

=COUNTIFS(group,"a",color1,"red")+COUNTIFS(group,"a",color2,"red")-COUNTIFS(group,"a",color1,"red",color2,"red")

Oversettelse: telle rader hvor gruppen er "a" og farge1 er "rød" + telle rader der gruppen er "a" og farge2 er "rød" - telle rader der gruppen er "a" og farge1 er "rød" og farge2 er " rød "(for å unngå dobbel telling).

Dette fungerer, men du kan se at dette er en litt komplisert og overflødig formel.

Med boolsk logikk

En bedre løsning er å bruke boolsk logikk, og behandle resultatet med SUMPRODUCT-funksjonen. (Hvis du trenger en primer på boolsk algebra, gir denne videoen en introduksjon.) I eksemplet vist er formelen i G6:

=SUMPRODUCT((group="a")*((color1="red")+(color2="red")>0))

hvor gruppe (B5: B15), farge1 (C5: C15) og farge2 (D5: D15) er kalt områder.

Den første delen av problemet er å teste for gruppe = "a" som vi gjør slik:

(group="a")

Fordi området B5: B15 inneholder 11 celler, returnerer dette uttrykket en matrise med 11 SANNE og FALSE verdier slik:

(TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE)

Hver SANT representerer en rad der gruppen er "A".

Deretter må vi se etter verdien "rød" i enten kolonne1 eller kolonne2. Vi gjør dette med to uttrykk sammenføyd med tillegg (+), siden tillegg tilsvarer ELLER logikk i boolsk algebra:

(color1="red")+(color2="red")

Excel evaluerer automatisk SANTE og FALSE verdier som 1s og 0s under en hvilken som helst matematikkoperasjon, så resultatet fra ovennevnte uttrykk er en matrise som dette:

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

Det første tallet i matrisen er 2, fordi både Color1 og Color2 er "rød" på første rad. Av grunner som er forklart nedenfor, må vi beskytte oss mot denne situasjonen ved å se etter verdier større enn null:

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

Nå har vi igjen en rekke sanne og falske verdier:

(TRUE;FALSE;FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE)

Tabellen nedenfor oppsummerer hvordan Excel evaluerer fargelogikken forklart ovenfor:

På dette punktet har vi resultater fra å teste Group = "a" i en matrise:

(TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE)

Og resultater fra å teste "rødt" i Color1 eller Color2 i en annen matrise:

(TRUE;FALSE;FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE)

Det neste trinnet er å bringe disse to matriser sammen med "OG logikk". For å gjøre dette bruker vi multiplikasjon (*), siden multiplikasjon tilsvarer OG-logikk i boolsk algebra.

Etter å ha multiplisert de to gruppene sammen, har vi en enkelt matrise på 1s og 0s, som leveres direkte til SUMPRODUCT-funksjonen:

=SUMPRODUCT((1;0;0;0;1;0;0;0;0;0;0))

SUMPRODUCT-funksjonen returnerer summen av tall, 2, som et endelig resultat. Dette er antall rader der group = "a" OG Color1 ELLER Color2 er "rød".

For å unngå dobbelttelling

Vi ønsker ikke å doble telle rader der både Color1 og Color2 er "røde". Dette er grunnen til at vi sjekker resultatene fra (color1 = "red") + (color2 = "red") for verdier større enn null i koden nedenfor:

((color1="red")+(color2="red"))>0

Uten denne kontrollen vil 2 fra første rad i dataene dukke opp i den endelige matrisen, og føre til at formelen feilaktig returnerer 3 som endelig telling.

FILTER-alternativ

En fin ting med boolsk logikk er at den fungerer perfekt med Excels nyeste funksjoner, som XLOOKUP og FILTER. For eksempel kan FILTER-funksjonen bruke nøyaktig samme logikk som forklart ovenfor for å trekke ut samsvarende rader:

=FILTER(B5:D15,(group="a")*((color1="red")+(color2="red")>0))

Resultatet fra FILTER er de to radene som oppfyller kriteriene, som vist nedenfor:

Hvis du vil lære mer om disse nye funksjonene, har vi oversikt og videoopplæring.

Interessante artikler...