Excel中如何获取数组函数计算结果对应的单元格行列号
查找排除空值/0值的最低报价对应供应商的方案
不需要额外绕路定位行号再调用INDIRECT,直接用INDEX+MATCH组合的数组公式就能实现,逻辑和你现有的最低值计算完全兼容,稳定性比INDIRECT更好。
- 推荐直接使用的公式(旧版Excel输入完成后按
Ctrl+Shift+Enter确认数组公式,365/2021及以上版本直接回车即可生效):
=INDEX(A1:A35,MATCH(MIN(IF(B1:B35<>0,B1:B35)),B1:B35,0))
公式逻辑拆解:
- 完全保留你原有的
MIN(IF(B1:B35<>0,B1:B35))计算逻辑,先过滤掉B列的0值、空值,算出有效报价里的最小值 MATCH函数直接在B1:B35的报价区间内定位这个最小值所在的相对位置INDEX根据匹配到的位置,直接从A列供应商区间取出对应的名称,不会因为后续插入/删除行列出现引用错位的问题。
如果你坚持要用INDIRECT的写法,先取行号再拼接引用也可以,对应公式如下:
=INDIRECT("A"&MATCH(MIN(IF(B1:B35<>0,B1:B35)),B1:B35,0))
其中定位最小值行号的核心逻辑就是MATCH(MIN(IF(B1:B35<>0,B1:B35)),B1:B35,0),返回的结果就是最低报价在B1:B35区间内的相对行号。
注意:如果有多个供应商报了相同的最低有效报价,以上公式会默认返回从上到下第一个匹配到的供应商名称,需要提取全部同价供应商的话要额外增加数组筛选逻辑。
内容的提问来源于stack exchange,提问作者Mr. T
相关产品推荐
相关产品推荐

