IF函数嵌套公式和避免错误
IF函数允许通过测试某个条件并返回True或False的结果,从而对某个值和预期值进行逻辑比较。
=IF(内容为True,则执行某些操作,否则就执行其他操作)因此IF语句可能有两个结果。第一个结果是比较结果为True,第二个结果是比较结果为False。
IF语句非常强大,其构成了许多电子表格模型的基础,但也是导致许多电子表格问题的根本原因。理想情况下,IF语句应适用于最小条件(例如Male/Female和Yes/No/Maybe),但是对更复杂情况求值时则需要同时嵌套*3个以上的IF函数。
*“嵌套”是指在一个公式中连接多个函数的做法。
技术细节使用逻辑函数IF函数时,如果条件为真,该函数将返回一个值;如果条件为假,函数将返回另一个值。
语法
IF(logical_test,value_if_true,[value_if_false])
例如:
=IF(A2>B2,”超出预算”,”正常”)=IF(A2=B2,B4-A4,””)参数名称
说明
logical_test
(必需)
要测试的条件。
value_if_true
(必需)
logical_test的结果为TRUE时,您希望返回的值。
value_if_false
(可选)
logical_test的结果为FALSE时,您希望返回的值。
备注虽然Excel允许嵌套最多64个不同的IF函数,但不建议这样做。原因?
要正确地构建多个IF语句需要花大量心思,并要确保其逻辑在直至结尾的每个条件下都能计算正确。如果嵌套公式不是100%准确,那么计算过程可能花75%的时间,而返回结果可能花25%的时间,并且结果并不理想。但是得出这25%结果的几率很小。多个IF语句维护起来非常困难,特别是过一段时间后回头再看,想要了解当时你(其他人的话更糟糕)想要做什么时。如果发现IF语句似乎在无穷无尽地不断增加,这时候应放下鼠标,重新思考策略。
我们来了解一下如何使用多个IF正确创建一个复杂的嵌套IF语句,以及何时应使用Excel库中的其他工具。
示例以下示例介绍了一个相对标准的嵌套IF语句,该语句将学生考试成绩转化为等效字母等级。
=IF(D2>89,”A”,IF(D2>79,”B”,IF(D2>69,”C”,IF(D2>59,”D”,”F”))))此复杂嵌套IF语句遵循一个简单逻辑:
- 如果TestScore(单元格D2)大于89,则学生获得A如果TestScore大于79,则学生获得B如果TestScore大于69,则学生获得C如果TestScore大于59,则学生获得D否则,学生获得F
此特定示例的安全性相对较安全,因为测试分数和信函成绩之间的相关性不可能更改,因此不需要大量维护。但是,如果你需要在+、a和a之间划分成绩(等等),这会是一种想法—?现在,如果需要重新编写语句,则你的四个条件有12个条件!现在,你的公式如下所示:
=IF(B2>97,”A+”,IF(B2>93,”A”,IF(B2>89,”A-“,IF(B2>87,”B+”,IF(B2>83,”B”,IF(B2>79,”B-“,IF(B2>77,”C+”,IF(B2>73,”C”,IF(B2>69,”C-“,IF(B2>57,”D+”,IF(B2>53,”D”,IF(B2>49,”D-“,”F”))))))))))))该公式仍具有准确的功能并按预期工作,但需要花很长时间编写并花更长时间进行测试,才能确保该公式可完成所需操作。另一个明显的问题是必须手动输入分数和等效字母等级。不小心输错字的几率是多少?想象一下,需要使用更复杂的条件64次!当然这是可能实现的,但你真的想给自己带来这种麻烦和难以察觉的可能错误吗?
提示: Excel中的每个函数都需要使用左括号和右括号()。编辑时,Excel会通过对公式的不同部分着色来帮助你定位。例如,如果要编辑上面的公式,将光标移过每个右括号“)”时,它的相应左括号会显示相同颜色。在复杂嵌套公式中检查是否拥有足够的匹配括号时,此方法尤其有用。
更多示例下面是一个十分常见的示例-根据销售额等级计算销售佣金
=IF(C9>15000,20%,IF(C9>12500,17.5%,IF(C9>10000,15%,IF(C9>7500,12.5%,IF(C9>5000,10%,0)))))此公式表示如果(C9大于15,000则返回20%,如果(C9大于12,500则返回17.5%等等…
虽然该公式与前面的“成绩”示例非常相似,但它很好地说明了维护大型IF语句的难度-如果组织决定增加新的薪酬等级,甚至改变现有美元或百分比值,那么你需要做些什么?必须手动完成大量工作!
提示: 为了使长公式更易于阅读,可在编辑栏中插入换行符。只需在将文本换到新行前按Alt+Enter。
下面是一个包含混乱逻辑的佣金方案示例:
是否可以看到错误?将收入比较的顺序与上一个示例进行比较。此方法将转到哪一种情况?正确的是,它从自下而上($5000到$15000),而不是其他方面。但是为什么应该如此大的交易?这是一件很大的交易,因为该公式不能在$5000上传递任何值的第一个求值。假设你有$12500的收入-IF语句将返回10%,因为它大于$5000,将在那里停止。这可能是非常令人难以置信的问题,因为在许多情况下,这些类型的错误不会被忽略,直到它们产生负面影响。因此,了解复杂嵌套的IF语句有一些严重的缺陷,你可以执行哪些操作?在大多数情况下,您可以使用VLOOKUP函数,而不是使用IF函数生成复杂公式。使用VLOOKUP,您首先需要创建引用表:
=VLOOKUP(C2,C5:D17,2,TRUE)此公式指示在单元格区域C5:C17中查找C2中的值。如果找到值,则从D列中的同一行返回相应的值。
=VLOOKUP(B9,B2:C6,2,TRUE)类似地,此公式将在B2:B22区域中查找单元格B9的值。如果找到值,则从C列的同一行返回相应值。
注意: 这两个VLOOKUP公式在公式末尾使用TRUE参数,这表示需要它们查找适当的匹配项。也就是说,它将匹配查找表中的精确值以及范围内的任何值。在这种情况下,查找表需要按升序排序(从小到大)。
此处介绍了VLOOKUP的更多详细信息,VLOOKUP肯定比一个12级的复杂嵌套IF语句简单得多!还有其他一些不太明显的优点:
VLOOKUP引用表是开放的,易于查看。条件更改后,可轻松更新表值,无需更改公式。如果不希望他人查看或更改引用表,只需将其置于其他工作表。你知道吗?现在,可以使用单个函数替换多个嵌套IF语句的IFS函数。而不是我们的初始成绩示例,它有四个嵌套IF函数:
=IF(D2>89,”A”,IF(D2>79,”B”,IF(D2>69,”C”,IF(D2>59,”D”,”F”))))可使用单个IFS函数使其变得更简洁:
=IFS(D2>89,”A”,D2>79,”B”,D2>69,”C”,D2>59,”D”,TRUE,”F”)IFS函数十分有用,因为无需担心所有这些IF语句和括号带来的麻烦。
注意: 仅当具有Office365订阅时,此功能才可用。如果你是Office365订阅者,请确保你具有最新版本的Office。
需要更多帮助吗?可随时在Excel技术社区中咨询专家,在解答社区获得支持,或在ExcelUserVoice上建议新功能或功能改进。
相关主题视频:高级IF函数IFS函数(Office365、Excel2016和更高版本)COUNTIF函数将根据单个条件对值进行计数COUNTIFS函数将根据多个条件对值进行计数条件SUMIF函数将根据单个条件对值求和SUMIFS函数将根据多个条件和函数或函数VLOOKUP函数Excel中公式的概述如何避免损坏的公式检测公式中的错误逻辑函数excel函数(按字母顺序)excel函数(按类别)
绛旓細姝g‘浣跨敤IF鍑芥暟鍗冲彲 Excel鐗堟湰鍙傝冿細2010 鍋囪妯℃澘涓唴瀹瑰湪A鍒 1銆丅1杈撳叆鍏紡锛=IF(A2="","",A2)2銆佸洖杞︼紝涓嬫媺鍏紡 3銆佹煡鐪嬬粨鏋 IF鍑芥暟璇硶锛欼F(娴嬭瘯鏉′欢锛屾弧瓒虫潯浠惰繑鍥炵殑鍐呭锛屼笉婊¤冻杩斿洖鍊硷級
绛旓細鐢ㄦ埛浼氭洿鍔犵洿瑙傚湴浜嗚В鏁版嵁鎯呭喌銆4銆侀闄╄瘎浼 IF鍑芥暟鍙互鏍规嵁鐗瑰畾鏉′欢杩涜椋庨櫓璇勪及鍜岄娴嬶紝鐢ㄦ埛鍙互浜嗚В涓氬姟鐨勯闄╂儏鍐靛苟鍋氬ソ搴斿鎺柦銆5銆侀櫎浜嗕互涓婂垪涓剧殑涓浜涘簲鐢ㄥ満鏅紝IF鍑芥暟杩樻湁璁稿鍏朵粬鐨勭敤閫斻傚湪Excel涓紝寰堝澶嶆潅鐨鍏紡閮戒細娑夊強IF鍑芥暟鐨宓屽浣跨敤锛岀敤鎴峰彲浠ュ畬鎴愬悇绉嶈绠楀拰鍒嗘瀽浠诲姟銆
绛旓細鎺ヤ笅鏉ユ垜璇翠笅浣跨敤if鍑芥暟鐨勬敞鎰忕偣锛1.璇昏繖涓嚱鏁颁竴瀹氳浠庢渶澶栧眰鐨勫嚱鏁拌璧凤紝涓灞備竴灞傚線閲屽眰璇伙紝瑕佷笉灏变贡浜嗭紝鍥犱负杩欐槸涓涓昏緫鍑芥暟銆2.宓屽鏈濂藉湪绗笁涓弬鏁颁綅缃繘琛屽祵濂楋紝杩欐牱涓嶅鏄鍑洪敊銆3.灏辨槸璁板緱鎷彿锛屼竴瀹氳瀵圭О锛屽祵濂楃殑瓒婂瓒婅灏忓績銆傚鏋滃ぇ瀹跺枩娆㈡垜鐨勬枃绔狅紝娆㈣繋鍏虫敞寰俊鍏紬鍙凤細璺熸垜瀛XCEL...
绛旓細excel if鍑芥暟澶氬眰宓屽鐨勪娇鐢ㄦ柟娉曠浉鍏 鏂囩珷 锛氣槄 excel if鍑芥暟澶氬祵濂楃殑浣跨敤鏁欑▼ 鈽 Excel涓璉F鍑芥暟澶氬眰娆″祵濂楅珮绾х敤娉曠殑鍏蜂綋鏂规硶 鈽 Excel涓灞傛宓屽if鍑芥暟鐨勪娇鐢ㄦ柟娉 鈽 excel琛ㄦ牸鎬庢牱浣跨敤if鍑芥暟鍏紡瀹炵幇杩炵幆宓屽 鈽 excel涓if鍑芥暟宓屽寮忎娇鐢ㄦ暀绋 鈽 excel if鍑芥暟澶氬眰宓屽鐨勪娇鐢ㄦ柟娉(2)鈽 ...
绛旓細4銆佷緥濡傚笇鏈涘皢85鍒嗕互涓婄殑鎴愮哗鍒掑垎涓衡滀紭绉鈥濓紝灏嗏60-85鈥濆垎涔嬮棿鐨勬垚缁╁垝鍒嗕负鈥滃強鏍尖濓紝60鍒嗕互涓嬬殑鎴愮哗鍒掑垎涓衡滀笉鍙婃牸鈥濓紝鍒欓渶瑕佷娇鐢ㄥ叕寮忊=IF(B2>=60,IF(B2>=85,"浼樼","鍙婃牸"),"涓嶅強鏍")鈥濄5銆佸湪杈撳叆宓屽鍑芥暟鍏紡鏃讹紝涓轰簡闃叉鍑洪敊锛屽彲浠ュ厛杈撳叆涓涓畝鍗曠殑鍏紡锛岀劧鍚庡皢鍏紡涓殑涓閮ㄥ垎鏇挎崲鎺...
绛旓細鍦‥xcel涓繘琛屾潯浠跺垽鏂紝澶у绗竴涓兂鍒扮殑鑲畾鏄疘F鍑芥暟锛屾潯浠舵瘮杈冨鐨勬儏鍐典笅锛屼娇鐢↖F鍑芥暟澶氬眰宓屽锛屽鏄撳嚭鐜閿欒銆傝繖閲屾妧宸у皬缂栬窡澶у鍒嗕韩鍙﹀3涓鍑芥暟鍏紡锛屽悓鏍峰彲浠ユ湁鏁堣В鍐矱xcel涓殑鏉′欢鍒ゆ柇闂銆傚涓嬪浘琛ㄦ牸鎵绀猴紝鏍规嵁閿鍞鍒ゆ柇瀵瑰簲鐨勬彁鎴愭瘮渚嬶紝鐢↖F鍑芥暟澶氬眰宓屽鍏紡锛=IF(B2>=100000,6%,IF(B2>=70000,...
绛旓細excel if澶氫釜鏉′欢宓屽锛屾搷浣滄柟娉曞涓嬨1銆侀鍏堟墦寮鐢佃剳涓婄殑Ecxel锛屾墦寮瑕佽繘琛屾搷浣滅殑鐢靛瓙琛ㄦ牸锛屽浘涓墍绀烘槸鐢↖F鍑芥暟鐨勫祵濂楀瀛︾敓鎴愮哗鍒嗏滀紭绉鈥濃滆壇鈥濃滃樊鈥濅笁涓瓑绾с2銆佸皢鍏夋爣鏀句簬瑕佹彃鍏F鍑芥暟鐨勫崟鍏冩牸涓3銆佺偣鍑昏彍鍗曟爮锛堟渶涓婃柟锛変腑鐨勨鍏紡鈥濄4銆佸湪璇ラ夐」鍗′笅鐐瑰嚮鈥滄彃鍏ュ嚱鏁扳濄5銆佸湪寮瑰嚭鐨勯夐」...
绛旓細IF鍑芥暟璇硶鏍煎紡锛 =IF(logical_test,value_if_true,value_if_false) 銆傞氫織鐨勮娉曪紝灏辨槸IF鏄潯浠跺垽鏂嚱鏁帮細=IF锛堟祴璇曟潯浠讹紝缁撴灉1锛岀粨鏋2锛夛紝鍗冲鏋滄弧瓒斥滄祴璇曟潯浠垛濆垯鏄剧ず鈥滅粨鏋1鈥濓紝濡傛灉涓嶆弧瓒斥滄祴璇曟潯浠垛濆垯鏄剧ず鈥滅粨鏋2鈥濄傚湪鍐IF鍑芥暟宓屽澶氭潯浠鍏紡鏃讹紝瑕佹敞鎰忎互涓嬩簨椤癸細1銆佸湪杈撳叆鍑芥暟鐨勫唴瀹规椂...
绛旓細姝ラ濡備笅锛1銆佷笅闈㈡垜浠紑濮嬪啓鍑芥暟 =IF锛圓1>=80锛屸淎鈥濓紝鈥︹︼級涔熷氨鏄綋A2澶т簬绛変簬80鏃讹紝寰楀埌鈥淎鈥濄傚鏋淎2涓嶆弧瓒冲ぇ浜庣瓑浜80锛屾牴鎹瘎绾ф爣鍑嗭紝閭d箞浼氭湁涓夌鍙兘锛歛.澶т簬绛変簬70灏忎簬80锛宐.澶т簬绛変簬60灏忎簬70锛宑.灏忎簬60锛岃繖涓夌鎯呭喌銆2銆佹垜浠皢绗竴绉嶆儏鍐鐢↖F鍑芥暟宓屽鍦ㄤ笂杩拌〃杈惧紡涓 =IF(A2>=80,"...