【回复贴】 统计一段文本中“9”出现的次数

懒得批爆
懒得批爆

2024年03月优秀创作者

提问贴传送门:https://bbs.wps.cn/topic/19594

🔔

原问题是统计一段文本中出现"9"的次数

这时新路老师已经回答了,很完美的回答了。


本帖为新路老师的回答补充两条公式

=SUM(--(ISNUMBER(FIND("9",MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)))))

这个公式使用ROW(INDIRECT("1:" & LEN(A1)))生成一个数组,该数组包含从1到文本A1长度的数字。然后,它使用MID函数提取每个字符,并使用FIND函数查找"9"。ISNUMBER(FIND(...))会返回一个数组,其中找到"9"的位置为TRUE,否则为FALSE。--运算符将TRUE转换为1,将FALSE转换为0,然后SUM函数计算这些1的总和,即"9"的出现次数。

=LET(chars, MID(A1, ROW(INDIRECT("1:" & LEN(A1))), 1),
ninePositions, IFERROR(FIND("9", chars), ""),
countNines, SUM(--(ninePositions <> "")),
countNines)

这个公式里LET函数定义了几个中间变量(chars, ninePositions, countNines),使得公式更易读且更易于维护。ninePositions变量包含了每个字符位置是否包含"9"的信息(如果包含则为位置,否则为空字符串),然后countNines计算非空字符串的数量,即"9"的出现次数。

👋

随后提问者跟着提出了单元格里的数据是"5,9,19,29,39,49“只统计单独的“9”出现的次数,比如"19"、"29"中的9不统计在内,使用的是最新版WPS

既然提问者用的是最新版的WPS,那么这个要求就要换个公式来计数

=SUM(--(TEXTSPLIT(A1,",")="9"))

这个公式的工作原理如下

  1. TEXTSPLIT(A1, ",") 将A1单元格中的文本按逗号分隔成一个数组。

  1. TEXTSPLIT(A1, ",")="9" 检查数组中的每个元素是否等于"9"。

  1. 这将返回一个数组,其中包含TRUE和FALSE值,表示每个元素是否等于"9"。

  1. -- 双负号运算符将TRUE转换为1,将FALSE转换为0。

  1. SUM(...) 将所有1相加,得到单独出现的"9"的总数。


希望以上回答能让提问者满意

四川省
浏览 311
收藏
13
分享
13 +1
7
+1
全部评论 7
 
user_493681
顶礼膜拜
· 四川省
回复
 
Boyuan
注意: 后来给的示例是全角的9不是通常说的半角9两个不一样的99, 得这样子: =SUM(--(--TEXTSPLIT(A7,",")=9)) 单纯判断="9",就掉坑里了
· 河南省
回复
懒得批爆
懒得批爆

2024年03月优秀创作者

全角的点数就行了,全角的是符号不是数字,不参与计算。
· 四川省
回复
 
西米露
打卡
· 山东省
回复
 
那谁谁ృ༊゜
打卡
· 广东省
回复
 
LZN
学习
· 山东省
回复
 
清华学弟任泽岩
清华学弟任泽岩

2024年03月优秀创作者

吃瓜群众表示很满意
· 内蒙古
回复