【问题标题】:How can I search for a substring in a cell, using several cells as the search argument? [Google Sheets]如何使用多个单元格作为搜索参数来搜索单元格中的子字符串? [谷歌表格]
【发布时间】:2020-10-01 15:26:03
【问题描述】:

在 Google 表格中, 我试图指出特定列中的每个单元格(我们称之为“目标列”)是否包含一组单元格中列出的任何单词(我们称之为“单词仓库”)。

这个想法是目标列中的每个非空且不包含 Word 仓库中的任何单词的单元格都会为电子表格中的其他单元格添加 +1。

例如,如果我的列包含 {"No", "Not", "None", "Negative"} 中的任何一个,那么我将忽略它。如果它包含其他任何内容(并且不为空),那么它将被计算在内。

使用SearchVlookup 没有帮助,因为它们需要单个字符串值而不是单元格范围(Word 仓库)。

【问题讨论】:

  • 您是否有任何带有虚拟数据的表格或可以在您的问题中分享的示例输出?

标签: google-sheets substring google-sheets-formula


【解决方案1】:

你可以试试下面的公式:

=--ArrayFormula((SUM((--ISNUMBER(SEARCH(TRANSPOSE($D$1:$D$4),A1))))=0)*(A1<>""))

在示例中,范围 A1:A7Target column,范围 D1:D4Word warehouse

【讨论】:

    【解决方案2】:

    我可能有一个适合你的答案。见my sample sheet here

    示例表中的关键公式 C2 是:

    =QUERY(A2:B,"SELECT A WHERE UPPER(A) MATCHES '" & 
      UPPER(".*" & JOIN(".*|.*",FILTER(B2:B,B2:B<>"")) & ".*") &
      "' ",0)
    

    其中 A2:A 是您的“目标列”,B2:B 是您的“单词仓库”。 这会根据 B 列中的(过滤的)单词(或短语)列表测试 A 列中的每个单词或短语,并生成所有匹配项的列表。

    通过计算 A 列中的条目总数,并减去匹配项的计数,您可以获得所有不匹配项的计数。这可以用这个公式来完成 - 我的样本表中的 D2:

    =COUNTA(A2:A) - 
     COUNTA(QUERY(A2:B,"SELECT A WHERE UPPER(A) MATCHES '" & 
              UPPER(".*" & JOIN(".*|.*",FILTER(B2:B,B2:B<>"")) & ".*") & 
              "' ",0))
    

    请注意,我已使匹配不区分大小写。这可以通过删除公式中两个位置的上层函数来轻松删除。这也匹配部分匹配,例如“Catcher”匹配单词仓库中的“cat”。这也可以轻松更改。

    我也只计算每个短语一个匹配,即使它包含仓库中的几个单词。

    如果这有帮助,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-28
      • 2022-09-28
      • 2020-09-22
      • 2019-09-15
      • 2021-02-17
      • 2015-12-14
      • 2018-04-02
      相关资源
      最近更新 更多