计算特定搜索字符串的出现次数
Counting number of occurences of a specific search string
我正在构建一个监控系统,该系统记录日志(人们以固定格式在其中注册他们的工作)和 returns 一个计数器,我可以将其用于分析。监视器和日志是两个独立的工作簿。日志包含如下条目:INITALS;DATE;HOUR:RESULT|
每个单元格可以包含多个条目。
我的第一次尝试是做一个简单的 countif 并寻找一个字符串(请注意,我在公式中使用 ; 而不是 , 因为我使用荷兰语 excel):
=COUNTIF('LOCATION'!Table[LOG];"*NB;??/??/????;??:??:#A*|*")
这工作正常,但公式只计算出现此字符串的单元格数,而不是实际出现次数。然后我尝试了这个解决方案。
=SUM(LEN('LOCATION'!Tabel13[LOG])-LEN(SUBSTITUTE('LOCATION'!Tabel13[LOG];"NB";"")))
这确实统计了“NB”出现在LOG中的次数。但是,当我尝试使用原始搜索字符串时,此解决方案停止工作:
=SUM(LEN('LOCATION'!Tabel13[LOG])-LEN(SUBSTITUTE('LOCATION'!Tabel13[LOG];"*NB;??/??/????;??:??:#A*|*";"")))
在我看来,SUM 不识别诸如 ?或 * 是定义正确搜索字符串所必需的。我哪里做错了?或者这可以用另一种方式解决吗?我仍然可以查看 VBA,但工作簿已经慢得要命了。
“?”和“*”是通配符。有些函数支持这些(如 COUNTIFS()
),而其他函数则不支持。正如您发现的那样,SUBSTITUTE()
而不是 。
这是一种计算方法,假设 ms365:
C1
中的公式:
=REDUCE(0,A1:A2,LAMBDA(a,b,a+LET(X,SEQUENCE(LEN(b)),SUM(--(IFERROR(SEARCH("NB;??/??/????;??:??:#A*|*",b,X),0)=X)))))
注意:我删除了“NB”前面的星号只是为了让搜索位置与我所谓的变量“X”相比有效。
我正在构建一个监控系统,该系统记录日志(人们以固定格式在其中注册他们的工作)和 returns 一个计数器,我可以将其用于分析。监视器和日志是两个独立的工作簿。日志包含如下条目:INITALS;DATE;HOUR:RESULT|
每个单元格可以包含多个条目。
我的第一次尝试是做一个简单的 countif 并寻找一个字符串(请注意,我在公式中使用 ; 而不是 , 因为我使用荷兰语 excel):
=COUNTIF('LOCATION'!Table[LOG];"*NB;??/??/????;??:??:#A*|*")
这工作正常,但公式只计算出现此字符串的单元格数,而不是实际出现次数。然后我尝试了这个解决方案。
=SUM(LEN('LOCATION'!Tabel13[LOG])-LEN(SUBSTITUTE('LOCATION'!Tabel13[LOG];"NB";"")))
这确实统计了“NB”出现在LOG中的次数。但是,当我尝试使用原始搜索字符串时,此解决方案停止工作:
=SUM(LEN('LOCATION'!Tabel13[LOG])-LEN(SUBSTITUTE('LOCATION'!Tabel13[LOG];"*NB;??/??/????;??:??:#A*|*";"")))
在我看来,SUM 不识别诸如 ?或 * 是定义正确搜索字符串所必需的。我哪里做错了?或者这可以用另一种方式解决吗?我仍然可以查看 VBA,但工作簿已经慢得要命了。
“?”和“*”是通配符。有些函数支持这些(如 COUNTIFS()
),而其他函数则不支持。正如您发现的那样,SUBSTITUTE()
而不是 。
这是一种计算方法,假设 ms365:
C1
中的公式:
=REDUCE(0,A1:A2,LAMBDA(a,b,a+LET(X,SEQUENCE(LEN(b)),SUM(--(IFERROR(SEARCH("NB;??/??/????;??:??:#A*|*",b,X),0)=X)))))
注意:我删除了“NB”前面的星号只是为了让搜索位置与我所谓的变量“X”相比有效。