如何通过CELL函数返回的单元格引用从其他工作表获取数值?
解决方法:直接用INDEX获取下一个匹配项的值
你完全没必要用CELL函数转成单元格地址——INDEX本身就能直接返回目标单元格的数值,绕到文本地址反而多此一举。
首先先修正你原公式里的一个错误:MATCH的查找范围写了LookupSheet!A1:Roles!A30,这是跨表的错误范围,应该统一为LookupSheet!A1:A30。
正确的简化公式
直接用下面的公式就能拿到你要的下一个匹配项的值:
=INDEX(LookupSheet!A1:A30, MATCH(F2, LookupSheet!A1:A30, 0) + 1)
- 逻辑:
MATCH(F2, LookupSheet!A1:A30, 0)找到F2在列表中的位置,加1就是下一个单元格的序号,INDEX直接返回该位置的单元格内容。
处理越界情况(可选)
如果F2匹配的是列表最后一项,加1会超出范围,公式会报错,你可以用IFERROR做容错处理:
=IFERROR(INDEX(LookupSheet!A1:A30, MATCH(F2, LookupSheet!A1:A30, 0) + 1), "")
这样超出范围时会返回空值,不会显示错误。
如果你一定要用文本地址转引用(不推荐)
如果非要保留CELL返回的地址来取值,可以用INDIRECT函数把文本地址转换成可引用的单元格,但INDIRECT是易失性函数,会增加表格计算负担,尽量不用:
=INDIRECT(CELL("address",INDEX(LookupSheet!A1:A30,MATCH(F2,LookupSheet!A1:A30,0)+1)))
内容的提问来源于stack exchange,提问作者user2524908
相关产品推荐
相关产品推荐

