【问题标题】:Count occurrences of a specific word in Google Spreadsheet计算 Google 电子表格中特定单词的出现次数
【发布时间】:2020-09-09 19:39:34
【问题描述】:

我有一些带有文本的单元格。我需要计算这些单元格中特定单词(不是列表)的出现次数。

示例表:https://docs.google.com/spreadsheets/d/1WECDbepLtZNwNfUmjxfKlCbLJgjyUBB72yvWDMzDBB0/edit?usp=sharing

到目前为止,我找到了一种用英语计算它的方法,即使用 SUBSTITUTE 将所有这些单词替换为“”:

=(LEN(B1)-LEN(SUBSTITUTE(UPPER(B1),UPPER(A5),"")))/LEN(A5)

但是,我不知道为什么,但它在德语中不起作用。

已编辑: 我不想在“英雄”中算“英雄”。但是,我想在“AFK-Spiel”(例如德语)中计算“afk”。有可能吗?

【问题讨论】:

标签: google-sheets google-sheets-formula array-formulas counting google-sheets-query


【解决方案1】:

如果要统计“英雄”字的出现次数

=COUNTIF(SPLIT(JOIN(" ", B1:B3), " -."&CHAR(10)), "Hero")

地点:

  • B1:B3: 带有文本的单元格
  • "Hero":要数的字

说明

  1. JOIN(" ", B1:B3):所有单元格与文本的连接
  2. SPLIT(..., " -."&CHAR(10)):为每个单词创建一个数组
  3. COUNTIF(..., "Hero"):计算每个数组项等于“英雄”

示例

如果输入文本是:

<b>Hero</b> <b>Hero</b>-666 heroes heroic

➔ 然后公式将返回 2


如果要统计“Hero”字符串的出现次数

(甚至嵌套在另一个词中,即:“英雄”)

=COUNTA(SPLIT(UPPER(JOIN(" ",B1:B3)), "HERO", false, false))-1

地点:

  • B1:B3: 带有文本的单元格
  • "HERO": 要计数的字符串

说明

  1. JOIN(" ", B1:B3):所有单元格与文本的连接
  2. UPPER(...):将文本转换为大写
  3. SPLIT(..., "HERO"): 在字符串的每次出现处拆分
  4. COUNTA(...)-1: 计算已经完成了多少次拆分

示例

如果输入文本是:

<b>Hero</b> <b>Hero</b>-666 <b>hero</b>es <b>hero</b>ic

➔ 然后公式将返回 4

【讨论】:

  • 看来结果不正确。它应该是 14,而不是 6。
  • @JOY,我添加了一个解决方案来计算字符串的所有出现次数。我希望它符合您的需求。
  • 我不想把“英雄”和“英雄”算作一样。相反,“英雄”、“英雄”、“英雄”被视为相同。
  • 还有一个问题:这不算“AFK-Spiel”中的“afk”。我需要计算它,而“afkxxx”中的“afk”不是。有可能吗?
  • @JOY,我已经更新了第一个公式来支持这种情况
【解决方案2】:

在您的工作表中,您提到计数应为 14。
考虑到这一点,我相信您正在寻找一种解决方案,还包括像 heroesHero 这样的词

如果您想包含hero 的变体,例如HeroHeroes,您可以使用以下内容:

任何语言公式都不区分大小写

=COUNTIF(SPLIT(CONCATENATE(B1:B3), " "), "*heRO*")

您甚至可以将*heRO* 放在像A7 这样的单元格中并使用

=COUNTIF(SPLIT(CONCATENATE(B1:B3), " "), A7)

如果您只想要 Hero 这个词,请删除它周围的星号 *

它还适用于任何语言 (包括德语)

【讨论】:

  • 这很有效,类似于@Tom 方法。谢谢
  • "...类似于@Tom 方法" 看起来非常相似。请在文本中尝试=COUNTA(SPLIT(UPPER(JOIN(" ",C1:C3)), "für", false, false))-1Fürxxxfür。在任何情况下,所有正确的解决方案都可能有变化。大多数时候,解决问题的方法不止一种。
【解决方案3】:

尝试:

=ARRAYFORMULA(COUNTA(IFERROR(SPLIT(QUERY(SUBSTITUTE(
 UPPER(B1:B3), UPPER(A5), "♦"),,99^99), "♦")))-1)

对于德语:

=ARRAYFORMULA(COUNTA(IFERROR(SPLIT(QUERY(SUBSTITUTE(
 UPPER(C1:C3), "HELD", "♦"),,99^99), "♦")))-1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    相关资源
    最近更新 更多