查找列值Excel

时间:2017-09-03 00:38:26

标签: excel

我在Excel中有一个如下所示的数据:

A   17  8,5 5,666666667 4,25    3,4 2,833333333 2,428571429
B   5   2,5 1,666666667 1,25    1   0,833333333 0,714285714
C   5   2,5 1,666666667 1,25    1   0,833333333 0,714285714
G   4   2   1,333333333 1       0,8 0,666666667 0,571428571

我想找一个代表特定值的字母。例如,如果我搜索" 17"我想得到输出" A"如果我正在寻找0,8我想得到" G"。任何人都可以帮助我吗?

(实际上我想找到数据中从最大值到最低值的所有值,并找到值的相应字母)

1 个答案:

答案 0 :(得分:3)

=INDEX($A$1:$A$4,AGGREGATE(14,6,ROW($B$1:$H$4)/(L3=$B$1:$H$4),1))

假设您的示例数据位于A1:H4范围

如果您有重复的值,可以找到此公式将返回最大行号中的值。如果您想要第一行编号中的值,可以将14更改为15。

POC

修改

选项1

=INDEX($A$1:$A$21,AGGREGATE(14,6,ROW($B$18:$L$21)/(L3=$B$18:$L$21),1))

选项2

=INDEX($A$18:$A$21,AGGREGATE(14,6,ROW($B$18:$L$21)/(L3=$B$18:$L$21),1)-ROW($A$18)+1)

POC#2

移动它时遇到的问题很可能是因为您的范围参考更改。从聚合检查返回的行号必须是索引范围内的一行。因此,选项1保持索引范围较大,但匹配聚合结果中的所有可能行。选项二将范围缩小到仅数据,并调整结果以减去数据之前的行数,因此它实际上指的是您想要查看的索引范围内的哪一行。

选项3

感谢Scott Craner指出完整的列引用在聚合函数之外是完全可以接受的,你也可以使用:

=INDEX($A:$A,AGGREGATE(14,6,ROW($B$18:$L$21)/(L3=$B$18:$L$21‌​),1)