在Google电子表格中计算特定单词的出现次数

3
我有一些包含文本的单元格。我需要计算这些单元格中特定单词(不是列表)的出现次数。
示例表格:https://docs.google.com/spreadsheets/d/1WECDbepLtZNwNfUmjxfKlCbLJgjyUBB72yvWDMzDBB0/edit?usp=sharing 到目前为止,我发现用 SUBSTITUTE 将所有这些单词替换为“”来计数它们。
=(LEN(B1)-LEN(SUBSTITUTE(UPPER(B1),UPPER(A5),"")))/LEN(A5)

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

编辑:我不想在“Heroes”中计数“Hero”。但是我想在例如“AFK-Spiel”(德语)中计数“afk”,这可能吗?


不是的,请看一下我的演示表。 - JOY
3个回答

4

如果你想要计算出现次数为“Hero”的单词

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

Where:

  • B1:B3: 包含文本的单元格
  • "Hero": 需要计数的词语

解释

  1. JOIN(" ", B1:B3): 连接所有包含文本的单元格
  2. SPLIT(..., " -."&CHAR(10)): 创建每个单词的数组
  3. COUNTIF(..., "Hero"): 计算数组中每个等于"Hero"的单词数量

示例

如果输入文本为:

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

如果你想计算“英雄”字符串的出现次数

(即使在其他词语中嵌套,例如:“英雄们”)

➔ 然后公式将返回2


如果您想计算“Hero”字符串的出现次数

(即使嵌套在其他单词中,例如:“Heroes”)

=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
@JOY,我已经添加了一个解决方案来计算字符串的所有出现次数。希望它能满足你的需求。 - Tom
我不想将“Heroes”与“Hero”视为相同,而是将“hero”,“HERO”,“Hero”视为相同计算。 - JOY
1
还有一个问题:这不会计算“AFK-Spiel”中的“afk”。我需要它被计算,而“afkxxx”中的“afk”则不计算。这可能吗? - JOY
@JOY,我已经更新了第一个公式以支持该情况。 - Tom
抱歉,我的意思是我不想在“heroes”或“heroic”中计算英雄,但我想在“hero-666”中计算。 - JOY

1
在您的表格中,您提到计数应该是14。
考虑到这一点,我相信您正在寻找一种解决方案,以包括像heroesHero这样的单词。
如果您想包括hero的变体,例如HeroHeroes,您可以使用以下方法: 适用于任何语言的不分大小写公式::
=COUNTIF(SPLIT(CONCATENATE(B1:B3), " "), "*heRO*")

你甚至可以在单元格中放置*heRO*,比如A7,并使用。
=COUNTIF(SPLIT(CONCATENATE(B1:B3), " "), A7)

如果您只想要单词Hero,请删除周围的星号*
这也适用于任何语言(包括德语)。

这个方法可行,与@Tom的方法类似。谢谢。 - JOY
“...类似于@Tom的方法”看起来非常相似。请尝试在文本中使用Fürxxxfür,并使用=COUNTA(SPLIT(UPPER(JOIN(" ",C1:C3)), "für", false, false))-1。在任何情况下,所有正确的解决方案都可能有所变化。大多数时候,解决问题有不止一种方法。 - marikamitsos
最好使用TEXTJOIN替换CONCATENATE,这样我们可以通过特定的分隔符将它们连接起来,否则如果你在一个单元格中有“heroherohero”,它们只会被计算一次。 - Zach

0

尝试:

=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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接