多列查找

时间:2015-10-08 20:40:19

标签: excel indexing match

有很多相关的帖子,但我没有找到一个非常喜欢这样的帖子。我目前正在通过Excel来帮助加快一个过程。 excel文件有两个电子表格。一个是数据,第二个是摘要。 在数据电子表格中,我将第一列作为名称,接下来的7列包含数据值(并非全部填充)。

Name     Data1    Data2    Data3   Country    Address
VA       123      456      621     USA        ExampleSt.
MD                123              France     123Street
DC       621                       Korea      999Avenue

UseCol   Value
Data2    456
Data3    621
Data1    000

我的问题是,我被赋予值“621”(可以出现在多个列中,但不会出现在其中)。我得到了它应该在“data1,data2,data3 ......”中的哪个集合。我如何找到包含该信息的名称?没有VBA,只能通过excel。

我被这个代码拦在了这里。

=INDEX(A1:D4,MATCH('621',*What do I put here*,0)

对于那个中间部分,它出现问题的原因是因为我在另一个电子表格中使用了哪个数据列。

修改

所以,我已经按照Tim Williams所说的关于使用偏移的说法了。但是,现在我有了第二篇专栏文章。所以我用来获取Name的代码如下

 =IFERROR(INDEX(A2:A4,MATCH(B7,OFFSET(A2:A4,0,MATCH(A7,B1:D1,0)),0,1),"ERROR")

我必须对OFFSET部分进行哪些更改才能查找Country或Address单元格?我相信我需要改变的唯一部分是内部“MATCH”功能。我应该匹配(A7,B1:D1,0)+3来到国家栏目吗?谢谢。

2 个答案:

答案 0 :(得分:1)

只要每个数字每列只能出现一次,这对我有用。

编辑:要获取其他列的匹配值,您只需调整公式的第一部分。

enter image description here

答案 1 :(得分:0)

您缺少的参数是您在其中尝试查找包含621的行的查找范围。只需引用所需的列范围,或创建命名范围并引用该范围。

有一个有力的范围

我为名为" NAMERANGE"的NAME列创建了一个命名范围。
我为名为" DATA1RANGE"的DATA1列创建了一个命名范围。

使用此公式,如果任何包含给定列范围内给定值的行,我可以检索该名称:

=INDEX(NAMERANGE,MATCH(621,DATA1RANGE,0))

根据需要替换值和数据范围。

动态范围

如果需要动态选择数据范围,可以使用INDIRECT()函数生成对所需查阅列的引用。例如,在R1C1样式引用中,要获取DATA3列,可以使用以下公式:

=INDIRECT("C"&4&")

因此,在R1C1样式中,假设您要搜索第二个数据列(电子表格的第三列),您的公式可能是:

=INDEX(NAMERANGE,MATCH(621,INDIRECT("C"&3),0))