2016-09-19 84 views
0

假设我有一个数据集:如何获得列名基于功能

A B C Final 
1 2 3 C 
4 5 6 C 

我想最终返回最大值的列名。在上面的例子中,3和6是最高值,所以列C将在'最终'列中返回。是否有一种有效的方法/公式可用于在不使用VBA的情况下获取列名?真实的数据集包含60列。

回答

0

我会尝试这样的事情来获得列字母。

=SUBSTITUTE(ADDRESS(1,MATCH(MAX(A3:C3),A3:C3,0),4),1,"") 

如果您想报头,我想有一个更简单的方法,但这种扩展将是

=INDIRECT(SUBSTITUTE(ADDRESS(1,MATCH(MAX(A3:C3),A3:C3,0),4),1,"")&1) 

对于头,更好的方式

=INDEX(A1:C1,1,MATCH(MAX(A3:C3),A3:C3,0)) 
0

HLOOKUP是没有VBA的方式,但很遗憾HLOOKUP只在数组的第一行进行搜索,因此您应该在底部添加“标题栏”

A B C Final 
1 2 3 <formula1> 
4 5 6 <formula2> 
A B C 

如果数据集开始于第一个弯道,一级方程式是:

=HLOOKUP(MAX(A2:C2);A2:C4;2;FALSE) 

Formula2将

=HLOOKUP(MAX(A3:C3);A3:C4;1;FALSE) 

等等

=HLOOKUP(MAX($A3:$C3);$A3:$C$4;<manual change here backward>;FALSE) 
0

您可以使用矢量形式的LOOKUP函数。

如果你的第一行,用A B C,就是标签,然后:

=LOOKUP(2, 1/(MAX(A2:C2)=A2:C2),$A$1:$C$1)