在Google表格中, 我正在尝试指出特定列(称为“目标列”)中的每个单元格是否包含一组单元格(称为“单词仓库”)中列出的任何单词。
这个想法是,“目标”列中的每个不为空并且不包含Word仓库中任何单词的单元格将+1添加到电子表格中的其他单元格。
例如,如果我的列包含{“ No”,“ Not”,“ None”,“ Negative”}中的任何一个,那么我将忽略它。如果它包含其他任何内容(并且不为空),则将被计数。
使用django_filters.RangeFilter
或Search
并没有帮助,因为它们期望单个字符串值而不是单元格范围(字仓库)。
答案 0 :(得分:1)
您可以尝试以下公式:
=--ArrayFormula((SUM((--ISNUMBER(SEARCH(TRANSPOSE($D$1:$D$4),A1))))=0)*(A1<>""))
在示例中,范围A1:A7
是Target column
,范围D1:D4
是Word warehouse
。
答案 1 :(得分:0)
我可能有一个适合您的答案。参见my sample sheet here。
样本表中的关键公式C2为:
=QUERY(A2:B,"SELECT A WHERE UPPER(A) MATCHES '" &
UPPER(".*" & JOIN(".*|.*",FILTER(B2:B,B2:B<>"")) & ".*") &
"' ",0)
其中A2:A是您的“目标列”,而B2:B是您的“字库”。 这会针对B列中的(过滤后的)单词(或短语)列表测试A列中的每个单词或短语,并生成所有匹配的单词或短语的列表。
通过对A列中的条目总数进行计数,然后减去匹配项的数量,就可以得到所有不匹配项的计数。这可以通过以下公式完成-我的样本表中为D2:
=COUNTA(A2:A) -
COUNTA(QUERY(A2:B,"SELECT A WHERE UPPER(A) MATCHES '" &
UPPER(".*" & JOIN(".*|.*",FILTER(B2:B,B2:B<>"")) & ".*") &
"' ",0))
请注意,我已使匹配不区分大小写。通过删除公式中两个位置的上位函数,可以很容易地将其删除。这也匹配部分匹配,例如单词仓库中的“ Catcher”匹配“ cat”。这也可以轻松更改。
即使每个短语包含仓库中的几个单词,我也只计算一个短语的匹配项。
让我知道这是否有帮助。