Excel 2016中INDEX-MATCH数组公式返回重复值问题求助
Excel 2016 获取前三小数值对应的唯一列名方案
针对你需要从E6:L6区域取三个最小数值,返回E5:L5中对应的唯一列名(避免同数值重复返回第一个列名)的需求,给你提供适配Excel 2016的数组公式方案:
公式实现
在O10单元格输入以下数组公式(输入后按Ctrl+Shift+Enter确认,Excel会自动添加大括号):
{=INDEX($E$5:$L$5,MATCH(SMALL($E$6:$L$6+COLUMN($E$6:$L$6)/1000,ROW(A1)),$E$6:$L$6+COLUMN($E$6:$L$6)/1000,0))}
将公式下拉到O12单元格,即可依次得到对应第1、2、3小数值的唯一列名。
原理说明
- 给数值加微小偏移:
$E$6:$L$6+COLUMN($E$6:$L$6)/1000给每个数值加上对应列号的千分之一。例如E列(列号5)的数值会加0.005,F列加0.006,以此类推。这样即使原数值相同,加上偏移后会变成不同的小数,确保SMALL能区分开不同列的同数值。 - 按偏移后的值取前三小:
SMALL(...,ROW(A1))下拉时ROW(A1)会自动变为ROW(A2)、ROW(A3),对应取第1、2、3小的偏移后数值。 - 匹配位置并返回列名:MATCH找到偏移后数值的位置,INDEX返回E5:L5中对应的列名。
原公式问题分析
- 你用的第一个公式
{=INDEX(E5:L5, MATCH(SMALL(E6:L6,{1;2;3}), E6:L6,0))}出现重复,是因为SMALL返回相同原数值时,MATCH只会找到第一个匹配项的位置,导致重复返回列名。 - 第二个公式返回N/A,是因为COUNTIF的引用区域
$A$1:A$1逻辑错误,且IF条件未正确处理数值匹配逻辑,导致无法找到符合条件的位置。
内容的提问来源于stack exchange,提问作者Dreadpiraterai
相关产品推荐
相关产品推荐

