统计excel单元格中一句话有多少个数据

就是单元格中有一句话,统计里面有多少数据,比如“1啊22啊333啊44444啊55555啊”中应该有5个数据,这样。有木有公式或者宏计算,求大神!
最新回答
软味萝莉

2025-06-19 00:10:25

假设数据在A列,在B1输入公式下拉:


=IF(A1="","",SUM(IF(MATCH(TRIM(MID(SUBSTITUTE(A1,"啊",REPT(" ",99)),ROW($1:$99)*99-98,99)),TRIM(MID(SUBSTITUTE(A1,"啊",REPT(" ",99)),ROW($1:$99)*99-98,99)),)=ROW($1:$99),1))-1)


公式要求统一每个数字之间一定是要用"啊"间隔,可以根据实际情况修改这个字。如果这个间隔的字不是固定统一的,这是没法计算的。


数组公式,输入完成后不要直接回车,要按三键  CTRL+SHIFT+回车  结束。


如果不需要排除重复的,则公式简单得多,只需要对有多少个 "啊“字进行统计就行了:

=IF(A1="","",LEN(A1)-LEN(SUBSTITUTE(A1,"啊",)))


我把文件传上来,请点击这回答右下角绿色的“点击下载”按钮,下载文件看看效果。


青山一叙

2025-06-19 00:26:54

假设数据在A1,在B1输入:
=SUM(N(FREQUENCY(IF(ISNUMBER(--MID($A$1,ROW(1:20),1))=TRUE,ROW(1:20)),IF(ISNUMBER(--MID($A$1,ROW(1:20),1))<>TRUE,ROW(1:20)))>0))
这是数组公式,不是直接回车,而是Ctrl+Shift+Enter结束。
追问
如果是A行和B行呢?
追答

下拉B1单元格的填充柄。(也就是右下角的小黑方点,当鼠标放上面变成黑色小十字时,按住鼠标左键向下拉。

追问
这个我知道,但是自动填充的时候,公式的ROW(1,20)也会自动累加,导致如果A行数据特别长就会计算错误。在线等……
追答
=SUM(N(FREQUENCY(IF(ISNUMBER(--MID($A1,ROW($1:$20),1))=TRUE,ROW($1:$20)),IF(ISNUMBER(--MID($A$1,ROW($1:$20),1))TRUE,ROW($1:$20)))>0))
加绝对引用。。。
不好意思 刚刚才看到你的追问 刚玩游戏去了
提示:如果长度很长,必须把20改为更大的数字。
=SUM(N(FREQUENCY(IF(ISNUMBER(--MID($A1,ROW($1:$100),1))=TRUE,ROW($1:$100)),IF(ISNUMBER(--MID($A$1,ROW($1:$100),1))TRUE,ROW($1:$100)))>0))
追问
谢谢,真厉害
追答
上面的公式还是错了,多了一个绝对引用符号。。。
应该是这样:
=SUM(N(FREQUENCY(IF(ISNUMBER(--MID($A1,ROW($1:$100),1))=TRUE,ROW($1:$100)),IF(ISNUMBER(--MID($A1,ROW($1:$100),1))TRUE,ROW($1:$100)))>0))

这回错不了了。。。。。。。。
(记得Ctrl+Shift+Enter结束哦。。)
叆叇若紫

2025-06-19 00:25:32

你的数据是什么概念? 有多少个非重复数字:1、2、3、4、5,还是有多少个数字:1/22/333/444/55555?
眼眸熏染离情丶

2025-06-19 00:57:03

写了个自定义函数

Function tongji(rng)
   For i = 1 To Len(rng)
       If VBA.IsNumeric(Mid(rng, i, 1)) Then
           k = k + 1
           ElseIf Asc(Mid(rng, i, 1)) < 0 Then
           m = m + 1
           ElseIf Mid(rng, i, 1) Like "[a-zA-Z]" Then
           n = n + 1
       End If
   Next
   tongji = "数字有" & k & "个,汉字有" & m & "个,字母有" & n & "个"
End Function

公式下拉即可。

追问
统计数据个数啊,不是数字,况且office自带字数统计功能