Excel中的公式计算字符串中子字符串的出现次数

And*_*rew 22 excel excel-formula

我试图计算子字符串在Excel中的字符串数据列中出现的次数.请参阅以下示例.

字符串数据列(推文)如下所示:

   A
1  An example string with @username in it
2  RT @AwesomeUser says @username is awesome
Run Code Online (Sandbox Code Playgroud)

带有"substrings"(Twitter屏幕名称)的列如下所示:

   B
1  username
2  AwesomeUser
Run Code Online (Sandbox Code Playgroud)

我想使用公式来计算来自B1,B2等的子字符串出现在A列的字符串中的次数.例如:搜索B1的公式将返回"2"并且搜索B2将返回"1".

我不能这样做:

=COUNTIF(A:A, "username")
Run Code Online (Sandbox Code Playgroud)

因为COUNTIF只查找字符串,而不是子字符串.该公式将始终返回"0".

这是我认为可以做到的公式:

=SUMPRODUCT((LEN(A:A)-(LEN(SUBSTITUTE(A:A,"username",""))))/LEN("username"))
Run Code Online (Sandbox Code Playgroud)

不幸的是,我在B列中有16,000个条目,在A中有数万个,因此即使在高功率PC上计数字符也不起作用(同样,该函数返回的结果也是可疑的).

我想过使用:

=COUNTIF(A:A, "*username*")
Run Code Online (Sandbox Code Playgroud)

但COUNTIF需要一个带星形运算符的字符串; 由于数据量的原因,我需要使用单元格引用.

我的问题:有谁知道如何使用这个公式?如果使用COUNTIF,如何在语句的条件部分中获取单元格引用(或使用函数替换CO​​UNTIF语句的条件部分中引用的单元格中的字符串)?

我知道我可以解析数据,但我想知道如何在Excel中执行此操作.

chr*_*sen 39

你快到了,使用

=COUNTIF(A:A, "*"&B1&"*")
Run Code Online (Sandbox Code Playgroud)

(在Excel 2010中测试)

  • 使用 LibreOffice:`=COUNTIF(A:B, ".*"&C&".*")` :} (2认同)

小智 5

一个非常简单的 Excel 解决方案,用于将 x 字符串(“ABC”)出现在 y 字符串(“ABC 123 ABC 23dfABC”)中:

  1. 确定 y 字符串的长度。Ly = len(y)
  2. 将 x-string 替换为 x1-string(仅将任何支持的字符的 1 个字符附加到 x-string。例如 "ABC"=> "ABC_" )并计算新字符串 y1-string 的长度。Ly1 = len(替换(y,x,x1))。
  3. y 串中 x 串出现的次数 = Ly1-Ly

出现次数:len(substitute(y,x,x1)) - len(y)

用于理解的术语: x 字符串:“ABC” x1 字符串:“ABC_” y 字符串:“ABC 123 ABC 23dfABC” y1 字符串:“”ABC_ 123 ABC_ 23dfABC_”