我正在尝试计算子字符串在 Excel 中的字符串数据列中出现的次数。请看下面的例子。
字符串数据(推文)列如下所示:
A
1 An example string with @username in it
2 RT @AwesomeUser says @username is awesome
带有“子字符串”(Twitter 屏幕名称)的列如下所示:
B
1 username
2 AwesomeUser
我想使用一个公式来计算 B1、B2 等的子字符串在 A 列的字符串中出现的次数。例如:搜索 B1 的公式将返回“2”,而搜索 B2 将返回“2”。返回“1”。
我不能这样做:
=COUNTIF(A:A, "username")
因为 COUNTIF 只查找字符串,而不查找子字符串。该公式始终返回“0”。
这是一个公式我认为可以做到:
=SUMPRODUCT((LEN(A:A)-(LEN(SUBSTITUTE(A:A,"username",""))))/LEN("username"))
不幸的是,我在 B 列中有 16,000 个条目,在 A 列中有数万个条目,因此即使在高功率 PC 上也无法计算字符(而且该函数返回的结果也值得怀疑)。
我考虑过使用:
=COUNTIF(A:A, "*username*")
但是 COUNTIF 需要一个带有星号运算符的字符串;由于数据量很大,我需要使用单元格引用。
我的问题:有谁知道我如何使用公式来实现这一点?如果使用 COUNTIF,如何获取语句条件部分中的单元格引用(或使用函数替换 COUNTIF 语句条件部分中引用的单元格中的字符串)?
我知道我可以解析数据,但我想知道如何在 Excel 中执行此操作。
你就快到了,使用
=COUNTIF(A:A, "*"&B1&"*")
注意事项:
这将计算
A:A
中包含字符串一次或多次 次的单元格数量。 它不计算字符串实例的total数量。
一个非常简单的 Excel 解决方案,用于将 x 字符串(“ABC”)出现在 y 字符串(“ABC 123 ABC 23dfABC”)中:
理解术语: x 字符串:“ABC” x1-字符串:“ABC_” y 字符串:“ABC 123 ABC 23dfABC” y1-字符串:“”ABC_ 123 ABC_ 23dfABC_”
通过TEXTJOIN
函数查找实际发生的情况使用
TEXTJOIN
(自 2019 版或 MS 365 起可用)可以获取一列或多列(列
A:A
或例如偶数列 A:B
)中任何发生情况的实际
数量。因此它
避免了COUNTIF
函数的警告
“仅计算包含该字符串一次或多次的单元格数量(在 A:A 中)。它不会计算该字符串的实例总数。”
三个有条不紊的步骤
下面显示的公式(假设命名搜索词MySearch
)仅执行三个逻辑步骤即可获得实际的结果数量:
1
通过
TEXTJOIN
,连接给定列中所有已填充的单元格
2
将字符串
1
中的搜索词替换为术语长度减少负 1 和
3
用字符串
2
的长度减去字符串
1
的长度。
=LEN(TEXTJOIN("|",TRUE,A:B))-LEN(SUBSTITUTE(TEXTJOIN("|",TRUE,A:B),MySearch,LEFT(MySearch,LEN(MySearch)-1)))
MS 帮助
=COLUMNS(TEXTSPLIT(C4," 和 ",,TRUE,0,))-1,其中: C4 = 包含要检查的文本的单元格, " 和 " 是要搜索的文本字符串, -1 将创建的列数减少到正在计算的文本字符串的出现次数。
又短又甜...