Turinys
Vadovėlyje pateikiama keletas "Excel if contains" formulių pavyzdžių, kuriuose parodoma, kaip grąžinti ką nors kitame stulpelyje, jei tiksliniame ląstelėje yra reikalaujama reikšmė, kaip atlikti paiešką su daliniu atitikimu ir patikrinti kelis kriterijus naudojant OR ir AND logiką.
Viena iš dažniausiai "Excel" atliekamų užduočių - patikrinti, ar ląstelėje yra dominanti reikšmė. Kokia tai gali būti reikšmė? Tiesiog bet koks tekstas ar skaičius, konkretus tekstas arba apskritai bet kokia reikšmė (ne tuščia ląstelė).
"Excel" programoje yra keletas formulės "If cell contains" variantų, priklausomai nuo to, kokias tiksliai reikšmes norite rasti. Paprastai funkciją IF naudosite norėdami atlikti loginį testą ir grąžinti vieną reikšmę, kai sąlyga tenkinama (ląstelėje yra), ir (arba) kitą reikšmę, kai sąlyga netenkinama (ląstelėje nėra). Toliau pateikti pavyzdžiai apima dažniausiai pasitaikančius scenarijus.
Jei ląstelėje yra bet kokia reikšmė, tada
Pirmiausia pažiūrėkime, kaip rasti langelius, kuriuose yra bet kas: bet koks tekstas, skaičius ar data. Tam naudosime paprastą IF formulę, kuri tikrina, ar langeliuose nėra tuščių langelių.
IF( ląstelė "", value_to_return , "")Pavyzdžiui, norėdami B stulpelyje grąžinti "Ne tuščias", jei tos pačios eilutės A stulpelio ląstelėje yra bet kokia reikšmė, B2 įveskite šią formulę, tada dukart spustelėkite mažą žalią kvadratėlį apatiniame dešiniajame kampe, kad nukopijuotumėte formulę į stulpelį:
=IF(A2"", "Ne tuščias", "")
Rezultatas bus panašus į šį:
Jei ląstelėje yra tekstas, tada
Jei norite rasti tik langelius su teksto reikšmėmis, ignoruodami skaičius ir datas, tuomet naudokite IF kartu su funkcija ISTEXT. Čia pateikiama bendroji formulė, skirta grąžinti tam tikrą reikšmę kitoje ląstelėje, jei tikslinėje ląstelėje yra bet koks tekstas :
IF(ISTEXT( ląstelė ), value_to_return , "")Tarkime, norite į B stulpelį įterpti žodį "taip", jei A stulpelio ląstelėje yra tekstas. Norėdami tai padaryti, B2 ląstelėje įrašykite šią formulę:
=IF(ISTEXT(A2), "Taip", "")
Jei ląstelėje yra skaičius, tada
Panašiai galite nustatyti langelius su skaitinėmis reikšmėmis (skaičiais ir datomis). Tam naudokite funkciją IF kartu su ISNUMBER:
IF(ISNUMBER( ląstelė ), value_to_return , "")Toliau pateikta formulė grąžina "taip" B stulpelyje, jei atitinkamame A stulpelio langelyje yra bet koks skaičius:
=IF(ISNUMBER(A2), "Taip", "")
Jei ląstelėje yra konkretus tekstas
Rasti langelius, kuriuose yra tam tikro teksto (arba skaičių ar datų), yra paprasta. Parašykite įprastą IF formulę, kuri patikrina, ar tiksliniame langelyje yra norimo teksto, ir įveskite tekstą, kurį norite grąžinti į langelį value_if_true argumentas.
IF( ląstelė =" tekstas ", value_to_return , "")Pavyzdžiui, norėdami sužinoti, ar ląstelėje A2 yra "obuoliai", naudokite šią formulę:
=IF(A2="obuoliai", "Taip", "")
Jei ląstelėje nėra konkretaus teksto
Jei norite gauti priešingą rezultatą, t. y. grąžinti tam tikrą reikšmę į kitą stulpelį, jei tikslinėje ląstelėje nėra nurodyto teksto ("obuoliai"), atlikite vieną iš šių veiksmų.
Pateikite tuščią eilutę ("") į value_if_true argumentą ir tekstą, kurį reikia grąžinti value_if_false argumentas:
=IF(A2="obuoliai", "", "Ne obuoliai")
Arba įrašykite operatorių "nelygu" į logical_test ir tekstą, kurį reikia grąžinti value_if_true:
=IF(A2 "obuoliai", "Ne obuoliai", "")
Bet kuriuo atveju formulė duos tokį rezultatą:
Jei ląstelėje yra tekstas: formulė, kurioje atsižvelgiama į didžiąsias raides
Norėdami priversti formulę atskirti didžiąsias ir mažąsias raides, naudokite funkciją EXACT, kuri tikrina, ar dvi teksto eilutės yra visiškai vienodos, įskaitant raidžių dydžius:
=IF(EXACT(A2, "APPLES"), "Yes", "")
Taip pat galite įvesti modelio teksto eilutę į kurį nors langelį (pvz., C1), nustatyti langelio nuorodą su ženklu $ ($C$1) ir palyginti tikslinį langelį su tuo langeliu:
=IF(EXACT(A2,$C$1), "Taip", "")
Jei ląstelėje yra tam tikra teksto eilutė (dalinė atitiktis)
Baigėme trivialias užduotis ir pereiname prie sudėtingesnių ir įdomesnių :) Šiame pavyzdyje reikia trijų skirtingų funkcijų, kad sužinotume, ar tam tikras simbolis arba eilutė yra langelio turinio dalis:
IF(ISNUMBER(SEARCH(" tekstas" , ląstelė )), value_to_return ,"")Ši formulė veikia iš vidaus į išorę:
- Funkcija SEARCH ieško teksto eilutės ir, jei eilutė randama, grąžina pirmojo simbolio poziciją, priešingu atveju - #VALUE! klaidą.
- Funkcija ISNUMBER patikrina, ar SEARCH pavyko arba nepavyko. Jei SEARCH grąžino bet kokį skaičių, ISNUMBER grąžina TRUE. Jei SEARCH suklydo, ISNUMBER grąžina FALSE.
- Galiausiai funkcija IF grąžina nurodytą reikšmę ląstelėms, kurių loginio testo reikšmė yra TRUE, kitu atveju - tuščią eilutę ("").
O dabar pažiūrėkime, kaip ši bendroji formulė veikia realiuose darbalapiuose.
Jei ląstelėje yra tam tikras tekstas, įrašykite reikšmę į kitą ląstelę
Tarkime, kad A stulpelyje turite užsakymų sąrašą ir norite surasti užsakymus su konkrečiu identifikatoriumi, tarkime, "A-". Šią užduotį galima atlikti naudojant šią formulę:
=IF(ISNUMBER(SEARCH("A-",A2)), "Galioja","")
Užuot įrašę eilutę į formulę, galite ją įvesti į atskirą ląstelę (E1) ir pateikti nuorodą į tą ląstelę formulėje:
=IF(ISNUMBER(SEARCH($E$1,A2)), "Valid","")
Kad formulė veiktų teisingai, būtinai užblokuokite ląstelės, kurioje yra eilutė, adresą su ženklu $ (absoliuti ląstelės nuoroda).
Jei ląstelėje yra tam tikras tekstas, nukopijuokite jį į kitą stulpelį
Jei norite galiojančių langelių turinį nukopijuoti kur nors kitur, tiesiog nurodykite įvertintos ląstelės (A2) adresą eilutėje value_if_true argumentas:
=IF(ISNUMBER(SEARCH($E$1,A2)),A2,"")
Toliau pateiktoje ekrano nuotraukoje matyti rezultatai:
Jei ląstelėje yra konkretus tekstas: formulė, kurioje atsižvelgiama į didžiąsias raides
Abiejuose pirmiau pateiktuose pavyzdžiuose formulėse didžiosios raidės neribojamos. Kai dirbate su duomenimis, kurių didžiosios raidės neribojamos, naudokite funkciją FIND, o ne SEARCH, kad būtų galima atskirti ženklų atvejus.
Pavyzdžiui, pagal šią formulę bus identifikuojami tik užsakymai su didžiąja raide "A-", ignoruojant mažąją raidę "a-".
=IF(ISNUMBER(FIND("A-",A2)), "Galioja","")
Jei ląstelėje yra viena iš daugelio teksto eilučių (OR logika)
Norėdami nustatyti ląsteles, kuriose yra bent vienas iš daugelio ieškomų dalykų, naudokite vieną iš šių formulių.
IF ARBA ISNUMBER paieškos formulė
Akivaizdžiausias būdas būtų tikrinti kiekvieną eilutę atskirai, o jei randama bent viena eilutė, funkcija OR formulės IF loginiame teste grąžintų TRUE:
IF(OR(ISNUMBER(SEARCH(" string1 ", ląstelė )), ISNUMBER(SEARCH(" string2 ", ląstelė ))), value_to_return , "")Tarkime, kad A stulpelyje turite SKU sąrašą ir norite surasti tuos, kuriuose yra žodis "dress" (suknelė) arba "sijonas". Tai galite padaryti naudodami šią formulę:
=IF(OR(ISNUMBER(SEARCH("suknelė",A2)),ISNUMBER(SEARCH("sijonas",A2))), "Galioja ","")
Ši formulė gana gerai tinka keliems elementams, tačiau tai tikrai nėra tinkamas būdas, jei norite patikrinti daugelį dalykų. Šiuo atveju geriau būtų naudoti SUMPRODUCT funkciją, kaip parodyta kitame pavyzdyje.
SUMPRODUCT ISNUMBER SEARCH formulė
Jei turite reikalų su keliomis teksto eilutėmis, ieškant kiekvienos eilutės atskirai, formulė taptų per ilga ir sunkiai įskaitoma. Elegantiškesnis sprendimas būtų ISNUMBER SEARCH kombinaciją įterpti į SUMPRODUCT funkciją ir patikrinti, ar rezultatas yra didesnis už nulį:
SUMPRODUCT(--ISNUMBER(SEARCH( stygos , ląstelė )))>0Pavyzdžiui, norėdami sužinoti, ar A2 yra kuris nors iš D2:D4 langeliuose įvestų žodžių, naudokite šią formulę:
=SUMPRODUCT(--ISNUMBER(SEARCH($D$2:$D$4,A2)))>0
Taip pat galite sukurti pavadintą intervalą, kuriame būtų ieškomos eilutės, arba žodžius pateikti tiesiogiai formulėje:
=SUMPRODUCT(--ISNUMBER(SEARCH({"suknelė", "sijonas", "džinsai"},A2)))>0
Bet kuriuo atveju rezultatas bus panašus į šį:
Norėdami, kad išvestis būtų patogesnė vartotojui, pirmiau pateiktą formulę galite įterpti į funkciją IF ir vietoj TRUE/FALSE reikšmių grąžinti savo tekstą:
=IF(SUMPRODUCT(--ISNUMBER(SEARCH($D$2:$D$4,A2)))>0, "Valid", "")
Kaip veikia ši formulė
Iš esmės, kaip paaiškinta ankstesniame pavyzdyje, naudojate ISNUMBER kartu su SEARCH. Šiuo atveju paieškos rezultatai pateikiami kaip masyvas, pavyzdžiui, {TRUE;FALSE;FALSE}. Jei ląstelėje yra bent viena iš nurodytų posistemių, masyve bus TRUE. Dvigubas vienaženklis operatorius (--) verčia TRUE / FALSE reikšmes atitinkamai į 1 ir 0 ir pateikia tokį masyvą kaip{1;0;0}. Galiausiai funkcija SUMPRODUCT sudeda skaičius ir išrenka langelius, kuriuose rezultatas yra didesnis už nulį.
Jei ląstelėje yra kelios eilutės (AND logika)
Kai norite rasti langelius, kuriuose yra visos nurodytos teksto eilutės, naudokite jau žinomą kombinaciją ISNUMBER SEARCH kartu su IF AND:
IF(AND(ISNUMBER(SEARCH(" string1 ", ląstelė )), ISNUMBER(SEARCH(" string2 ", ląstelė ))), value_to_return ,"")Pavyzdžiui, pagal šią formulę galite rasti SKU, kuriuose yra ir "dress", ir "blue":
=IF(AND(ISNUMBER(SEARCH("suknelė",A2)),ISNUMBER(SEARCH("mėlyna",A2))), "Galioja","")
Arba galite eilutes įvesti į atskiras ląsteles ir į jas daryti nuorodas formulėje:
=IF(AND(ISNUMBER(SEARCH($D$2,A2)),ISNUMBER(SEARCH($E$2,A2)), "Galioja","")
Kaip alternatyvų sprendimą galite suskaičiuoti kiekvienos eilutės pasikartojimus ir patikrinti, ar kiekvienas skaičius yra didesnis už nulį:
=IF(AND(COUNTIF(A2, "*dress*")>0,COUNTIF(A2, "*blue*")>0), "Valid","")
Rezultatas bus lygiai toks, kaip parodyta pirmiau pateiktoje ekrano nuotraukoje.
Kaip grąžinti skirtingus rezultatus pagal ląstelės vertę
Jei norite palyginti kiekvieną tikslinio stulpelio langelį su kitu elementų sąrašu ir kiekvienam atitikimui grąžinti skirtingą reikšmę, naudokite vieną iš šių būdų.
Įterptiniai IF
Įterptinės IF formulės logika paprasta: kiekvienai sąlygai patikrinti naudojama atskira IF funkcija ir, priklausomai nuo testų rezultatų, grąžinamos skirtingos reikšmės.
IF( ląstelė =" lookup_text1 ", " grąžinti _ tekstas1 ", IF( ląstelė =" lookup_text2 ", " grąžinti _ tekstas2 ", IF( ląstelė =" lookup_text3 ", " grąžinti _ tekstas3 ", "")))Tarkime, kad A stulpelyje turite elementų sąrašą, o jų santrumpas norite pateikti B stulpelyje:
=IF(A2="obuolys", "Ap", IF(A2="avokadas", "Av", IF(A2="bananas", "B", IF(A2="citrina", "L", ""))))
Išsamios informacijos apie įterptinio IF sintaksę ir logiką rasite skyriuje "Excel" įterptinis IF - kelios sąlygos vienoje formulėje.
Paieškos formulė
Jei ieškote kompaktiškesnės ir geriau suprantamos formulės, naudokite LOOKUP funkciją, kurios paieškos ir grąžinimo reikšmės pateikiamos kaip vertikalios masyvo konstantos:
LOOKUP( ląstelė , {" lookup_text1 ";" lookup_text2 ";" lookup_text3 ";...}, {" grąžinti _ tekstas1 ";" grąžinti _ tekstas2 ";" grąžinti _ tekstas3 ";...})Norėdami gauti tikslius rezultatus, būtinai nurodykite paieškos vertes abėcėlės tvarka , nuo A iki Z.
=LOOKUP(A2,{"apple";"avocado";"banana";"lemon"},{"Ap";"Av";"B";"L"})
Palyginti su įterptais IF, "Lookup" formulė turi dar vieną privalumą - ji supranta pakaitiniai simboliai todėl galima nustatyti dalinius atitikmenis.
Pavyzdžiui, jei stulpelyje A yra kelios bananų rūšys, galite ieškoti "*bananas*" ir gauti tą pačią santrumpą ("B") visiems tokiems langeliams:
=LOOKUP(A2,{"apple";"avocado";"*banana*";"lemon"},{"Ap";"Av";"B";"L"})
Daugiau informacijos rasite skyriuje Ieškojimo formulė kaip įterptųjų IF alternatyva.
Vlookup formulė
Dirbant su kintamu duomenų rinkiniu, gali būti patogiau įvesti atitikmenų sąrašą atskirose ląstelėse ir gauti juos naudojant Vlookup formulę, pvz:
=VLOOKUP(A2, $D$2:$E$5, 2,FALSE )
Daugiau informacijos rasite "Excel" VLOOKUP pamokoje pradedantiesiems.
Taip "Excel" programoje tikrinama, ar ląstelėje yra kokia nors reikšmė arba konkretus tekstas. Kitą savaitę toliau nagrinėsime "Excel" formulę Jei ląstelėje yra ir sužinosime, kaip suskaičiuoti arba sumuoti atitinkamas ląsteles, kopijuoti arba pašalinti ištisas eilutes, kuriose yra tų ląstelių, ir dar daugiau. Likite su mumis!
Praktikos sąsiuvinis
"Excel", jei ląstelėje yra - formulių pavyzdžiai (.xlsx failas)