【问题标题】:Vlookup with multiple matches [duplicate]具有多个匹配项的 Vlookup [重复]
【发布时间】:2016-03-03 03:08:10
【问题描述】:

我有一张这样的 Excel 表格..

HA-MASTER   CategoryID
38231-S04-A00   14
39790-S10-A03   14
38231-S04-A00   15
39790-S10-A03   15
38231-S04-A00   16
39790-S10-A03   16
38231-S04-A00   17
39790-S10-A03   17
38231-S04-A00   18
39790-S10-A03   18
38231-S04-A00   19
39790-S10-A03   19
38231-S04-A00   20
39790-S10-A03   20
38231-S04-A00   21
39790-S10-A03   21
38231-S04-A00   22
39790-S10-A03   22
38231-S04-A00   23

有没有办法做一个 vlookup(或类似的东西)来返回类似的东西:

14    38231-S04-A00, 39790-S10-A03
15    38231-S04-A00, 39790-S10-A03

etc...

【问题讨论】:

  • 行是否总是按类别 ID 配对(所有类别 ID 是否总是有 2 行?)。如果是这样,您可以这样做 2 VLOOKUPS 然后连接结果。
  • 如果每个类别的行数不确定,那么您无法用公式优雅地解决这个问题,您至少需要一个连接数组的 UDF。有了它,您可以使用IFs 和数组公式来提取所有匹配的行,然后使用 UDF 将它们连接起来。问候

标签: excel csv vba


【解决方案1】:

通过公式和第三列有一种粗略的方法。

1) 在您的第 3 列中,使用以下公式并将其向下扩展。 =IF(B2=B3,A2&", "&C3,A2)

注意:这假设您的示例从单元格 A1 开始。其中 A1 = "HA-MASTER"

2) 现在让您的 VLOOKUP 运行,它会在匹配时返回第 3 列(而不是第 1 列)。 VLOOKUP 返回它匹配的第一个结果,它现在是与它的 ID 号匹配的所有行的串联。

注意:您需要确保所有行都根据 B 列(CategoryID)进行排序才能正常工作。

注意 2:我假设您正在寻找连接列表,而没有将 CategoryID 连接到您的结果。

【讨论】:

  • 谢谢,如果我每个类别只有 2 个数字,这将有效。我应该在我的问题中使用更大的数据样本......有没有办法可以改变它,以便即使行数超过 2 也包括所有“HA-MASTER”数字?
  • 我更新了公式,它现在应该可以正常工作了(你需要多少行)。因为我没有仔细检查我的工作就徒手做了,所以我犯了一个错误。我将“A3”更改为“C3”,所以现在累积。
猜你喜欢
  • 1970-01-01
  • 2023-03-14
  • 2013-04-03
  • 1970-01-01
  • 1970-01-01
  • 2020-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多