You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

求简化Excel嵌套IF公式方案:按城镇匹配对应编码

简化你的Excel嵌套IF公式

嘿,我来帮你把这个绕来绕去的嵌套公式改得清爽又好维护!先看看你原来的公式,确实嵌套太多,以后要改城镇或者代码都得一层层找,太麻烦:

=IF(ISNUMBER(SEARCH("Kirkintilloch",B2)),"BRN01",IF(ISNUMBER(SEARCH("Tweacher",B2)),"BRN01",IF(ISNUMBER(SEARCH("Lenzie",B2)),"BRN01",IF(ISNUMBER(SEARCH("Bishopbrigg",B2)),"BRN03",IF(ISNUMBER(SEARCH("Torrance",B2)),"BRN03",IF(ISNUMBER(SEARCH("Bearsden",B2)),"BRN04",IF(ISNUMBER(SEARCH("Milngavie",B2)),"BRN04")))))))

下面给你几种不同的简化方案,你可以根据自己的Excel版本和使用习惯来选:

方案1:用TEXTJOIN批量分组判断(兼容多数Excel版本)

把对应同一代码的城镇打包成一组,用|做OR分隔符,一次判断搞定一组,直接砍掉大半嵌套:

=IF(ISNUMBER(SEARCH(TEXTJOIN("|",TRUE,"Kirkintilloch","Tweacher","Lenzie"),B2)),"BRN01",IF(ISNUMBER(SEARCH(TEXTJOIN("|",TRUE,"Bishopbrigg","Torrance"),B2)),"BRN03","BRN04"))

注意:如果是Excel 2016及更早版本,输入完需要按Ctrl+Shift+Enter触发数组计算;365/2021版本直接回车就行。

方案2:用XLOOKUP+映射表(Excel 365/2021及以上推荐,最易维护)

这是我最推荐的方法——先做一个城镇-代码的映射表(比如放在D2:E8区域):

城镇名代码
KirkintillochBRN01
TweacherBRN01
LenzieBRN01
BishopbriggBRN03
TorranceBRN03
BearsdenBRN04
MilngavieBRN04

然后用XLOOKUP直接匹配,后续要加城镇、改代码,直接改映射表就行,完全不用碰公式:

=XLOOKUP(TRUE,ISNUMBER(SEARCH(D:D,B2)),E:E,"未知",0)

最后那个"未知"是默认值,如果B列地址不包含这七个城镇,就返回这个内容,你可以改成自己需要的。

方案3:用SWITCH替代多层IF(Excel 2019及以上)

SWITCH比嵌套IF结构更直观,逻辑一眼就能看明白:

=SWITCH(TRUE,
  ISNUMBER(SEARCH("Kirkintilloch",B2)),"BRN01",
  ISNUMBER(SEARCH("Tweacher",B2)),"BRN01",
  ISNUMBER(SEARCH("Lenzie",B2)),"BRN01",
  ISNUMBER(SEARCH("Bishopbrigg",B2)),"BRN03",
  ISNUMBER(SEARCH("Torrance",B2)),"BRN03",
  ISNUMBER(SEARCH("Bearsden",B2)),"BRN04",
  ISNUMBER(SEARCH("Milngavie",B2)),"BRN04",
  "未知"
)

虽然长度没短太多,但结构清晰,比嵌套IF好读太多。

内容的提问来源于stack exchange,提问作者Ross Craven

火山引擎 最新活动