作业帮 > 综合 > 作业

0 1 1 0 0 1 0 1 1 1 如上表,欲在execl 里用公式:求解连续的3个1前面,0和1的个数,不知怎么实

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/13 02:08:49
0 1 1 0 0 1 0 1 1 1 如上表,欲在execl 里用公式:求解连续的3个1前面,0和1的个数,不知怎么实现?
不过不好意思,可能我没说明白,0在A1,1在A2,1在A3。这些数字位于execl的一列,每个数字一个位置,我只要求出连续3个1之前的,1和0的总数即可
1.打开Excel,同时按下ALT+F11进入VBA编辑
2.插入新模块
3.复制粘贴以下代码
Public Function TripleOne(LookupRange As Range)
Dim arr As Variant
Dim i,j,aa,ab,ZeroCnt,OneCnt As Integer
aa = 0
ab = 0
ZeroCnt = 0
OneCnt = 0
Dim ReturnValue As String
ReturnValue = ""
arr = Split(LookupRange," ")
For i = 0 To UBound(arr) Step 1
If arr(i) = 1 And aa = 1 And ab = 1 Then
If i = 2 Then
ReturnValue = "111在首三位"
Else
For j = 0 To i - 3
If arr(j) = 0 Then
ZeroCnt = ZeroCnt + 1
ElseIf arr(j) = 1 Then
OneCnt = OneCnt + 1
End If
Next j
ReturnValue = "0*(" & ZeroCnt & ")|1*(" & OneCnt & ")"
End If
Exit For
ElseIf arr(i) = 1 And aa = 1 Then
ab = 1
ElseIf arr(i) = 1 Then
aa = 1
Else
aa = 0
ab = 0
End If
Next i
If ReturnValue = "" Then
TripleOne = "不包含111"
Else
TripleOne = ReturnValue
End If
End Function
4.假设你的数据在A1,那么在B1输入公式:
=TripleOne(A1)
返回信息:0*(m)|1*(n),m是0的个数,n是1的个数
或者返回“111在首三位”;“不包含111”