Excel INDEX和MATCH获取价值

时间:2013-09-17 18:45:18

标签: excel excel-formula excel-2010

我有一个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上将Meter = B作为SITEID放在列中,然后将Meter = P放在同一行中。

我从未使用过索引或匹配,我在网上查了一下,但我很困惑,希望有人能用正确的方法帮助我,或指出我正确的方向。

非常感谢!

4 个答案:

答案 0 :(得分:4)

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 + 输入,然后您可以将其填充到其他单元格。

我必须使用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))

答案 1 :(得分:1)

假设您的Sheet1看起来像这样:

tigeravatar Sheet1 data setup

你的Sheet2看起来像这样:

tigeravatar Sheet2 data setup

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

答案 2 :(得分:0)

辅助列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)

enter image description here

答案 3 :(得分:0)

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

不要忘记使用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))}

然后flash填充剩余的行。

enter image description here