【问题标题】:Using INDEX(MATCH()) to return the n'th value of a cell使用 INDEX(MATCH()) 返回单元格的第 n 个值
【发布时间】:2014-05-16 17:28:53
【问题描述】:

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

我想获得包含单元格 G1 中的值的所有结果(在“H”列上)(我只能获得第一次出现,我想知道是否可以获得其他结果),如果没有宏?任何方式都将不胜感激...有什么想法吗?

【问题讨论】:

    标签: excel excel-formula excel-2007


    【解决方案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返回true(即值等于G1中的值),您将获得这些值的行号,在这种情况下,您将获得4和6。所有其他都将返回@ 987654326@.

    经过-(ROW()-1) 的一些处理后,4 和 6 变为 1 和 3。这两个值将被馈送到 INDEX

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

    编辑:忘了提。你必须数组输入上面的公式。为此,请在键入公式后键入 Ctrl+Shift+Enter 的组合键(必要时再次编辑公式)而不是 单独输入。

    【讨论】:

    • 提前致谢,我正在尝试理解公式的逻辑,我将公式放在 F4 上并向下拖动,我得到了 ~text 1~ 和其余的空值。 ..我错过了什么吗?
    • @Stephenloky 哦,我忘了提。你必须数组调用这个公式。键入后,不要按回车,而是按 Ctrl+Shift+Enter 来“数组输入”。之后,您将在公式周围看到{}
    • 哇!魔法!!!感谢您的支持,我真的很感激它。还有一个问题,为什么将数组设置为 D4-D7 而不是 D4-D8(与 C 一样)?
    • @Stephenloky 另外,您可以使用“公式”选项卡下的“评估公式”来逐步查看会发生什么。
    • @Stephenloky 我添加了这一点,因此如果您在上方添加一行/在上方删除一行,该公式仍然有效。最简单的方法是在那里使用ROW($D$4:$D$7)-3,但是当您插入/删除一行时,它很容易破坏公式。
    猜你喜欢
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 2017-07-27
    • 1970-01-01
    相关资源
    最近更新 更多