为什么我的 Google 表格查询简化会导致错误?

问题描述 投票:0回答:1

我有一个 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)

但是它给出了一个错误。第一个公式仍然是可行的还是还有其他选择?

google-sheets google-sheets-formula google-query-language
1个回答
0
投票

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"))
© www.soinside.com 2019 - 2024. All rights reserved.