Excel公式需求:查找交替列最小值对应的列名
解决方法:根据指定非连续列的最小值返回对应列标题
需求说明
需要实现:
- result1:返回
col1、col3、col5三列中数值最小的单元格对应的列标题 - result2:返回
col2、col4、col6三列中数值最小的单元格对应的列标题
示例表格(对应Excel列:A列为x,BG列为col1col6,H列为result1,I列为result2):
| x | col1 | col2 | col3 | col4 | col5 | col6 | result1 | result2 |
|---|---|---|---|---|---|---|---|---|
| row 1 | 18 | 54 | 84 | 32 | 61 | 34 | col1 | col4 |
| row 2 | 68 | 11 | 8 | 95 | 41 | 658 | col3 | col2 |
错误原因
你之前修改的公式错误在于:直接将零散单元格作为INDEX和MIN的参数,不符合Excel函数语法——INDEX的区域参数需要是连续区域或可组合成数组的引用,MIN也需要接收区域/数组而非单个单元格的罗列。
正确公式
根据你的Excel版本,选择对应公式:
情况1:Excel 365/2021(支持动态数组)
result1(H2单元格):
=INDEX({B1,D1,F1},MATCH(MIN(B2,D2,F2),{B2,D2,F2},0))或用
CHOOSE函数(方便后续修改列):=INDEX(CHOOSE({1,2,3},B1,D1,F1),MATCH(MIN(CHOOSE({1,2,3},B2,D2,F2)),CHOOSE({1,2,3},B2,D2,F2),0))result2(I2单元格):
=INDEX({C1,E1,G1},MATCH(MIN(C2,E2,G2),{C2,E2,G2},0))对应
CHOOSE版本:=INDEX(CHOOSE({1,2,3},C1,E1,G1),MATCH(MIN(CHOOSE({1,2,3},C2,E2,G2)),CHOOSE({1,2,3},C2,E2,G2),0))
情况2:旧版Excel(需按Ctrl+Shift+Enter作为数组公式输入)
result1(H2单元格):
=INDEX(B1:F1,1,MATCH(MIN(IF(MOD(COLUMN(B1:F1)-COLUMN(B1),2)=0,B2:F2)),B2:F2,0))原理:用
MOD(COLUMN(...)-COLUMN(B1),2)=0筛选出奇数位的列(col1、col3、col5对应B、D、F列),再取最小值匹配对应列标题。result2(I2单元格):
=INDEX(C1:G1,1,MATCH(MIN(IF(MOD(COLUMN(C1:G1)-COLUMN(C1),2)=0,C2:G2)),C2:G2,0))原理:筛选出偶数位的列(col2、col4、col6对应C、E、G列),再取最小值匹配对应列标题。
公式说明
INDEX(区域, 行号, 列号):根据行号和列号返回区域内的单元格值MIN(数组/区域):返回数组或区域中的最小值MATCH(查找值, 查找区域, 匹配类型):返回查找值在区域中的位置CHOOSE(索引数组, 引用1, 引用2, ...):将多个零散引用组合成一个数组,适配INDEX和MIN的参数要求
内容的提问来源于stack exchange,提问作者Senthamizh Selvan
相关产品推荐
相关产品推荐

