【问题标题】:Using Index Match to find the second matched column in a region使用索引匹配查找区域中的第二个匹配列
【发布时间】:2019-09-30 01:13:12
【问题描述】:

我尝试使用 Index/Match 函数从某个区域查找值,因为我的列索引可能有两个相同的值,所以我被卡住了,例如您的区域如下所示

例如,我想为测试 1 找到 2018 年 1 月 24 日的值,但我使用公式,它给了我测试 1 的第一个值,即 0.31,但我想要的是 0.83

=INDEX(G5:I11,MATCH(F5,F5:F11,0),MATCH("Test 1",G4:I4,0))

我做了一些搜索,我认为我应该使用 large,所以这意味着为您在该行中找到的最后一个匹配值提供列的位置,而不是第一个,但我不确定如何实现 Large 函数到我的公式

这意味着给我你在第二场比赛中找到的最后一场比赛的列号,你知道当你输入 MATCH("Test 1",G4:I4,0)) 时,它会返回第一个匹配的值,但我想2nd 或 3rd(表示最后一个)

  Test 1   Many  Test 1 
1  0.31    0.21   0.83
2   1       2      3

【问题讨论】:

  • 你从哪里得到 0.31 的值?由于没有 0.83 的值,你认为它会从哪里来?
  • @SolarMike 你能看到我编辑的新数据吗?我不知道发生了什么,我更新的图像现在显示了
  • 那么,第一个数据表是什么?
  • @SolarMike 0.31。如果您对此表使用索引匹配,则匹配“1”的行号并匹配“Test 1”的列号,但我想要“Test 1”的第二个位置,而不是第一个
  • 我知道 index() 和 match() 是如何工作的。我问您使用的是哪些数据表,因为您显示的原始数据与您陈述或预期获得的结果不符。

标签: excel excel-formula


【解决方案1】:

在您的情况下,您可以只在 I 列上使用 INDEX()。这样您就可以松开对列的引用。

下面我举了一个例子,如果你必须使用LARGE()

B11中的公式:

=INDEX(D2:D8,MATCH(B10,A2:A8,0))

B12中的公式:

{=INDEX(B2:D8,MATCH(B10,A2:A8,0),LARGE((B1:D1="Test1")*(COLUMN(B1:D1)-1),1))}

注意最后一个是通过CtrlShiftEnter

输入的数组公式

【讨论】:

    【解决方案2】:

    基于您的问题的可能解决方案,虽然您的示例数据有点难以理解,但可能是B11 中的这个公式。 数组公式:SHIFT + CTRL + ENTER

    =INDEX($B$2:$D$7,
            MATCH($A11,$A$2:$A$7,0),
            SMALL(IF($B$1:$D$1=B$10,COLUMN($A$1:$C$1)),COUNTIF($B$10:B$10,B$10))
          )
    

    你可以把它拖到一边。当您将公式调整到您自己的表格时,请注意$

    正如您已经说过的,您需要在公式中使用SMALLIF 函数在上表中查找例如 Test1 的出现并返回列号。 COUNTIF 将搜索词的出现次数计数到当前列并将结果提供给SMALL

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-23
      • 2020-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多