excel if statements lookups
TRANSCRIPT
-
7/21/2019 Excel if Statements LOOKUPS
1/8
Excel IFStatements,LOOKUPS&INDEX/MATCH.Whentochoosewhichone?
ThisarticlewillfocusontheappropriateuseofIFstatements,andalsoshowyouwhenit'sbettertomoveintomorerobustformulas
likeLOOKUP,VLOOKUP,HLOOKUP&INDEX/MATCH.
NOTES:thisarticleiswrittenforExcel2010anditsRibbonInterface. TheexamplesyouseewerecreatedinExcel2010,butsavedasExcel972003.
WorkingexamplesarehostedonMicrosoft's[url=http://cid8cffdec0ce27e813.skydrive.live.com/redir.aspx?resid=8CFFDEC0CE27E813!195]SkyDrive
service[/url]foryoutodownload.
IFstatements
are
one
of
the
core
formula
models
you
can
use
in
Excel,
and
they
can
be
very
powerful
with
regards
to
their
logic.
Verysimplytheyfollowthismethodology:IF(somethingisTrue,thendosomething,otherwisedosomethingelse).
=IF(A1="Yes",1,2),whichsimplysaysifA1=Yes,thenreturna1,otherwisereturna2.
YoucanalsocombineIFstatementstoevaluatemultiplecriteriabynestingthem,however,manypeopletrytogetIFstatementsto
dotoomuch.PreviousversionsofExcelallowedupto7levelsofnestedIFstatements,whichmeansthatyoucouldevaluateupto7
differentcriteria. Excel2007+allows64levelsofnestedIFstatements,butjustbecauseyoucandosomethingdoesn'tmeanyou
should!
OneofthemostcommonusesofIFstatementsistoreturndatathatmatchesspecificcriteria,orfallswithinarangeofvalues.Here
isarelativelycommonexampleofanestedIFstatementtoreturnlettergradesbasedontestscores:
=IF(A1>=90,"A",IF(A1>=80,"B",IF(A1>=70,"C",IF(A1>=60,"D",IF(A125000,A1*2%,IF(A1>15000,A1*1.5%,IF(A1>5000,A1*1%,0)))
Notethatinbothformulas,thecriterianeedtobeorderedsequentiallyinorderfortheformulatocalculatecorrectly. Sointhefirst
exampleA1>=90getsevaluatedfirst,andifthatconditionistrue,thentheformulaperformsthecalculationassociatedwiththat
condition. Iftheconditionisnttrue,thenitmovesontothesecond,andsoon. Butifyougetyourconditionsoutoforder,thenone
conditioncaninvalidatethenextandrenderyourformula(s)useless. OneoftheinherentweaknesseswithIFstatementsisthat
theyneedtobepreciseandordered.
Whilebothoftheseformulasworkfine,they'reunwieldyandshouldbeavoidedifatallpossible. Why? Primarilybecausethedata
intheformulasisstatic,soiftheconditionsdrivingtheformulaeverneedtobechanged,theformulaneedstobemanuallyadjusted
asaresult. Granted,thegradesexampleisn'ttoobad,becauseit'snotlikelythatinformationwillchangetoooften,butjustimagine
howmuchworkyou'dhavetodoifyouhavealotofformulaslikethecommissionexample,andyouhavetochangethecriteria.
Ideally,you'llgetintothehabitofonlyusingIFstatementsforTextcomparisonsliketheearlierexample. Yes/No/Maybeor
Male/Femaleevaluationsareverycommon,andthenicethingaboutthemisthatcriteriaarentlikelytochangeveryoften. Ifyou
findyourselfwithsituationslikethisthenbyallmeansuseIFstatements,otherwiseit'stimetomoveuptomorerobustalternatives
startingwithLOOKUP.
OneoftheprimaryreasonstomoveawayfromIFstatementsformultiplecriteriaissothatyoucanuse"tablebased"reference
data. Thisgivesyoutheabilitytohaveyourdatapointsonaworksheet,wherethevaluescanbeeasilychanged,asopposedto
hardcodedin
aformula,
where
changing
the
values
can
be
achallenge.
Many
workbooks
have
broken
because
of
numerous
IF
statementsthatsomeonedidntupdate. Inthecommissionexampleabove,whatwouldhappenifyouneededtochangethe2%
andyouhadhundredsofformulasdependingonthatone? Itwouldntbefun,andthatsarelativelysmallexample. Imagineone
with64conditions! Andthatsifyoucanevenfindtheformulainthefirstplace! Tablebaseddependenciesaremucheasierto
changeonthefly,whichcanmeanalotespeciallyifyouredealingwithcomplexmodelsandtestingmultiplecriteria.
Note:datatablesthatdrivereferentialformulasdontneedtobehousedintheopenwhereuserscanchangethem. Veryoftenyoullfindsensitivetableshousedonhiddenworksheets,whereonlythecreator/administratorcanchangethedata.
ThefirstformulainthefamilyofreferentialformulasisLOOKUP(theyrecalledreferentialformulasbecausetheycanreturna
referencetoavalue,oravalueinarangeofvalues). LOOKUPhasplentyofuses,butitsalsothemostfragileandleastflexiblein
theLookupfamily.
-
7/21/2019 Excel if Statements LOOKUPS
2/8
FollowingareexamplesofaDiscounttable,andaGradestableusingastandardLOOKUPfunction:
ALOOKUPformulaevaluatesavalue(eitherhardcodedorinacell)thenfindsamatchforitinatablethatliststhevaluestobe
lookedup,andthevaluestoreturn. IntheseexamplesImusingLOOKUPtoreturnavariablerangefromalistofvalues. LOOKUPis
governedbythefollowingsyntax:
=LOOKUP(Valueyouwanttolookup,rangewhereyouwanttoreturntherightmostvalue).
NOTE:LOOKUPformulascanlookupahardcodedvalue,ortheycanlookupavaluefromacell.
=VLOOKUP(900,A2:B23)&LOOKUP(A5,A2:B23)doexactlythesamething,butthelatterismuchmoreflexiblesinceyoudonthavetochangethe900
valuewheneveryouwanttochangethelookupvalue. Youshouldalwaystrytousecellreferencesinformulasasopposedtohardcodedvalues.
Sointheexampleabove,=LOOKUP(A5,A2:B23) willlookinrangeA2:A23forthevalueclosesttowhatwasenteredincellA5,and
returnthecorrespondingvaluefromcolumnB. Inthiscase,lookingfor$900resultsina2%resultbymatching$750,whichisthe
largestvaluethatslessthanorequaltothevalueevaluatedbytheformula. Hadyouenteredavaluebetween$1,000and$1,249
theresultwouldhavebeen3%. NotethattheLOOKUPformularequiresyourdatatobesortedinAscendingorder,otherwiseits
notgoingtoprovideyouwithconsistentorcorrectresults. AquicknoteonLOOKUPanditscounterpartVLOOKUPisthattheycan
onlylooktotherightofthelookupvalue;theycantgototheleft. ForthatyouneedtocombineINDEX/MATCH,whichwillbe
coveredlater.
-
7/21/2019 Excel if Statements LOOKUPS
3/8
VLOOKUPThisisthebigbrothertotherelativelylimitedLOOKUP,andgivesyoumoreflexibilitywithregardstowhatdatayoucan
returnandwhere. VLOOKUPfollowsthissyntax:
=VLOOKUP(Valueyouwanttolookup,rangewhereyouwanttolookupthevalue,numberofcolumnstotherightofthe
foundvalue,ExactMatchorApproximateMatchIndicatedwith0/FALSEor1/TRUE).
SowhereLOOKUPisgoingtoreturnavaluefromtherightmostcolumnintherangethatyouspecify,VLOOKUPletsyoulookupa
multicolumnrange,andchoosewhichcolumnfromwhichtoreturnavalue. VLOOKUPisveryoftenusedinfinancescenarioswith
12Monthperiodsbecauseyoucaneasilychoosewhichmonthtoreturn.
Notethefirsttwoformulasusestaticcolumnreferences(2&3),whichtelltheformulatoreturnvaluesfromthesecondandthird
columnsrespectively:
=VLOOKUP($A8,$A$2:$M$4,2,FALSE)
=VLOOKUP($A8,$A$2:$M$4,3,FALSE)
Thisisallwellandgood,andformanymodelslikethisoneitsok,butitcanbetimeconsumingtohavetogointoeachformulaand
adjustthosecolumnreferences. Thelatterformulas(Marchforward)useatricktomakethecolumnsdynamicbyusingthe
COLUMN()functioninstead:
=VLOOKUP($A8,$A$2:$M$4,COLUMN(),FALSE)
SointhecaseofMarch,itsthe4th
columntotheright,andCOLUMN()returnsa4,whichfeedsthecorrectnumbertotherestofthe
formula.Butthisexampleassumesthatyoullhavearelativelystaticdatasetliketheoneabove. Butwhatifyourcolumnheaders
arentalwaysthesame? ThenextexampleshowsyouhowtobuildadynamicVLOOKUPwhereyoudonthavetoknowtheheaders
orwheretheyrelocated,yousimplyhavetheformuladoitforyou.
-
7/21/2019 Excel if Statements LOOKUPS
4/8
Inthisexampleyoucoulduse:=VLOOKUP($A5,$A$9:$F$48,2,FALSE), butyouwouldneedtomanuallyadjustthecolumnreference
accordingly,knowingthatNameiscolumn2,Departmentiscolumn5,Earningscolumn6,andRegioncolumn4. Oryoucan
introducetheMATCHformula. UsingMATCH,youdontneedtoknowthecolumnheaders,becauseyoutelltheformulatofind
themforyou.
TheformulasinB5:E5are(theredtextindicateswheretheformulasaredifferent):
=VLOOKUP($A5,$A$9:$F$48,MATCH(B4,$A$8:$F$8,0),FALSE)
=VLOOKUP($A5,$A$9:$F$48,MATCH(C4,$A$8:$F$8,0),FALSE)
-
7/21/2019 Excel if Statements LOOKUPS
5/8
=VLOOKUP($A5,$A$9:$F$48,MATCH(D4,$A$8:$F$8,0),FALSE)
=VLOOKUP($A5,$A$9:$F$48,MATCH( E4,$A$8:$F$8,0),FALSE)
ThisisverysimilartousingtheCOLUMN()functioninthepreviousexample,exceptthistimethecolumnsarentinorder,sowe
cantusethat. InsteadweuseMATCH,whichfindsthevaluewespecify. InthiscasewematchtheheadervaluesinB4:E4(Name,
Department,Earnings,andRegion)withthecorrespondingheadersinA8:F8. MATCHreturnsanumericmatchfromthebeginning
ofthedataseriestotheend,soNameis2,Departmentis5,andsoon.
MATCHsyntax
is
as
follows:
=MATCH(Valueorcellyouwanttofind,Rangetolookin,0=Onlyfindanexactmatch).
NOTE:Ifyouleavethe0outorputa1,theformulawillfindtheclosestapproximatematch.
NextintheLOOKUPfamilyoffunctionsisHLOOKUP. WhereVLOOKUPisaverticallookup,lookingfromlefttorightinarange,
HLOOKUPisahorizontallookup,whichgoesfromtopdowninarange.
HLOOKUPssyntaxisverysimilartoVLOOKUP:
=HLOOKUP(Valueyouwanttolookup,Rangeyouwanttolookin,numberofrowsdowntoreturnavalue,TRUE/FALSE)
NOTE:Hereagain,1/TRUEwillreturnanapproximatematch,while0/FALSEwillreturnanexactmatch.
InthiscaseImdoingadynamicHLOOKUPsothatIdonthavetoknowthepositionsoftherowsthatIwanttoreturn.
WheretheformulasinC5:E5are:
=HLOOKUP($B5,$A$7:$F$16,MATCH(C4,$A$7:$A$16,0),FALSE)
=HLOOKUP($B5,$A$7:$F$16,MATCH(D4,$A$7:$A$16,0),FALSE)
=HLOOKUP($B5,$A$7:$F$16,MATCH(E4,$A$7:$A$16,0),FALSE)
SoforC5,ImlookingforthevalueinB5(Qtr3)inA7:F16,andMATCHisreturningthe4th
rowdownforGrossProfit. Withoutthe
MATCHformulaitwouldbe:
=HLOOKUP($B5,$A$7:$F$16,4,FALSE)
-
7/21/2019 Excel if Statements LOOKUPS
6/8
Andyouwouldneedtomanuallyadjusttherowreferencesasyoucopiedtheformula,soyoudneedtomanuallydeterminewhere
GrossProfit,NetProfitandProfit%fellwithinthatrangeandadjusttheformulatosuit.
Finally,weremovingontowhatisprobablythemostpowerfuloflookupcombinations,whichiswhenyouuseINDEX&MATCH
together. YouvealreadyseenhowyoucanuseMATCHtomakelookupsmoredynamic,butwhathappensifyouneedtodoa
lookuptotheleft,whenLOOKUPsonlygototheright? INDEX/MATCHisthesolution,andonceyougetthehangofit,youllbe
surprisedhoweasyitis.
YouknowthatMATCHreturnsareferenceforavaluefoundinatablebygivingyouthevaluespositioninthetable. INDEXreturns
aROW&COLUMNreferenceinarangebasedonwhatrow&columnyoutellittolookin,so:
=INDEX(A1:B10,1,2)
WouldreturnthevalueincellB1,whereINDEXssyntaxis:
=INDEX(Rangeyouwanttolookin,#ofrowstolookdownfromthetopoftherange,#ofcolumnstolooktotherightof
therange).
Butwait,youmightbethinkingthatscontrarytowhatIsaidaboutINDEX/MATCHbeingabletolookleft! Dontworry,theycanand
thefollowingexampleshowshow:
Note:aswithLOOKUPsyoucanreturnamatchingvalueinthesamecolumnasthelookupvalue,butthatsgenerallypointlessunlessyourejusttrying
toseeifavalueactuallyexistsinatable.
-
7/21/2019 Excel if Statements LOOKUPS
7/8
-
7/21/2019 Excel if Statements LOOKUPS
8/8
Inthiscase,wereusingtheEmployeeNametoreturntheothervaluesinthelist. SomearetotherightofEmployeeNameand
someareontheleft. Thevariousformulasareasfollows:
EmployeeID#: =INDEX($A$12:$F$51,MATCH($B$4,$B$12:$B$51,0),MATCH( $A5,$A$11:$F$11,0))
SSN: =INDEX($A$12:$F$51,MATCH($B$4, $B$12:$B$51,0),MATCH($A6,$A$11:$F$11,0))
Region: =INDEX($A$12:$F$51,MATCH($B$4, $B$12:$B$51,0),MATCH($A7,$A$11:$F$11,0))
Department:
=INDEX($A$12:$F$51,MATCH($B$4,$B$12:$B$51,0),MATCH($A8,$A$11:$F$11,0))
Earnings: =INDEX($A$12:$F$51,MATCH($B$4, $B$12:$B$51,0),MATCH($A9,$A$11:$F$11,0))
TheonlyvariationintheformulasisA5:A9,whereImtellingitwhatcolumnheadertofindintheinformationtable.
SotheINDEXformulasaysLookintherangeA12:F51andfirstfindtherownumberthatholdstheemployeenameinB12:B51,then
findthecolumnnumberthatholdstheheader(EmployeeID#,SSN,Region,etc.)inA11:F11,andreturntheintersectionofthose
twovalues. SointhisexampleforSandyStewart,forEmployeeID#,Iwantthe4th
rowinthefirstcolumn,whichistotheleftofthe
namecolumnwerelookingin. Sothatshowyoucanlookuptotheleft.
Nowyoumightbethinkingthatsabithardtofathomallatonce,andfranklyitcanbe,buttheresatricktobuildingcomplex
formulaslike
this:
you
do
them
one
step
at
atime.
Youll
see
the
detail
of
how
Igot
here
in
the
sample
workbook,
but
Ill
walk
you
throughitjustincase.
First,sinceIknowIllbeusingEmployeenameastheprimarydriverfortherestoftheformula,Istarttherebymatchingasample
nameintheNamecolumn. Inthiscase,SandyStewartisrow4,whichIfindwithaMATCHformula:
=MATCH($B$4,$B$12:$B$51,0) SofindSandysnameincolumnBandgivemeanexactmatch.
ThenstartingwithEmployeeID#,whichIknowiscolumn1,Itakethe4andaddittoanINDEXformula:
=INDEX($A$12:$F$51,4,1)
WhichgivesmeE033,andthatsthefourthrowinthefirstcolumn.
NowIneedtoreplacethe4andthe1. Ialreadyhavethe4,soIcanaddthatnext:
=INDEX($A$12:$F$51,MATCH($B$4,$B$12:$B$51,0) ,1)
NextIneedtofindthe1forEmployeeID#,whichIcandowithanotherMATCHformula:
=MATCH($A5,$A$11:$F$11,0)
Finally,Ireplacethe1withmynewMATCHformula:
=INDEX($A$12:$F$51,MATCH($B$4,$B$12:$B$51,0), MATCH($A5,$A$11:$F$11,0) )
Nowyoucancopythefinalformuladown,andaslongasyougotyourAbsolutereferencesrightitwillautomaticallyupdateforeach
cellitscopiedinto.