Countif 或 counta google 计算单词出现次数的电子表格

Countif or counta google Spreadsheets to count word appearances

我想计算特定单词在我的 google 电子表格中出现的次数(每行)。
我的电子表格看起来像这样(而 ? 是我想要计算结果的区域):
table 1
|评论|提及发货|提及价格|提及服务|
|交货快,很好的支持|?|?|?|
|质量价格太高。包裹破损|?|?|?|
|电子邮件支持快速且有用|0?|?|?|

table 2(table 1 条评论应与之比较的所有词):
|提到发货|提到价格|提到服务|
|交期|价格|支持|
|运输|价格昂贵|服务|
|box|-|call|

在计算 table 2 中我的字数出现在 table 1 的评论中后 table 1 应该是这样的:
|评论|提及发货|提及价格|提及服务|
|快速交货,非常好的支持|1|0|1|
|质量价格太高。包裹已损坏|1|1|0|
|电子邮件支持快速且有用|0|0|1|

我尝试使用我无法开始工作的 countif 函数,现在正在使用 counta,它按预期工作(不使用 table 2),但我希望在我添加更多单词时自动调整公式 table 2:

=COUNTA(Filter(Split(D2," "),"delivery")) + COUNTA(Filter(Split(D2," "),"shipping"))
有什么解决方案吗?

假设 F2 包含评论,而 A 列列出与交付相关的词。以下公式计算 A 列中出现在评论中的单词数。它需要单词边界,这样 "caprice" 就不会被误认为是 "price",但允许一些复数形式,这样 "price" 在 "prices" 和 "box" 中被识别"boxes".

=sum(arrayformula(n(regexmatch(F2, "\b" & filter(A2:A, len(A2:A)) & "e?s?\b"))))

说明

  1. filter(A2:A, len(A2:A)) 准备单词列表,省略空格。
  2. "\b" 强制单词边界,而 "e?s?" 允许复数形式。
  3. regexmatch returns True 或 False,取决于 F2 中的注释是否匹配。
  4. n 将 True 转换为 1,将 False 转换为 0。
  5. sum(arrayformula(...)) 说:对每个单词做上面的操作,然后把结果相加。