求Excel动态匹配公式:根据位置值匹配另一工作表的起止区间负责人
Excel区间匹配查找人员的公式方案
假设Sheet2的结构如下:
- A列:区间起始值(对应Location的下限)
- B列:区间结束值(对应Location的上限)
- C列:负责该区间的人员
以下是几种无需VBA、支持区间动态变更的公式方案,根据你的Excel版本选择:
方案1:使用XLOOKUP(Excel 365/2021及以上版本)
在Sheet1的Person列(如C2单元格)输入公式,下拉即可批量应用:
=XLOOKUP(TRUE, (Sheet2!$A$2:$A$100<=Sheet1!B2)*(Sheet2!$B$2:$B$100>=Sheet1!B2), Sheet2!$C$2:$C$100, "无匹配人员")
- 说明:通过数组条件判断当前Location值是否落在Sheet2的对应区间内,返回匹配的人员名称;最后一个参数为无匹配时的提示文本,可按需修改。
- 动态支持:直接修改Sheet2的区间或人员数据,公式会自动同步更新结果。
方案2:使用LOOKUP(兼容多数Excel版本)
适合没有XLOOKUP功能的旧版本,公式如下:
=LOOKUP(2,1/(Sheet2!$A$2:$A$100<=Sheet1!B2)/(Sheet2!$B$2:$B$100>=Sheet1!B2),Sheet2!$C$2:$C$100)
- 说明:
1/(条件)会生成有效数值1或错误值,LOOKUP查找2时会匹配最后一个符合条件的区间对应的人员;若区间无重叠,结果准确。 - 注意:旧版本需按
Ctrl+Shift+Enter作为数组公式输入(部分新版本无需手动触发)。
方案3:使用INDEX+MATCH组合(兼容所有Excel版本)
返回第一个符合条件的人员,公式如下:
=INDEX(Sheet2!$C$2:$C$100, MATCH(TRUE, (Sheet2!$A$2:$A$100<=Sheet1!B2)*(Sheet2!$B$2:$B$100>=Sheet1!B2), 0))
- 说明:MATCH定位到第一个满足区间条件的行号,INDEX提取对应行的人员名称。
- 注意:旧版本需按
Ctrl+Shift+Enter作为数组公式输入。
通用注意事项
- 用
$锁定Sheet2的区间范围(如$A$2:$A$100),避免下拉公式时区间偏移;若数据量变化,可调整区间的结束行号。 - 确保Sheet2的区间无重叠,否则不同公式返回的结果会有差异(XLOOKUP/INDEX+MATCH返回第一个匹配,LOOKUP返回最后一个匹配)。
内容的提问来源于stack exchange,提问作者BurnStatus
相关产品推荐
相关产品推荐

