【问题标题】:REGEXMATCH with regex reference to cell正则表达式引用单元格的 REGEXMATCH
【发布时间】:2017-03-16 22:53:43
【问题描述】:

我正在按关键字过滤 gSheet 上的数字,这些数字由查看者从通过数据验证创建的预定下拉列表中选择。

观众可以选择多个选项,包括“全部”。因为“All”不是数据源中的可过滤关键字,所以我使用 FILTER(REGEXMATCH(IF(...))) 对数据进行排序。下拉列表位于单元格 B1 中,因此当 IF 语句为 false 时,我在 REGEXMATCH 中引用它。

问题:RegEx 匹配文本,而不是数字。当我引用单元格 B1 时,公式会出错,因为它不是文本值。但是当我将它设为文本值时,它找不到匹配项(当然)。


当前

=SUM(IFERROR(FILTER(Sheet1!$E:$E,
REGEXMATCH(Sheet1!$I:$I,IF(B1="All","organic|paid|other",B1))=true),0))
  • 根据所选关键字对 E 列求和
  • 第 I 列包含要匹配的关键字
  • 单元格 B1 包含用户选择关键字的下拉列表

我的尝试

  • VALUE(B1) - 引用它作为一个值,希望它会读取返回的文本;它因输入错误而出错
  • TEXT(B1) - 将其作为文本引用;它读作“B1”
  • """&B1&""" - 三引号,意思是引用的引号将传递并包含 B1 返回的文本;上面写着“&B1&”(哦)
  • \"B1\" - 转义单元格引用;我第一次尝试在正则表达式中逃脱,所以这很可能是一个糟糕的实现的正确答案

从 REGEXMATCH 表达式中引用单元格 B1 的任何其他想法?

【问题讨论】:

    标签: regex google-sheets excel-formula


    【解决方案1】:

    单元格 B1 中包含的值在任何公式中都被简单地引用为 B1。例如,regexmatch(A1, B1)

    使用数组时,=filter(A1:A10, regexmatch(A1:A10, B1)) 可以工作。

    如果范围(在我的示例中为 A1:A10)包含需要转换为文本的数字,一种方法是将它们与空字符串连接起来(这适用于数组):=filter(A1:A10, regexmatch(A1:A10 & "", B1))

    备注

    • regexmatch(...)=true是多余的,写regexmatch(...)就行了。
    • 考虑错误由公式的其他部分引起的可能性;删除无关的部分以隔离问题。

    【讨论】:

    • 谢谢!我去掉了冗余。原来问题是字母大小写不匹配;关键字是句子大小写,而要匹配的文本都是小写的。我忘记了正则表达式有多严格。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 2018-01-12
    • 2015-12-07
    • 2020-11-14
    • 2011-07-01
    相关资源
    最近更新 更多