使用正则表达式引用单元格

时间:2017-03-16 22:53:43

标签: regex google-sheets excel-formula

我按照关键字过滤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列根据所选关键字
  • 求和
  • 第一列包含要匹配的关键字
  • Cell B1具有用户选择其关键字
  • 的下拉列表

我尝试了什么

  • VALUE(B1) - 将其作为值引用,希望它会读取返回的文本;这是错误的输入错误
  • TEXT(B1) - 将其作为文字引用;它读作“B1”
  • """&B1&""" - 三重引号,其中引用的引号将通过并包含文字返回B1;它读作“& B1&” (D'OH)
  • \"B1\" - 转义单元格引用;我第一次试图逃避正则表达式,所以这可能是一个糟糕的实施的正确答案

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

1 个答案:

答案 0 :(得分:1)

单元格B1中包含的值从任何公式简称为B1。例如,regexmatch(A1, B1)

使用数组时,=filter(A1:A10, regexmatch(A1:A10, B1))会起作用。

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

说明

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