【问题标题】:Excel INDEX and MATCH Get ValueExcel INDEX 和 MATCH 获取值
【发布时间】:2018-05-05 15:54:43
【问题描述】:

我有一个 Excel 工作簿,我需要一些关于 INDEX 和 MATCH 或任何其他可以得到最终结果的公式的帮助。

这是sheet1:

SIT_ID      METER   SUSE_CD
10834282    DT0061      B 
10834282    AW7931      P 
21676286    CQ9635      P 
21676286    DP4838      B 
21726281    AW7880      P 
21726281    DT0032      B 

这是 Sheet2:

Site ID        B    P
10834282        
21676286        
21726281        

最终我要做的是在 Sheet2 上将 SITEID = B 的仪表放在列中,然后将 = P 的仪表放在同一行中。

我从未使用过索引或匹配,我在网上查找过,但我很困惑,希望有人可以帮助我正确的公式或指出正确的方向。

非常感谢!

【问题讨论】:

  • 那么第一行B下应该有DT0061,P下应该有AW7931?
  • @JüriRuut 是的,这是正确的

标签: excel excel-formula excel-2010


【解决方案1】:

INDEX 首先是一个范围,然后是一个行号,一个可选的列号(和一个可选的区域号)。

MATCH 接受一个要查找的值、一个数组和一个模式。

在您的问题中,您可以在 Sheet2 单元格 B2 中使用以下内容:

=INDEX(Sheet1!$B$2:$B$7, MATCH($A2, IF(Sheet1!$C$2:$C$7=B$1,Sheet1!$A$2:$A$7), 0))

此公式是一个数组公式,可以与 Ctrl+Shift+Enter 一起使用,然后您可以将其填充到其他单元格中。

我必须使用IF,因为要检查两个条件。

编辑:如果您的单元格格式不同,请使用这个:

=INDEX(Sheet1!$B$2:$B$7,MATCH($A2*1,IF(Sheet1!$C$2:$C$7=B$1,Sheet1!$A$2:$A$7*1),0))

EDIT2:添加修剪:

=INDEX(Sheet1!$B$2:$B$7,MATCH($A2*1,IF(TRIM(Sheet1!$C$2:$C$7)=TRIM(B$1),Sheet1!$A$2:$A$7*1),0))

EDIT3:如果您在完整数据上使用它,请更改范围:

=INDEX(Sheet1!$B:$B,MATCH($A2*1,IF(TRIM(Sheet1!$C:$C)=TRIM(B$1),Sheet1!$A:$A*1),0))

【讨论】:

  • @kevinc 你的第一个表在 Sheet1 的 A1:C7 范围内,你的第二个表在 sheet2 的 A1:C4 范围内,对吧?您确定在将公式粘贴到单元格后使用的是 Ctrl+Shift+Enter 而不是单独使用 Enter 吗?
  • 是的,我确定我按了 Ctrl+Shift+Enter,是的,这是正确的
  • @kevinc 我想我知道是什么问题。一些Site ID 是数字格式,而一些是文本格式。看看修改后的公式是否有效。
  • 是的,我仍然得到 N/A --- 这让我发疯了
  • @kevinc 呃...我不明白你为什么会出现这个错误。这是一个查找错误。尝试删除所有空格?单元格中的空格会导致函数中断。我可以将 TRIM() 添加到相关部分,但这确实是一个数据保存问题 :( 我会添加它以防万一。
【解决方案2】:

假设您的 Sheet1 如下所示:

你的 Sheet2 看起来像这样:

Sheet2 单元格 B2 中并向下复制到单元格 C4 的公式为:

=INDEX(Sheet1!$B$2:$B$7,MATCH(1,INDEX((Sheet1!$A$2:$A$7=$A2)*(Sheet1!$C$2:$C$7=B$1),),0))

注意,这是一个常规公式,所以不需要 Ctrl+Shift+Enter

【讨论】:

  • 我手动输入了这些值,它起作用了......但是当我复制我的列表时,这个公式得到了一个不适用......我想知道为什么
  • 就像 Jerry 建议的那样,这意味着该公式无法在 Sheet1 中正确找到数据。这通常是由于格式问题或错误的数据输入。我必须查看您的数据才能更具体地发表评论。
  • 是的,我很遗憾地发现它的格式问题......但是我有 1000 多个类似这样的站点 IDS
【解决方案3】:

辅助列 D 被添加到初始列中。
D2:=$A2 & $C2

现在可以对串联的 SITE_ID 和 SUSE_CD 进行简单搜索:
H2:=MATCH($G2&" B";$D$2:$D$8;0)

结果将是数组$D$2:$D$8 中所需字符串的行号(在本例中为=1)。

INDEX 显示单元格的值,通过从左上角单元格 (A2) 计算数组 $A2:$A$8 中的第 n 行(由 MATCH 定义)和第 m 列 (=2) 找到。

总共:=INDEX($A$2:$B$8;MATCH($G2&" B";$D$2:$D$8;0);2)

【讨论】:

    【解决方案4】:

    解决这个问题的最简单方法是, 在匹配函数中使用连接运算符。

    不要忘记使用 Ctrl+Shift+Enter

    在工作表 2 的 B 列中使用以下公式

    {=INDEX(Sheet1!$B:$B,MATCH(Sheet2!$A2&Sheet2!$B$1,Sheet1!$A:$A&Sheet1!$C:$C,0))}
    

    以及表 2 的 C 列中的以下公式

    {=INDEX(Sheet1!$B:$B,MATCH(Sheet2!$A2&Sheet2!$C$1,Sheet1!$A:$A&Sheet1!$C:$C,0))}
    

    然后快速填充剩余的行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多