Sisukord
Õpik pakub mitmeid "Exceli kui sisaldab" valemite näiteid, mis näitavad, kuidas tagastada midagi teises veerus, kui sihtruut sisaldab nõutavat väärtust, kuidas otsida osalise kokkulangevusega ja testida mitut kriteeriumi nii OR- kui ka AND-loogikaga.
Üks kõige tavalisemaid ülesandeid Excelis on kontrollida, kas lahter sisaldab huvipakkuvat väärtust. Milline väärtus see võib olla? Ükskõik milline tekst või number, konkreetne tekst või üldse mis tahes väärtus (mitte tühi lahter).
Excelis on olemas mitu "If cell contains" valemi varianti, sõltuvalt sellest, milliseid väärtusi täpselt soovite leida. Üldiselt kasutate IF funktsiooni loogilise testi tegemiseks ja tagastate ühe väärtuse, kui tingimus on täidetud (lahter sisaldab) ja/või teise väärtuse, kui tingimus ei ole täidetud (lahter ei sisalda). Allpool toodud näited hõlmavad kõige sagedamini esinevaid stsenaariume.
Kui lahter sisaldab mis tahes väärtust, siis
Alustuseks vaatame, kuidas leida lahtrid, mis sisaldavad üldse midagi: mis tahes teksti, numbrit või kuupäeva. Selleks kasutame lihtsat IF-valemit, mis kontrollib mitte tühje lahtreid.
IF( rakk "", value_to_return , "")Näiteks selleks, et tagastada veerus B "Mitte tühi", kui sama rea veeru A lahter sisaldab mis tahes väärtust, sisestate B2 lahtrisse järgmise valemi ja seejärel topeltklõpsate paremas alumises nurgas oleval väikesel rohelisel ruudul, et valemit veerus alla kopeerida:
=IF(A2"", "Mitte tühi", "")
Tulemus näeb välja umbes nii:
Kui lahter sisaldab teksti, siis
Kui soovite leida ainult lahtrid tekstiväärtustega, ignoreerides numbreid ja kuupäevi, siis kasutage IF koos funktsiooniga ISTEXT. Siin on üldine valem, mis tagastab mingi väärtuse teises lahtris, kui sihtruut sisaldab mis tahes tekst :
IF(ISTEXT( rakk ), value_to_return , "")Oletame, et soovite sisestada veerus B sõna "jah", kui veeru A lahter sisaldab teksti. Selleks sisestage B2 lahtrisse järgmine valem:
=IF(ISTEXT(A2), "Jah", "")
Kui lahter sisaldab numbrit, siis
Samamoodi saate tuvastada lahtrid, millel on numbrilised väärtused (numbrid ja kuupäevad). Selleks kasutage funktsiooni IF koos ISNUMBER:
IF(ISNUMBER( rakk ), value_to_return , "")Järgmine valem annab veerus B "jah", kui veeru A vastav lahter sisaldab mis tahes arvu:
=IF(ISNUMBER(A2), "Jah", "")
Kui lahter sisaldab konkreetset teksti
Teatud teksti (või numbreid või kuupäevi) sisaldavate lahtrite leidmine on lihtne. Kirjutage tavaline IF-vormel, mis kontrollib, kas sihtruut sisaldab soovitud teksti, ja sisestage tagastatav tekst lahtrisse value_if_true argument.
IF( rakk =" tekst ", value_to_return , "")Näiteks selleks, et teada saada, kas lahter A2 sisaldab "õunu", kasutage seda valemit:
=IF(A2="õunad", "Jah", "")
Kui lahter ei sisalda konkreetset teksti
Kui otsite vastupidist tulemust, st tagastate mingi väärtuse teise veergu, kui sihtruut ei sisalda määratud teksti ("õunad"), siis tehke üks järgmistest toimingutest.
Sisestage tühi string ("") lahtrisse value_if_true argument ja tagastatav tekst value_if_false argument:
=IF(A2="õunad", "", "Mitte õunad")
Või pane "ei ole võrdne" operaatoriga loogiline_test ja tekst, mis tuleb tagasi value_if_true:
=IF(A2 "õunad", "Mitte õunad", "")
Mõlemal juhul annab valem selle tulemuse:
Kui lahter sisaldab teksti: suur- ja väiketähelepanu arvestav valem
Selleks, et sundida oma valemit tegema vahet suur- ja väiketähtede vahel, kasutage funktsiooni EXACT, mis kontrollib, kas kaks tekstisarja on täpselt võrdsed, kaasa arvatud tähtede suurust:
=IF(EXACT(A2, "APPLES"), "Jah", "")
Võite sisestada mudeli tekstistringi ka mõnda lahtrisse (näiteks C1), fikseerida lahtri viide $-märgiga ($C$1) ja võrrelda sihtruutu selle lahtriga:
=IF(EXACT(A2,$C$1), "Jah", "")
Kui lahter sisaldab konkreetset tekstistringi (osaline kokkulangevus)
Oleme lõpetanud triviaalsete ülesannetega ja liigume edasi keerulisemate ja huvitavamate ülesannete juurde :) Selles näites on vaja kolme erinevat funktsiooni, et välja selgitada, kas antud märk või alamjada on osa lahtri sisust:
IF(ISNUMBER(SEARCH(" tekst" , rakk )), value_to_return ,"")Töötades seestpoolt välja, on valem järgmine:
- Funktsioon SEARCH otsib teksti stringi ja kui string leitakse, siis tagastab esimese tähemärgi positsiooni, vastasel juhul #VALUE! viga.
- Funktsioon ISNUMBER kontrollib, kas SEARCH õnnestus või ebaõnnestus. Kui SEARCH andis mingi numbri, siis ISNUMBER tagastab TRUE. Kui SEARCH andis vea, siis ISNUMBER tagastab FALSE.
- Lõpuks tagastab IF funktsioon määratud väärtuse lahtrite puhul, mille loogiline test on TRUE, muidu tühja stringi ("").
Ja nüüd vaatame, kuidas see üldine valem töötab reaalsetes töölehtedes.
Kui lahter sisaldab teatud teksti, pane väärtus teise lahtrisse.
Oletame, et teil on veerus A tellimuste nimekiri ja te soovite leida tellimusi, millel on konkreetne identifikaator, näiteks "A-". Ülesannet saab täita järgmise valemiga:
=IF(ISNUMBER(SEARCH("A-",A2)), "Valid","")
Selle asemel, et sisestada string valemisse, võite sisestada selle eraldi lahtrisse (E1) ja viidata sellele lahtrisse oma valemis:
=IF(ISNUMBER(SEARCH($E$1,A2)), "Valid","")
Et valem töötaks õigesti, tuleb kindlasti lukustada stringi sisaldava lahtri aadress $-märgiga (absoluutne lahtriviide).
Kui lahter sisaldab konkreetset teksti, kopeeri see teise veergu.
Kui soovite kopeerida kehtivate lahtrite sisu kuhugi mujale, siis esitage lihtsalt hinnatud lahtri (A2) aadressi aadressi value_if_true argument:
=IF(ISNUMBER(SEARCH($E$1,A2)),A2,"")
Tulemused on näha alloleval ekraanipildil:
Kui lahter sisaldab konkreetset teksti: suur- ja väiketähelepanu arvestav valem
Mõlemas ülaltoodud näites on valemid suur- ja väiketähtedest sõltumatud. Olukordades, kus töötate suur- ja väiketähtedest sõltuvate andmetega, kasutage tähemärkide eristamiseks funktsiooni FIND asemel SEARCH.
Näiteks järgmine valem tuvastab ainult tellimused, mille suurtähtedes on "A-", jättes kõrvale väikse "a-".
=IF(ISNUMBER(FIND("A-",A2)), "Valid","")
Kui lahter sisaldab ühte paljudest tekstisõnadest (VÕI-loogika)
Selleks, et tuvastada lahtrid, mis sisaldavad vähemalt ühte paljudest otsitavatest asjadest, kasutage ühte järgmistest valemitest.
IF OR ISNUMBER SEARCH valemiga IF OR ISNUMBER SEARCH
Kõige ilmsem lähenemisviis oleks kontrollida iga alamjada eraldi ja lasta funktsioonil OR tagastada valemiga IF loogilises testis TRUE, kui leitakse vähemalt üks alamjada:
IF(OR(ISNUMBER(SEARCH(" string1 ", rakk )), ISNUMBER(SEARCH(" string2 ", rakk ))), value_to_return , "")Oletame, et teil on veerus A nimekiri SKU-dest ja te soovite leida need, mis sisaldavad kas "kleit" või "seelik". Seda saate teha selle valemi abil:
=IF(OR(ISNUMBER(SEARCH("kleit",A2)),ISNUMBER(SEARCH("seelik",A2))), "Valid ","")
Valem töötab päris hästi paari elemendi puhul, kuid see ei ole kindlasti õige viis, kui soovite kontrollida paljusid asju. Sellisel juhul oleks parem lähenemine kasutada funktsiooni SUMPRODUCT, nagu on näidatud järgmises näites.
SUMPRODUCT ISNUMBER SEARCH valemiga
Kui teil on tegemist mitme tekstisõnaga, muudaks iga tekstiosa eraldi otsimine teie valemi liiga pikaks ja raskesti loetavaks. Elegantsem lahendus oleks ISNUMBER SEARCH kombinatsiooni põimimine SUMPRODUCT funktsioonile ja vaadata, kas tulemus on suurem kui null:
SUMPRODUCT(--ISNUMBER(SEARCH( stringid , rakk )))>0Näiteks selleks, et teada saada, kas A2 sisaldab mõnda lahtritesse D2:D4 sisestatud sõna, kasutage seda valemit:
=SUMPRODUCT(--ISNUMBER(SEARCH($D$2:$D$4,A2)))>0
Alternatiivina võite luua nimelise vahemiku, mis sisaldab otsitavaid sõnesid, või esitada sõnad otse valemis:
=SUMPRODUCT(--ISNUMBER(SEARCH({"kleit", "seelik", "teksad"},A2)))>0
Mõlemal juhul on tulemus sarnane sellele:
Et muuta väljundit kasutajasõbralikumaks, võite ülaltoodud valemi sisestada IF-funktsiooni ja tagastada TRUE/FALSE väärtuste asemel oma teksti:
=IF(SUMPRODUCT(--ISNUMBER(SEARCH($D$2:$D$4,A2)))>0, "Valid", "")
Kuidas see valem töötab
Põhimõtteliselt kasutate ISNUMBER koos SEARCHiga, nagu eelmises näites selgitatud. Sel juhul esitatakse otsingutulemused massiivi kujul nagu {TRUE;FALSE;FALSE}. Kui lahter sisaldab vähemalt ühte määratud alajaotusest, siis on massiivi sees TRUE. Topelt-ühenduslik operaator (--) sunnib TRUE / FALSE väärtused vastavalt 1 ja 0 ning annab massiivi nagu{1;0;0}. Lõpuks liidab funktsioon SUMPRODUCT numbrid kokku ja me valime välja lahtrid, mille tulemus on suurem kui null.
Kui lahter sisaldab mitut stringi (AND loogika)
Olukordades, kus soovite leida lahtrid, mis sisaldavad kõiki määratud tekstisõnu, kasutage juba tuttavat kombinatsiooni ISNUMBER SEARCH koos IF AND:
IF(AND(ISNUMBER(SEARCH(" string1 ", rakk )), ISNUMBER(SEARCH(" string2 ", rakk ))), value_to_return ,"")Näiteks saate selle valemiga leida SKU-d, mis sisaldavad nii "kleit" kui ka "sinine":
=IF(AND(ISNUMBER(SEARCH("dress",A2)),ISNUMBER(SEARCH("blue",A2))), "Valid ","")
Või võite sisestada stringid eraldi lahtritesse ja viidata nendele lahtritele oma valemis:
=IF(AND(ISNUMBER(SEARCH($D$2,A2)),ISNUMBER(SEARCH($E$2,A2))), "Valid ","")
Alternatiivse lahendusena võite loendada iga stringi esinemisi ja kontrollida, kas iga loend on suurem kui null:
=IF(AND(COUNTIF(A2, "*kleit*")>0,COUNTIF(A2, "*sinine*")>0), "Valid","")
Tulemus on täpselt selline, nagu on näidatud ülaltoodud ekraanipildil.
Kuidas tagastada erinevaid tulemusi lahtri väärtuse alusel
Kui soovite võrrelda sihtveergu iga lahtrit mõne teise elementide loendiga ja tagastada iga kokkulangevuse kohta erineva väärtuse, kasutage ühte järgmistest lähenemisviisidest.
Sisestatud IF-id
Sisestatud IF-valemi loogika on nii lihtne: kasutate iga tingimuse testimiseks eraldi IF-funktsiooni ja tagastate sõltuvalt nende testide tulemustest erinevaid väärtusi.
IF( rakk =" lookup_text1 ", " return _ text1 ", IF( rakk =" lookup_text2 ", " return _ text2 ", IF( rakk =" lookup_text3 ", " return _ text3 ", "")))Oletame, et teil on veerus A kirjete nimekiri ja soovite, et nende lühendid oleksid veerus B. Selleks kasutage järgmist valemit:
=IF(A2="õun", "Ap", IF(A2="avokaado", "Av", IF(A2="banaan", "B", IF(A2="sidrun", "L", ""))))
Täieliku teabe sisendatud IF-i süntaksi ja loogika kohta leiate jaotisest Exceli sisendatud IF - mitu tingimust ühes valemis.
Otsi valemit
Kui otsite kompaktsemat ja paremini arusaadavat valemit, kasutage funktsiooni LOOKUP, mille otsingu- ja tagastusväärtused on esitatud vertikaalsete massiivi konstandidena:
LOOKUP( rakk , {" lookup_text1 ";" lookup_text2 ";" lookup_text3 ";...}, {" return _ text1 ";" return _ text2 ";" return _ text3 ";...})Täpse tulemuse saamiseks loetlege kindlasti otsinguväärtused aadressil tähestikuline järjestus , A-st Z-ni.
=LOOKUP(A2,{"apple";"avocado";"banana";"lemon"},{"Ap";"Av";"B";"L"})
Võrreldes sisseehitatud IF-idega on Lookup-valemil veel üks eelis - see mõistab vabakaardimärgid ja seega saab tuvastada osalisi vasteid.
Näiteks kui veerus A on mitu sorti banaane, saate otsida "*banaan*" ja saada kõigi selliste lahtrite jaoks tagasi sama lühendi ("B"):
=LOOKUP(A2,{"apple";"avocado";"*banana*";"lemon"},{"Ap";"Av";"B";"L"})
Lisateavet leiate jaotisest Otsinguvormel kui alternatiiv sisseehitatud IF-idele.
Vlookup valem
Kui töötate muutuva andmekogumiga, võib olla mugavam sisestada vastete nimekiri eraldi lahtritesse ja otsida neid Vlookup-valemi abil, nt:
=VLOOKUP(A2, $D$2:$E$5, 2,FALSE )
Lisateavet leiate Exceli VLOOKUPi õpetusest algajatele.
Nii saate kontrollida, kas lahter sisaldab Excelis mingit väärtust või konkreetset teksti. Järgmisel nädalal jätkame Exceli Kui lahter sisaldab valemite vaatamist ja õpime, kuidas loendada või summeerida asjakohaseid lahtreid, kopeerida või eemaldada terveid ridu, mis sisaldavad neid lahtreid, ja palju muud. Palun jääge kursis!
Praktiline töövihik
Excel If Cell Contains - valemi näited (.xlsx fail)