【问题标题】:How to count specific word in Google Sheets without matching parts of words如何在不匹配部分单词的情况下计算 Google 表格中的特定单词
【发布时间】:2021-02-16 07:23:12
【问题描述】:

例如,我正在尝试计算 A1 单元格文本中“desk”一词的出现次数。正文全部小写,多次包含“desk”,词尾有时有标点符号,也有“desktop”和“desks”重叠词。

我尝试了两个公式:

=(LEN(JOIN(" ",A1))-LEN(SUBSTITUTE(JOIN(" ",A1),"desk","")))/LEN("desk")

不幸的是,这个公式绝对计算了所有出现的“desk”,包括“desktop”和“desks”中的重叠。

=COUNTIF(SPLIT(JOIN(" ", A1), " -."&CHAR(10)), "desk")

这个公式可以计算单个单词,但它似乎无法计算末尾带有一些标点符号的单词 - 单词的数量总是少于实际数量。

【问题讨论】:

  • 分享您的工作表副本

标签: google-sheets


【解决方案1】:

尝试:

=LEN(REGEXREPLACE(REGEXREPLACE(A1, "\bdesk\b", "♦"), "[^♦]", ))

或:

=INDEX(QUERY(FLATTEN(SPLIT(REGEXREPLACE(A1, "[""\.,?!:]", ), " ")), 
 "select count(Col1) where Col1 = 'desk'"), 2)

【讨论】:

  • 有效!非常感谢!
【解决方案2】:

如果添加一个带有 if 条件的新列并在之后总结它对你来说是可以的,这应该足够了。

正则表达式模式:“\bdesk\b”

  • \b:界字

所以它只匹配单词“desk”。

我的桌子从 A2 到 B8

| data             | \bdesk\b                               | result |
|------------------|----------------------------------------|--------|
| desk,            | =IF(REGEXMATCH($A3, "\bdesk\b"), 1, 0) | 1      |
| desks            | =IF(REGEXMATCH($A4, "\bdesk\b"), 1, 0) | 0      |
| xasxa desk sdasd | =IF(REGEXMATCH($A5, "\bdesk\b"), 1, 0) | 1      |
| asdasdsa desk    | =IF(REGEXMATCH($A6, "\bdesk\b"), 1, 0) | 1      |
| desktop          | =IF(REGEXMATCH($A7, "\bdesk\b"), 1, 0) | 0      |
| desk             | =IF(REGEXMATCH($A8, "\bdesk\b"), 1, 0) | 1      |
|                  | =SUM(B3:B8)                            | 4      |

【讨论】:

    【解决方案3】:

    你可以试试这个公式。我最后尝试了这个,它正确地计算了单元格中的“办公桌”这个词。

    =(LEN(cell)-LEN(SUBSTITUTE(cell,"desk","")))/LEN("desk")
    

    【讨论】:

    • 感谢您的及时回复!不幸的是,它也计算“desks”和“desktops”中的所有匹配项
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多