Regex 带有对单元格的正则表达式引用的正则表达式匹配

Regex 带有对单元格的正则表达式引用的正则表达式匹配,regex,google-sheets,excel-formula,Regex,Google Sheets,Excel Formula,我正在按关键字过滤gSheet上的数字,这是观众从通过数据验证创建的预定义下拉列表中选择的 观众可以选择多个选项,包括“全部”。因为“All”在数据源中不是可过滤的关键字,所以我使用FILTER(REGEXMATCH(IF(…))对数据进行排序。下拉列表位于单元格B1中,因此当IF语句为false时,我在REGEXMATCH中引用它 问题:正则表达式与文本匹配,而不是与数字匹配。当我引用单元格B1时,公式会出错,因为它不是文本值。但当我将其设置为文本值时,它找不到匹配项(当然) 当前: =SU

我正在按关键字过滤gSheet上的数字,这是观众从通过数据验证创建的预定义下拉列表中选择的

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

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


当前

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

我所尝试的

=SUM(IFERROR(FILTER(Sheet1!$E:$E,
REGEXMATCH(Sheet1!$I:$I,IF(B1="All","organic|paid|other",B1))=true),0))
  • VALUE(B1)
    -引用它作为一个值,希望它能读取返回的文本;它因输入错误而出错
  • 文本(B1)
    -将其引用为文本;上面写着“B1”
  • ”&B1&“
    ”-三重引号,其思想是引用的引号将传递并封装B1返回的文本;上面写着“&B1&”(d'oh)
  • “B1\”
    -转义单元格引用;我第一次尝试用正则表达式逃逸,所以这很可能是一个错误实现的正确答案

从REGEXMATCH表达式中引用单元格B1还有其他想法吗?

单元格B1中包含的值从任何公式中引用,仅作为B1。例如,
regexmatch(A1,B1)

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

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

评论
  • regexmatch(…)=true是多余的,只需写
    regexmatch(…)
  • 考虑错误可能是由公式的其他部分引起的;拆下无关零件以隔离问题
谢谢!我去掉了多余的部分。原来问题是字母大小写不匹配;关键词是句子大小写,而匹配的文本都是小写的。我忘了正则表达式有多严格了。