Excel COUNTIF ja COUNTIFS OR-logiikan avulla

  • Jaa Tämä
Michael Brown

Ohjeessa kerrotaan, miten Excelin COUNTIF- ja COUNTIFS-funktioita käytetään solujen laskemiseen useilla OR-ehdoilla, esimerkiksi jos solu sisältää X, Y tai Z.

Kuten kaikki tietävät, Excelin COUNTIF-funktio on suunniteltu laskemaan soluja vain yhden kriteerin perusteella, kun taas COUNTIFS arvioi useita kriteerejä AND-logiikalla. Mutta entä jos tehtäväsi vaatii OR-logiikkaa - kun useita ehtoja on annettu, mikä tahansa niistä voi vastata laskentaan?

Tähän tehtävään on olemassa muutamia mahdollisia ratkaisuja, ja tämä opetusohjelma käsittelee niitä kaikkia yksityiskohtaisesti. Esimerkit edellyttävät, että sinulla on hyvät tiedot molempien funktioiden syntaksista ja yleisistä käyttötavoista. Jos näin ei ole, sinun kannattaa ehkä aloittaa perusasioiden kertaaminen:

Excel COUNTIF-funktio - laskee solut, joissa on yksi kriteeri.

Excel COUNTIFS-toiminto - laskee solut, joissa on useita AND-kriteerejä.

Nyt kun kaikki ovat samoilla linjoilla, siirrytään asiaan:

    Laske solut, joissa on OR-ehdot Excelissä

    Tämä jakso kattaa yksinkertaisimman skenaarion - sellaisten solujen laskemisen, jotka täyttävät minkä tahansa (vähintään yhden) määritetyistä ehdoista.

    Kaava 1. COUNTIF + COUNTIF

    Helpoin tapa laskea soluja, joissa on yksi tai toinen arvo (Countif a tai b ) on kirjoittaa tavallinen COUNTIF-kaava, joka laskee jokaisen kohteen erikseen ja laskee tulokset yhteen:

    COUNTIF( alue , kriteeri1 ) + COUNTIF( alue , kriteeri2 )

    Selvitetään esimerkiksi, kuinka monta sarakkeen A solua sisältää joko "omenoita" tai "banaaneja":

    =COUNTIF(A:A, "omenat") + COUNTIF(A:A, "banaanit")

    Todellisissa työtaulukoissa on hyvä käytäntö toimia mieluummin alueilla kuin kokonaisilla sarakkeilla, jotta kaava toimisi nopeammin. Jos haluat säästää kaavan päivittämiseltä aina kun olosuhteet muuttuvat, kirjoita kiinnostavat kohteet ennalta määritettyihin soluihin, esimerkiksi F1 ja G1, ja viittaat näihin soluihin. Esimerkiksi:

    =COUNTIF(A2:A10, F1) + COUNTIF(A2:A10, G1)

    Tämä tekniikka toimii hyvin parille kriteerille, mutta kolmen tai useamman COUNTIF-funktion lisääminen tekee kaavasta liian hankalan. Tässä tapauksessa sinun on parempi valita jokin seuraavista vaihtoehdoista.

    Kaava 2. COUNTIF, jossa on array-vakio

    Tässä on tiiviimpi versio Excelin SUMIF- ja OR-ehtojen kaavasta:

    SUM(COUNTIF( alue , { kriteeri1 , kriteeri2 , kriteeri3 , ...}))

    Kaava on rakennettu seuraavasti:

    Ensin paketoit kaikki ehdot array-vakioksi - yksittäiset kohteet erotetaan pilkulla ja array suljetaan sulkeisiin, kuten {"omenat", "banaanit", "sitruunat"}.

    Sen jälkeen sisällytät array-vakion kriteerit tavallisen COUNTIF-kaavan argumentti: COUNTIF(A2:A10, {"omenat", "banaanit", "sitruunat"})

    Lopuksi vääristä COUNTIF-kaava SUM-funktiossa. Se on tarpeen, koska COUNTIF palauttaa kolme erillistä lukua "omenoille", "banaaneille" ja "sitruunoille", ja sinun on laskettava nämä luvut yhteen.

    Täydellinen kaavamme on seuraava:

    =SUM(COUNTIF(A2:A10,{"omenat", "banaanit", "sitruunat"}))

    Jos haluat mieluummin antaa kriteerisi alueelliset viittaukset , sinun on syötettävä kaava näppäimillä Ctrl + Shift + Enter, jotta siitä tulee sarjakaava. Esimerkiksi:

    =SUM(COUNTIF(A2:A10,F1:H1))

    Huomaa alla olevassa kuvakaappauksessa olevat sulkeet - se on selvin merkki siitä, että Excelissä on matriisikaava:

    Kaava 3. SUMPRODUCT

    Toinen tapa laskea soluja Excelissä OR-logiikalla on käyttää SUMPRODUCT-funktiota tällä tavalla:

    SUMPRODUCT(1*(( alue ={ kriteeri1 , kriteeri2 , kriteeri3 , ...}))

    Logiikan havainnollistamiseksi tämä voidaan kirjoittaa myös seuraavasti:

    SUMPRODUCT(( alue = kriteeri1 ) + ( alue = kriteeri2 ) + ...)

    Kaava testaa jokaisen alueen solun jokaista kriteeriä vastaan ja palauttaa TRUE, jos kriteeri täyttyy, ja muuten FALSE. Välituloksena saadaan muutama TRUE- ja FALSE-arvoja sisältävä matriisi (matriisien määrä on yhtä suuri kuin kriteerien määrä). Sitten lasketaan yhteen samassa asemassa olevat matriisin elementit, eli kaikkien matriisien ensimmäiset elementit, toiset elementit jne.lisäysoperaatio muuntaa loogiset arvot numeroiksi, joten lopputuloksena on yksi matriisi, jossa on 1 (jokin kriteereistä täsmää) ja 0 (mikään kriteereistä ei täsmää). Koska kaikki kriteerit testataan samoja soluja vastaan, tuloksena syntyvässä matriisissa ei voi mitenkään esiintyä mitään muuta numeroa - vain yhdessä alkuperäisessä matriisissa voi olla TRUE tietyssä paikassa, muissa on FALSE. Lopuksi SUMPRODUCTlaskee tuloksena syntyvän joukon elementit yhteen, ja saat halutun lukumäärän.

    Ensimmäinen kaava toimii samalla tavalla sillä erotuksella, että se palauttaa yhden 2-ulotteisen TRUE- ja FALSE-arvojen joukon, joka kerrotaan 1:llä loogisten arvojen muuntamiseksi vastaavasti 1:ksi ja 0:ksi.

    Esimerkkiaineistoon sovellettuna kaavat ovat seuraavanlaiset:

    =SUMPRODUCT(1*(A2:A10={"omenat", "banaanit", "sitruunat"}))

    Tai

    =SUMPRODUCT((A2:A10="omenat") + (A2:A10="banaanit") + (A2:A10="sitruunat")))

    Korvaa kovakoodattu array-vakio range-viittauksella, niin saat vielä tyylikkäämmän ratkaisun:

    =SUMPRODUCT(1*( A2:A10=F1:H1))

    Huomautus: SUMPRODUCT-funktio on hitaampi kuin COUNTIF, minkä vuoksi tätä kaavaa on parasta käyttää suhteellisen pienille tietueille.

    Laske soluja sekä OR- että AND-logiikalla

    Kun työskentelet suurten tietokokonaisuuksien kanssa, joissa on monitasoisia ja ristikkäisiä suhteita elementtien välillä, on todennäköistä, että sinun on laskettava soluja, joissa on OR- ja AND-ehtoja kerrallaan.

    Esimerkkinä saadaan "toimitettujen" "omenoiden", "banaanien" ja "sitruunoiden" määrä. Miten se tehdään? Käännetään ensin ehdot Excelin kielelle:

    • Sarake A: "omenat" tai "banaanit" tai "sitruunat".
    • Sarake C: "toimitettu"

    Toisesta näkökulmasta katsottuna meidän on laskettava rivit, joissa on "omenat ja toimitettu" TAI "banaanit ja toimitettu" TAI "sitruunat ja toimitettu". Näin ollen tehtävässä on kyse sellaisten solujen laskemisesta, joissa on kolme TAI-ehtoa - täsmälleen sama, mitä teimme edellisessä jaksossa! Ainoa ero on, että käytät COUNTIFS:ia COUNTIF:in sijasta arvioidaksesi AND-kriteeriä kussakin TAI-ehdossa.

    Kaava 1. COUNTIFS + COUNTIFS

    Se on pisin kaava, joka on helpoin kirjoittaa :)

    =COUNTIFS(A2:A10, "omenat", C2:C10, "toimitettu") + COUNTIFS(A2:A10, "banaanit", C2:C10, "toimitettu")) + COUNTIFS(A2:A10, "sitruunat", C2:C10, "toimitettu")))

    Alla olevassa kuvakaappauksessa näkyy sama kaava soluviittauksineen:

    =COUNTIFS(A2:A10, K1, C2:C10, K2) + COUNTIFS(A2:A10, L1, C2:C10, K2) + COUNTIFS(A2:A10, M1,C2:C10, K2)

    Kaava 2. COUNTIFS, jossa on array-vakio

    AND/OR-logiikkaa käyttävä kompaktimpi COUNTIFS-kaava voidaan luoda pakkaamalla OR-kriteerit array-vakioon:

    =SUM(COUNTIFS(A2:A10, {"omenat", "banaanit", "sitruunat"}, C2:C10, "toimitettu"))

    Kun kriteerinä käytetään alueviittausta, tarvitaan matriisikaava, joka täytetään painamalla Ctrl + Shift + Enter :

    =SUM(COUNTIFS(A2:A10,F1:H1,C2:C10,F2))

    Vihje. Tarvittaessa voit vapaasti käyttää jokerimerkit Jos haluat esimerkiksi laskea kaikenlaisia banaaneja, kuten "vihreitä banaaneja" tai "kultasormibanaaneja", voit käyttää tätä kaavaa:

    =SUM(COUNTIFS(A2:A10, {"omenat", "*banaanit*", "sitruunat"}, C2:C10, "toimitettu"))

    Samalla tavalla voit rakentaa kaavan, jolla voit laskea soluja muiden kriteerityyppien perusteella. Jos haluat esimerkiksi laskea ne "omenat", "banaanit" tai "sitruunat", jotka on "toimitettu" ja joiden määrä on suurempi kuin 200, lisää COUNTIFS:iin yksi kriteerialue/kriteeripari lisää:

    =SUM(COUNTIFS(A2:A10, {"omenat", "*banaanit*", "sitruunat"}, C2:C10, "toimitettu", B2:B10, ">200")))

    Tai käytä tätä sarjakaavaa (syötetään näppäimillä Ctrl + Shift + Enter ):

    =SUM(COUNTIFS(A2:A10,F1:H1,C2:C10,F2, B2:B10, ">"&F3))

    Laske solut, joilla on useita TAI-ehtoja

    Edellisessä esimerkissä olet oppinut testaamaan yhtä TAI-ehtojen joukkoa. Mutta entä jos sinulla on kaksi tai useampia joukkoja ja haluat saada kaikkien mahdollisten TAI-suhteiden kokonaismäärän?

    Riippuen siitä, kuinka monta ehtoa sinun on käsiteltävä, voit käyttää joko COUNTIFS:ia, jossa on array-vakio, tai SUMPRODUCT:ia, jossa on ISNUMBER MATCH. Ensin mainittu on suhteellisen helppo rakentaa, mutta se on rajoitettu vain kahteen TAI-ehtosarjaan. Jälkimmäinen voi arvioida minkä tahansa määrän ehtoja (kohtuullinen määrä, kun otetaan huomioon, että Excel rajoittaa 255 argumenttia ja kaavan kokonaispituuden 8192 merkkiä),mutta kaavan logiikan ymmärtäminen voi vaatia hieman vaivannäköä.

    Lasketaan solut 2:lla OR-ehdolla

    Kun on kyse vain kahdesta TAI-kriteeriryhmästä, lisää vain yksi vakio lisää edellä mainittuun COUNTIFS-kaavaan.

    Jotta kaava toimisi, tarvitaan yksi pieni, mutta ratkaiseva muutos: käytetään horisontaalinen sarja (elementit pilkulla erotettuna) yhden kriteeristön osalta ja pystysuora sarja (elementit erotettu puolipisteillä) toiselle. Tämä käskee Exceliä "parittamaan" tai "ristiinlaskemaan" kahden ruudukon elementit ja palauttamaan kaksiulotteisen ruudukon tuloksista.

    Lasketaan esimerkiksi "omenat", "banaanit" tai "sitruunat", jotka on joko "toimitettu" tai "matkalla":

    =SUM(COUNTIFS(A2:A10, {"omenat", "banaanit", "sitruunat"}, B2:B10, {"toimitettu"; "matkalla"}))

    Huomaa puolipiste toisessa array-vakiossa:

    Koska Excel on 2-ulotteinen ohjelma, ei ole mahdollista rakentaa 3-ulotteista tai 4-ulotteista joukkoa, ja siksi tämä kaava toimii vain kahdella OR-kriteerillä. Jos haluat laskea useammilla kriteereillä, sinun on siirryttävä monimutkaisempaan SUMPRODUCT-kaavaan, joka selitetään seuraavassa esimerkissä.

    Laske solut, joilla on useita OR-ehtoja

    Jos haluat laskea solut, joissa on enemmän kuin kaksi sarjaa OR-kriteerejä, käytä SUMPRODUCT-funktiota yhdessä ISNUMBER MATCH -toiminnon kanssa.

    Lasketaan esimerkiksi "omenat", "banaanit" tai "sitruunat", jotka on joko "toimitettu" tai "kuljetuksessa" ja jotka on pakattu joko "pussiin" tai "lokeroon":

    =SUMPRODUCT(ISNUMBER(MATCH(A2:A10,{"omenat", "banaanit", "sitruunat"},0))*

    ISNUMBER(MATCH(B2:B10,{"laukku", "tarjotin"},0))*

    ISNUMBER(MATCH(C2:C10,{"toimitettu", "kuljetuksessa"},0))))

    Kaavan ytimessä MATCH-funktio tarkistaa kriteerit vertaamalla jokaista määritetyn alueen solua vastaavaan array-vakioon. Jos vastaavuus löytyy, se palauttaa arvon suhteellisen sijainnin, jos array, muutoin N/A. ISNUMBER muuntaa nämä arvot TRUEksi ja FALSEksi, jotka vastaavat 1:tä ja 0:ta. SUMPRODUCT jatkaa tästä ja kertoo arrayjen arvon.Koska nollalla kertominen antaa nollan, vain ne solut, joissa on 1 kaikissa ruuduissa, säilyvät ja lasketaan yhteen.

    Alla oleva kuvakaappaus näyttää tuloksen:

    Näin käytät COUNTIF- ja COUNTIFS-funktioita Excelissä laskeaksesi soluja, joissa on useita AND- ja OR-ehtoja. Jos haluat tutustua tarkemmin tässä opetusohjelmassa käsiteltyihin kaavoihin, voit ladata alla olevan esimerkkityökirjan. Kiitän sinua lukemisesta ja toivon, että näemme sinut blogissamme ensi viikolla!

    Harjoitustyökirja

    Excel COUNTIF OR-ehtojen kanssa - esimerkkejä (.xlsx-tiedosto)

    Michael Brown on omistautunut teknologian harrastaja, jolla on intohimo yksinkertaistaa monimutkaisia ​​prosesseja ohjelmistotyökalujen avulla. Yli vuosikymmenen kokemuksella teknologia-alalta hän on hionut taitojaan Microsoft Excelissä ja Outlookissa sekä Google Sheetsissä ja Docsissa. Michaelin blogi on omistettu jakamaan tietojaan ja asiantuntemustaan ​​muiden kanssa, ja se tarjoaa helposti seurattavia vinkkejä ja opetusohjelmia tuottavuuden ja tehokkuuden parantamiseksi. Olitpa kokenut ammattilainen tai aloittelija, Michaelin blogi tarjoaa arvokkaita oivalluksia ja käytännön neuvoja, joiden avulla saat kaiken irti näistä tärkeistä ohjelmistotyökaluista.