我有一个 Google 表格问题。我使用公式对包含其他列中的关键字的列的所有值进行求和。我用这个公式:
=QUERY(Data!A1:I; "SELECT SUM(G) WHERE (LOWER(B) CONTAINS 'jumbo' OR LOWER(B) CONTAINS 'lidl' OR LOWER(B) CONTAINS 'albert' OR LOWER(B) CONTAINS 'picnic') AND F = 'Af' LABEL SUM(G)''"; 1)
我尝试将公式简化为:
=QUERY(Data!A:I, "SELECT SUM(G) WHERE LOWER(B) MATCHES 'jumbo|lidl|albert|picnic'", 1)
但是它给出了一个错误。第一个公式仍然是可行的还是还有其他选择?
QUERY
函数中使用的正则表达式引擎假设存在行锚点的开头和结尾(即matches 'foo'
与matches '^foo$'
相同)。这意味着 contains 'foo'
的等价物是 matches '.*foo.*'
而不是 matches 'foo'
。
=QUERY(Data!A:I, "SELECT SUM(G) WHERE LOWER(B) MATCHES '.*(jumbo|lidl|albert|picnic).*'", 1)
SUMPRODUCT
函数来完成此操作。
=SUMPRODUCT(Data!G:G,REGEXMATCH(Data!B:B,"(?i)jumbo|lidl|albert|picnic"))