Countif或counta google Spreadsheets计算单词出现次数

时间:2016-06-16 12:25:59

标签: google-sheets countif text-classification

我想计算在我的Google电子表格中显示特定字数(每行)的次数。
我的电子表格看起来像这样(而?是我想要计算结果的区域):
表1
  |评论|提及交货|提及价格|提及服务|
|快速交货,非常好的支持|?|?|?|
|质量价格太高了。包裹被损坏|?|?|?|
|电子邮件支持快速且有用| 0?|?|?|

表2(表1评论应与之比较的所有单词):
|提及交货|提及价格|提及服务|
|交货|价格|支持|
|航运|昂贵|服务|
|箱| - |呼叫|

在计算了表2中表达的表中显示的表中有多少单词后,表1应如下所示:
|评论|提及交货|提及价格|提及服务|
|快速交货,非常好的支持| 1 | 0 | 1 |
|质量价格太高了。包装破损| 1 | 1 | 0 |
|电子邮件支持快速而有用| 0 | 0 | 1 |
 
我尝试使用我无法工作的countif函数,现在正在使用counta,它的工作方式与预期一致(不使用表2),但我希望在表2中添加更多单词时自动调整公式:

=COUNTA(Filter(Split(D2," "),"delivery")) + COUNTA(Filter(Split(D2," "),"shipping"))  
对解决方案的任何想法?

1 个答案:

答案 0 :(得分:0)

让我们说F2包含注释,而A列列出与传递相关的词。以下公式计算注释中出现的A列中的单词数。它需要单词边界,以便" caprice"没有被误解为"价格",但允许一些复数形式,以便"价格"被认可在"价格"和"框"在"框"。

=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返回True或False,具体取决于F2中的注释是否匹配。
  4. n将True转换为1,将False转换为0。
  5. sum(arrayformula(...))说:为每个单词执行上述操作,然后添加结果。
相关问题