【问题标题】:VLOOKUP with use of wildcard and CONCATENATE使用通配符和连接的 VLOOKUP
【发布时间】:2016-06-07 10:01:31
【问题描述】:

F5 我有一个ID。例如1358。在F6 中,我将另一个值添加到 ID 字符串中。例如2.

在我的'pieces' 表中有一堆Level ID。例如

135821 135822 135823 135824

=VLOOKUP("*"(CONCATENATE(F5,F6))"*",pieces[[Level ID]:[Move Recorded]],2,FALSE).

我希望能够找到所有 13582* 的条目并在下面列出。我不确定如何处理多个条目,以及 VLOOKUP 是否是最好的方法。希望我已经说清楚了,任何帮助表示赞赏!

【问题讨论】:

  • 您的 vlookup 显示有两列数据,而您想要第二列。但你的叙述表明你只想要一个结果。
  • 啊,好吧,[Level ID]:[Move Recorded] 实际上涵盖了 E:T 列,因为我想从中获取数据。如何相应地改写公式?
  • 通配符使用文本搜索而不是数字搜索。在这种情况下,您正在搜索文本字符串,但输入带有数值的表格。据我所知,没有办法告诉 VLOOKUP 将表格视为文本。您要么必须使用 =TEXT([Level ID],"@") 之类的内容在 [Level ID] 右侧添加一个额外的列,要么使用其他方法。
  • 此外,您还没有指定您打算如何在下面列出它们。由于返回的项目数量是动态的,因此您希望如何列出它们?在单个单元格中还是在预定义的行数中?
  • 您不能简化与CONCATENATE("*",F5,F6,"*") 连接的字符串吗?

标签: excel concatenation wildcard vlookup


【解决方案1】:

Vlookup 只会返回第一个,您需要使用 Small 或 Aggregate 之类的东西来获取列表。

如果您有 2010 年或之后的版本,请使用此公式:

=INDEX(peices[Move Recorded],MATCH(AGGREGATE(15,6,peices[Level ID]/(ISNUMBER(SEARCH("*" & $F$5 & $F$6 & "*",peices[Level ID]))),ROW(1:1)),peices[Level ID],0))

如果您有 2007 年或更早的版本,则需要使用此数组公式:

=INDEX(peices[Move Recorded],MATCH(SMALL(IF(ISNUMBER(SEARCH("*" & $F$5 &$F$6& "*",peices[Level ID])),peices[Level ID]),ROW(1:1)),peices[Level ID],0))

作为数组,退出编辑模式时需要按Ctrl-Shift-Enter确认。

【讨论】:

  • 使用 2010。=INDEX(pieces[Tenant Type],MATCH(AGGREGATE(15,6,pieces[Level ID]/(ISNUMBER(SEARCH(F5 & F6 & "*",pieces[Level ID]))),ROW(1:1)),pieces[Level ID],0)) 返回 #N/A。怀疑我做对了。功能编号和选项是什么意思?
  • 15 是 SMALL() 并且 6 忽略错误。几个问题;您确定 F5 和 F6 中的值有一个级别 ID 吗?其次,这取决于级别 ID 是数字而不是文本。我也错过了你想要一个外卡在前面,请查看编辑并尝试。
  • 您可能还希望将其包装在 IFERROR 中,并在未找到结果时返回一个空字符串。或者在 IFERROR 不可用的情况下,将公式移动到其他位置并使用常规 IF 来引用计算值。
  • @snoopen 我会等到我们找到它目前无法正常工作的原因。但是我同意,一旦公式起作用,将其包装在 IFERROR(formula,"")
  • @ScottCraner 我没有提到 F5 中的 LevelID 1358 和 F6 中的 2 位于公式所在的不同页面上。或者换句话说,表格“pieces”位于名为“pieces”的页面中,而 F5 和 F6 位于名为“front”的页面中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
  • 2018-10-20
  • 1970-01-01
  • 1970-01-01
  • 2014-04-29
  • 1970-01-01
  • 2016-09-09
相关资源
最近更新 更多