【问题标题】:How can I find exact occurences of a string in another string in Google Sheets?如何在 Google 表格的另一个字符串中找到一个字符串的确切出现次数?
【发布时间】:2019-07-01 08:09:26
【问题描述】:

我有一列(来自 google 表单)包含一个以逗号分隔的名称列表,我想检查此列表中是否包含特定名称。

有几个功能(匹配、搜索、查找等),我试过了,它在一定程度上发挥了作用。一旦列表包含像“Carolin”这样的名称并且我要检查的名称是“Caro”,就会出现问题。

然后它总是返回“true”,这在逻辑上是正确的,因为字符串“Carolin”显然包含字符串“Caro”。

就我而言,我想区分“Carolin”和“Caro”,如示例所示。我该怎么做?

names                            | name to check   | expected result
-----------------------------------------------------------------------
Michael, Carolin, John, Jane     | John            | True
Michael, Carolin, John, Jane     | Sarah           | False
Michael, Carolin, John, Jane     | Carolin         | True
Michael, Carolin, John, Jane     | Caro            | False
Michael, Carolin, John, Jane R.  | Jane R.         | True
Michael, Carolin, John, Jane R.  | Jane            | False

编辑:在示例中添加了两行。我忘记了另一个特殊情况。

【问题讨论】:

    标签: regex google-sheets string-matching google-sheets-formula array-formulas


    【解决方案1】:
    =ARRAYFORMULA(IFERROR(REGEXMATCH(JOIN( ,
     REGEXMATCH(TRIM(SPLIT(A1, ",")), "^"&B1&"$")), "T")))
    

    【讨论】:

    • 这个公式可以满足我的要求,但是,我认为我在答案中发布的公式要短得多。 arrayformula 的优点/缺点是什么?
    • 优点是你不需要拖拽公式例如。每行有 1 个公式。您只需将其粘贴到第一个单元格中,它就会像图像中一样自动计算其余部分
    【解决方案2】:

    请尝试:

    =REGEXMATCH(A2,"\b"&B2&"\b")
    

    REGEXMATCH\b 表示 ASCII 字边界。

    【讨论】:

    • 是的,谢谢,这行得通。但我想我忘记了另一个特例是“Alex R”。出现在名称中,要检查的名称是“Alex”,我希望结果为 False。让我调整一下我的问题。
    • 我想我找到了解决方案:=REGEXMATCH(A2, B2(,|$))
    【解决方案3】:

    如果有人正在寻找一个简短的解决方案,我发现这个公式有效:

    =REGEXMATCH(A2,B2&"(,|$)")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-14
      • 1970-01-01
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 2011-07-01
      • 2014-05-26
      相关资源
      最近更新 更多