我按照关键字过滤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))
我尝试了什么:
VALUE(B1)
- 将其作为值引用,希望它会读取返回的文本;这是错误的输入错误TEXT(B1)
- 将其作为文字引用;它读作“B1”"""&B1&"""
- 三重引号,其中引用的引号将通过并包含文字返回B1;它读作“& B1&” (D'OH)\"B1\"
- 转义单元格引用;我第一次试图逃避正则表达式,所以这可能是一个糟糕的实施的正确答案从REGEXMATCH表达式中引用单元格B1的任何其他想法?
答案 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(...)
。