用于比较两个多词文本字符串的数组公式
Array formula to compare two multi-word text strings
我想将一个 sheet 上两列(J 和 O)中的文本字符串与另一个 sheet 上的项目列表($N$5:$N$23)进行比较。我希望比较能够搜索 J 和列表或 O 和列表之间是否有任何单词匹配(一些字符串是多词)。当我在我想要结果的列中的每个单元格中使用这个公式时(从第 3 行开始):
=IF(SUMPRODUCT(ISNUMBER(SEARCH(TRANSPOSE(Lists!$N:$N),J3&O3)))>0,"YES","NO")
但是,我现在想使用 ARRAYFORMULA 在列中填充公式,而不是每个单元格中都有该公式。似乎您不能将 SUMPRODUCT 与 Google Sheet 中的数组一起使用,所以我现在用 space 分隔符拆分 J 列和 O 列中的文本,并将其与列表 $N$5:$N$23 中的值使用 ARRAYFORMULAs -- 数组中的数组。我将两个结果相加以查看它们的总和是否大于 0,在这种情况下我 return“是。”
ARRAYFORMULA(IF(
SUM(ARRAYFORMULA(IFERROR({SEARCH(SPLIT(J3:J," "),Lists!$N:$N)},0)))+
SUM(ARRAYFORMULA(IFERROR({SEARCH(SPLIT(O3:O," "),Lists!$N:$N)},0)))
>0,"YES","NO"))
此数组公式不想向下填充(从第 3 行开始)。它在第 3 行给了我一个值,但没有更多。
问题:
- 为什么这个数组公式不往下填?
- 是否有 better/more 有效的方法来进行这种比较? (也许有查询?)
这是 Google Sheet 的副本。我试图将新的 ARRAY 公式放入单元格数据库!P3。数据库 sheet 的列 Q 具有第一个似乎工作正常的公式。
https://docs.google.com/spreadsheets/d/1QlAVv1FuvfXgD4QvCoSFR9Cycf87lJUk33eFWfoe404/edit?usp=sharing
尝试:
=INDEX(IF(REGEXMATCH(J3:J&" "&O3:O, "\b("&TEXTJOIN("|", 1, Lists!N5:N23)&")\b"), "YES", "NO"))
我想将一个 sheet 上两列(J 和 O)中的文本字符串与另一个 sheet 上的项目列表($N$5:$N$23)进行比较。我希望比较能够搜索 J 和列表或 O 和列表之间是否有任何单词匹配(一些字符串是多词)。当我在我想要结果的列中的每个单元格中使用这个公式时(从第 3 行开始):
=IF(SUMPRODUCT(ISNUMBER(SEARCH(TRANSPOSE(Lists!$N:$N),J3&O3)))>0,"YES","NO")
但是,我现在想使用 ARRAYFORMULA 在列中填充公式,而不是每个单元格中都有该公式。似乎您不能将 SUMPRODUCT 与 Google Sheet 中的数组一起使用,所以我现在用 space 分隔符拆分 J 列和 O 列中的文本,并将其与列表 $N$5:$N$23 中的值使用 ARRAYFORMULAs -- 数组中的数组。我将两个结果相加以查看它们的总和是否大于 0,在这种情况下我 return“是。”
ARRAYFORMULA(IF(
SUM(ARRAYFORMULA(IFERROR({SEARCH(SPLIT(J3:J," "),Lists!$N:$N)},0)))+
SUM(ARRAYFORMULA(IFERROR({SEARCH(SPLIT(O3:O," "),Lists!$N:$N)},0)))
>0,"YES","NO"))
此数组公式不想向下填充(从第 3 行开始)。它在第 3 行给了我一个值,但没有更多。
问题:
- 为什么这个数组公式不往下填?
- 是否有 better/more 有效的方法来进行这种比较? (也许有查询?)
这是 Google Sheet 的副本。我试图将新的 ARRAY 公式放入单元格数据库!P3。数据库 sheet 的列 Q 具有第一个似乎工作正常的公式。 https://docs.google.com/spreadsheets/d/1QlAVv1FuvfXgD4QvCoSFR9Cycf87lJUk33eFWfoe404/edit?usp=sharing
尝试:
=INDEX(IF(REGEXMATCH(J3:J&" "&O3:O, "\b("&TEXTJOIN("|", 1, Lists!N5:N23)&")\b"), "YES", "NO"))