【问题标题】:Multicolumn lookup多列查找
【发布时间】:2015-10-08 20:40:19
【问题描述】:

有很多相关的帖子,但我还没有找到一个像这样的帖子。我目前正在通过 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)

对于中间部分,之所以出现问题,是因为我得到了要在另一个电子表格中使用的数据列。

编辑

所以,我遵循了蒂姆威廉姆斯所说的使用偏移量。但是,现在我要访问第二个专栏。所以我用来获取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 到 Country 列吗?谢谢。

【问题讨论】:

  • 621 在您的示例表中出现两次 - 它会在现实中出现多次吗?如果是这样,您如何进一步确定要返回哪个名称? “...因为我得到了在另一个电子表格中使用的数据列。”那么,您会知道要查看哪个Data# 列吗?这些信息会在哪里?
  • 除非您可以提供要检查的列数 621 以及数据集中行的近似值。此外,应该从左到右阅读以找到第一个匹配项还是从上到下阅读?
  • 出于我自己的好奇心,您使用的是哪种 Excel 混合克隆,它接受单个刻度(例如 ')而不是双引号(例如 ")来表示公式中的文本?
  • BruceWayne - 要使用的列的信息在另一个单元格中。 Jeeped - 因为我们知道哪一列(因为它在另一个单元格中被告知),所以我相信它应该从上到下阅读。而且,我只说“621”,因为我不想说值 D4 和 B2。以这种方式查找此示例看起来会更容易。

标签: excel indexing match


【解决方案1】:

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

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

【讨论】:

  • 谢谢!那工作得很好。我对 excel 还很陌生,不太了解“OFFSET”的作用,所以发现它在这里很有用确实很有帮助。非常感谢!
  • 其实我有个问题。这仅在名称 col 在 DATA 列之前有效吗?在我的实际工作中,我在 DATA 列之前有一个 name 列。然后我有一个次要名称列,位于我的数据列之后。当我尝试做同样的事情时(只是将 $A$2:$A$7 切换到 $F$2:$F$7,它给了我一个错误。出了什么问题?
  • 您需要根据相对列位置调整偏移量。
  • 我正在浏览一堆文章,但我并不真正了解如何使用偏移量。伊玛举了一个更具体的例子来说明我的 excel。谢谢你的帮助! @蒂姆·威廉姆斯。如果您查看原始帖子,我将进行编辑
  • 是的!这就对了!!太感谢了!我已经为此苦苦挣扎了几天,终于开始工作了。我将不得不更多地阅读“OFFSET”和“INDEX”功能。再次感谢! @蒂姆·威廉姆斯。
【解决方案2】:

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

有给定的范围

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

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

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

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

具有动态范围

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

=INDIRECT("C"&4&")

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

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

【讨论】:

  • 是否可以通过匹配来执行 INDIRECT 功能?因为我知道列号的唯一方法是查看 col.ref。那是在excel电子表格中。换句话说,要使用 INDIRECT,我不能有一个随机列可供选择。对吗?
  • 我不确定您所说的有一个随机列可供选择是什么意思。使用 Indirect,您可以创建所需的任何引用。如果您已经有了参考,那么您就不需要 Indirect 函数。使用间接,您只需根据您在工作表中使用的方式,以 A1 或 R1C1 表示法样式构建范围字符串。
猜你喜欢
  • 1970-01-01
  • 2013-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-20
  • 2020-01-24
  • 1970-01-01
相关资源
最近更新 更多