【问题标题】:Vlookup all the values matching the search term instead of just one.查找与搜索词匹配的所有值,而不仅仅是一个。
【发布时间】:2017-04-25 14:27:39
【问题描述】:

因此,以下公式仅返回范围中的第一个值。我有点需要将所有匹配的搜索结果编入索引,而不仅仅是 1 个。

=Vlookup("*" & B3 & "*",A:A,1,0)

SPREADSHEET LINK

【问题讨论】:

    标签: excel google-sheets excel-formula vlookup gs-vlookup


    【解决方案1】:

    使用 Google 表格使用查询:

    =QUERY(A:A,"select A where A contains """ & B3 &"""")
    


    由于您有 Excel 标记,因此请使用以下公式:

    =IFERROR(INDEX(A:A,AGGREGATE(15,6,ROW($A$2:INDEX(A:A,MATCH("ZZZ",A:A)))/(ISNUMBER(SEARCH($B$3,$A$2:INDEX(A:A,MATCH("ZZZ",A:A))))),ROW(1:1))),"")
    

    复制/拖动它以满足您的需要。

    【讨论】:

    • 是否可以通过查询使其不区分大小写?
    • 查询区分大小写。确保您的数据中有多个包含该搜索项的条目。 jea 在您提供的列表中只有一个匹配项。
    • @rockinfreakshow 试试这个:=QUERY(A:A,"select A where upper(A) contains upper(""" & B3 &""")")
    • =QUERY(A:B,"select A,B where LOWER(A) contains """ & C3 &"""" OR LOWER(B) contains """ & C3 &"" "")") 这是错误的,但是如果我想在 A 和 B 列中搜索查询词,需要修复什么
    • 这是一个新问题@rockinfreakshow。这个问题只涉及单列。将其中一个答案标记为正确并提出一个新问题。
    【解决方案2】:

    另一种选择是

    =FILTER(A2:A, SEARCH(B3, A2:A))
    

    过滤掉那些可以找到字符串的值,并且还支持字符串中的通配符,或者可以扩展以匹配正则表达式。

    【讨论】:

      【解决方案3】:

      vlookup 旨在始终为您提供一个结果。您的查询匹配然后它将返回值,否则它将返回错误。由于您想要所有值,我会推荐一种不同的方法。

      1. 在您的列旁边创建一个列(在您的情况下为 A:A)并用您的条件 =IF($A1 = ("*" & B3 & "*", 1, 0) 填充它。此列应填写 0 和 1,具体取决于您 B 列的内容。
      2. 对 A 列中的值执行任何操作,并将新创建的列作为条件。例如,将 A 列中与您的条件匹配的所有值相加:=SUMIFS(A:A, B:B, "=1")

      我希望这有助于简化您的 Excel。如果您需要进一步的帮助,可以详细说明 A 列和 B 列的内容以及您希望通过 =vlookup() 实现的目标。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多