使用INDEX(MATCH())返回单元格的第n个值

时间:2014-05-16 17:28:54

标签: excel excel-formula excel-2007

我有一个包含2列的简单工作表

enter image description here

我想得到所有结果(在“H”栏上)(我只能得到第一次出现,我想知道我是否可以得到其他的)包含来自细胞的值G1,没有宏可能吗?任何做这件事的方式都会受到赞赏......任何想法?

1 个答案:

答案 0 :(得分:1)

您可以使用ROW()SMALL()来取代MATCH(),而不是=IFERROR(INDEX($C$4:$C$7,SMALL(IF($D$4:$D$7=$G$1,ROW($D$4:$D$7)-(ROW()-1)),ROWS($D$4:D4))),"Null") ,因为这总是第一次匹配。

$D$4:$D$7=$G$1

因此,如果数组False返回true(即该值等于G1中的值),您将获得这些值的行号,在这种情况下,您将获得4和6.所有其他将返回-(ROW()-1)

使用INDEX进行一些处理后,4和6变为1和3.这两个值将被输入SMALL()

1然后选择最小的,从第1个开始(从ROWS($D$4:D4)获得ROWS),当您向下拖动公式时,ROWS($D$4:D5)变为{{1}它给出2,SMALL最终得到第二个最小值,即3。

编辑:忘了提。你必须输入数组输入上面的公式。要执行此操作,请在键入公式后键入 Ctrl + Shift + 输入的组合键(如有必要,再次编辑公式),而不是< kbd>单独输入。