【问题标题】:Return row label for large value in excel返回excel中大值的行标签
【发布时间】:2015-01-13 18:20:19
【问题描述】:

我在 excel 中的这个命令有问题

=INDEX(A2:A41;MATCH(LARGE(M2:M41;1);M2:M41;0))

数据:

A          M 
name1      0,55
name2      2.01
name3      10.00
name4      2.01
name5      5.00

公式:

=INDEX(A2:A41;MATCH(LARGE(M2:M41;1);M2:M41;0))
=INDEX(A2:A41;MATCH(LARGE(M2:M41;2);M2:M41;0))
=INDEX(A2:A41;MATCH(LARGE(M2:M41;3);M2:M41;0))
=INDEX(A2:A41;MATCH(LARGE(M2:M41;4);M2:M41;0))
=INDEX(A2:A41;MATCH(LARGE(M2:M41;5);M2:M41;0))

这些命令将返回:

TOP 5 Values:
name5 
name3
**name2**
**name2**
name1

问题是如果两个值是相同的 p.ex. name2 = name4 = 2.01,“name2”出现两次,“name4”没有出现。

我试图让它返回这个:

name5 
name3
**name2**
**name4**
name1

或者这个:

name5 
name3
**name4**
**name2**
name1

顺序无所谓

编辑 1
同样的问题.. 这个公式:

=INDEX($A$2:$A$41;SMALL(INDEX(ROW($1:$40)+($M$2:$M$41<>LARGE($M$2:$M$41;ROW(1:1)))*1E+99;;);COUNTIF($M$2:$M2;$M2)))
=INDEX($A$2:$A$41;SMALL(INDEX(ROW($1:$40)+($M$2:$M$41<>LARGE($M$2:$M$41;ROW(2:2)))*1E+99;;);COUNTIF($M$3:$M3;$M3)))
=INDEX($A$2:$A$41;SMALL(INDEX(ROW($1:$40)+($M$2:$M$41<>LARGE($M$2:$M$41;ROW(3:3)))*1E+99;;);COUNTIF($M$4:$M4;$M4)))
=INDEX($A$2:$A$41;SMALL(INDEX(ROW($1:$40)+($M$2:$M$41<>LARGE($M$2:$M$41;ROW(4:4)))*1E+99;;);COUNTIF($M$5:$M5;$M5)))
=INDEX($A$2:$A$41;SMALL(INDEX(ROW($1:$40)+($M$2:$M$41<>LARGE($M$2:$M$41;ROW(5:5)))*1E+99;;);COUNTIF($M$6:$M6;$M6)))

返回相同的结果:

=INDEX(A2:A41;MATCH(LARGE(M2:M41;1);M2:M41;0))
=INDEX(A2:A41;MATCH(LARGE(M2:M41;2);M2:M41;0))
=INDEX(A2:A41;MATCH(LARGE(M2:M41;3);M2:M41;0))
=INDEX(A2:A41;MATCH(LARGE(M2:M41;4);M2:M41;0))
=INDEX(A2:A41;MATCH(LARGE(M2:M41;5);M2:M41;0))

如果 M 列有两个相同的值,“name2”出现两次,另一个根本不出现...

编辑 2
我只想要列 M 的 TOP 5 值,并像这样返回它们的行:

前 5 名

name5 
name3
name2
name4
name1

难道没有任何简单的命令可以将列 M 从最大值重新排列到最小值吗?并返回行名,而不是数字。


同样的问题.. 这个公式:

=INDEX($A$2:$A$41;SMALL(INDEX(ROW($1:$40)+($M$2:$M$41<>LARGE($M$2:$M$41;ROW(1:1)))*1E+99;;);COUNTIF($M$2:$M2;$M2)))
=INDEX($A$2:$A$41;SMALL(INDEX(ROW($1:$40)+($M$2:$M$41<>LARGE($M$2:$M$41;ROW(2:2)))*1E+99;;);COUNTIF($M$3:$M3;$M3)))
=INDEX($A$2:$A$41;SMALL(INDEX(ROW($1:$40)+($M$2:$M$41<>LARGE($M$2:$M$41;ROW(3:3)))*1E+99;;);COUNTIF($M$4:$M4;$M4)))
=INDEX($A$2:$A$41;SMALL(INDEX(ROW($1:$40)+($M$2:$M$41<>LARGE($M$2:$M$41;ROW(4:4)))*1E+99;;);COUNTIF($M$5:$M5;$M5)))
=INDEX($A$2:$A$41;SMALL(INDEX(ROW($1:$40)+($M$2:$M$41<>LARGE($M$2:$M$41;ROW(5:5)))*1E+99;;);COUNTIF($M$6:$M6;$M6)))

返回相同的结果:

=INDEX(A2:A41;MATCH(LARGE(M2:M41;1);M2:M41;0))
=INDEX(A2:A41;MATCH(LARGE(M2:M41;2);M2:M41;0))
=INDEX(A2:A41;MATCH(LARGE(M2:M41;3);M2:M41;0))
=INDEX(A2:A41;MATCH(LARGE(M2:M41;4);M2:M41;0))
=INDEX(A2:A41;MATCH(LARGE(M2:M41;5);M2:M41;0))

如果 M 列有两个相同的值,“name2”出现两次,另一个根本不出现... 我是不是做错了什么?

【问题讨论】:

    标签: excel indexing match


    【解决方案1】:

    可能在管道的某个地方提供了一个数组公式,但这里有一个标准公式解决方案。

              

    O2 中的公式是,

    =INDEX($A$2:$A$41,SMALL(INDEX(ROW($1:$40)+($M$2:$M$41&lt;&gt;LARGE($M$2:$M$41,ROW(1:1)))*1E+99,,),COUNTIF($M$2:$M2,$M2)))

    根据需要填写。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多