跨工作表匹配指定值后查找下方首个数字单元格的Excel公式求助
跨工作表匹配指定值后查找下方首个数字单元格的Excel公式求助
嗨,我完全明白你的需求了——就是要在Sample工作表中先定位到Input表A2里的那个绿色编号(比如10001、10002这类),然后顺着该单元格往下找到第一个包含数字的单元格,之后还能偏移到对应的黄色区域对吧?这可以通过Excel的查找函数组合来实现,我分不同Excel版本给你具体方案:
针对Excel 365/2021(支持动态数组)
如果你的Excel是较新版本,用XLOOKUP会更简洁直观,直接返回目标数字:
=XLOOKUP(TRUE, ISNUMBER(OFFSET(Sample!A:A, MATCH(Input!A2, Sample!A:A, 0), 0)), Sample!A:A,, 0, 1)
公式逻辑拆解:
MATCH(Input!A2, Sample!A:A, 0):先找到Input表A2里的绿色编号在Sample表A列的精确行号;OFFSET(Sample!A:A, 上述行号, 0):从找到的行号的下一行开始,选取A列剩余的所有单元格;ISNUMBER(...):判断这些单元格是否为数字;XLOOKUP:在判断结果里找到第一个TRUE,返回对应位置的单元格内容(也就是你要的第一个数字)。
如果要直接跳转到对应的黄色单元格,假设黄色单元格在目标数字单元格的右侧2列(比如数字在A列,黄色在C列),只需要把公式改成:
=XLOOKUP(TRUE, ISNUMBER(OFFSET(Sample!A:A, MATCH(Input!A2, Sample!A:A, 0), 0)), Sample!C:C,, 0, 1)
针对旧版Excel(无动态数组支持)
如果你的Excel版本比较旧,需要用数组公式(输入完公式后按Ctrl+Shift+Enter确认,不要直接回车):
=INDEX(Sample!A:A, MATCH(Input!A2, Sample!A:A, 0)+MATCH(TRUE, ISNUMBER(OFFSET(Sample!A:A, MATCH(Input!A2, Sample!A:A, 0), 0)), 0))
公式逻辑拆解:
- 前半部分
MATCH(Input!A2, Sample!A:A, 0)同样是定位绿色编号的行号; - 后半部分
MATCH(TRUE, ISNUMBER(OFFSET(...)), 0):找到从绿色编号下一行开始的第一个数字单元格相对于起始行的偏移量; - 两个行号相加后,用
INDEX返回Sample表A列对应位置的内容。
同理,要跳转到黄色单元格,只需把Sample!A:A改成黄色单元格所在的列(比如Sample!C:C)即可。
举个例子:当Input!A2填的是10002时,上述公式会先定位到Sample表中10002所在的行,然后往下找到第一个数字4,返回该单元格的内容;如果改成对应黄色列的引用,就直接返回黄色单元格的值啦。
备注:内容来源于stack exchange,提问作者user1779906
相关产品推荐
相关产品推荐

