You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel单单元格内多段二进制串的0、1分别计数方法求助

嘿,这个场景我之前帮同事解决过,给你两个实用方案,从不用写代码的公式法到一劳永逸的VBA自定义函数,看你需求选就行:

方案1:Excel原生公式组合(适合无代码基础的用户)

如果你的Excel是365/2021版本,TEXTSPLIT函数能帮你快速拆分单元格里的二进制串,再结合LEN和SUBSTITUTE统计0/1数量,一步到位。

假设目标数据在单元格A1,直接在空白单元格(比如B1)输入这个动态数组公式:

=LET(
    splits, TEXTSPLIT(A1,"<br>"),
    seq, SEQUENCE(ROWS(splits)),
    "zeros"&seq&": "&LEN(splits)-LEN(SUBSTITUTE(splits,"1",""))&" ones"&seq&": "&LEN(SUBSTITUTE(splits,"0",""))
)

按下回车后,公式会自动溢出所有统计结果,完全不用手动下拉。

要是你用的是旧版Excel(没有TEXTSPLIT),可以用MID+SUBSTITUTE先提取每一段:
比如提取第k段的公式:

=TRIM(MID(SUBSTITUTE(A1,"<br>",REPT(" ",LEN(A1))), (k-1)*LEN(A1)+1, LEN(A1)))

再分别统计0和1的数量:

  • 统计第k段的0数量:=LEN(提取公式)-LEN(SUBSTITUTE(提取公式,"1",""))
  • 统计第k段的1数量:=LEN(SUBSTITUTE(提取公式,"0",""))

方案2:VBA自定义函数(适合频繁使用的场景)

如果需要反复处理这类数据,写个自定义函数会更高效。按Alt+F11打开VBA编辑器,插入一个新模块,粘贴下面的代码:

Function CountBinarySegments(cell As Range) As Variant
    Dim segments() As String
    Dim result() As String
    Dim i As Integer
    Dim zeros As Integer, ones As Integer
    
    ' 按<br>拆分单元格内容
    segments = Split(cell.Value, "<br>")
    ReDim result(UBound(segments))
    
    ' 遍历每一段二进制串,统计0和1的数量
    For i = LBound(segments) To UBound(segments)
        zeros = Len(segments(i)) - Len(Replace(segments(i), "1", ""))
        ones = Len(Replace(segments(i), "0", ""))
        result(i) = "zeros" & (i + 1) & ": " & zeros & " ones" & (i + 1) & ": " & ones
    Next i
    
    ' 转置结果,让它在Excel里纵向溢出
    CountBinarySegments = Application.Transpose(result)
End Function

回到Excel后,在任意单元格输入=CountBinarySegments(A1),回车就能得到所有统计结果,自动向下填充。

测试你的示例数据

用你提供的示例内容:

10000010011
10101010101
01100111000
101101010110

不管用哪个方案,都会生成你要的结果:

  • zeros1:7 ones1:4
  • zeros2:5 ones2:6
  • zeros3:6 ones3:5
  • zeros4:5 ones4:7

内容的提问来源于stack exchange,提问作者Ads5

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:11:15