我有一个excel电子表格,其中一列包含超过100000行的1和0。我正在尝试使用和excel vba宏来计算O连续序列中出现的数字O的次数。我的数字列看起来像这样(为了简单起见,我把它放在一行)
1,0,0,0,0,1,0,0,0,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1 ,1
因此,第一个0的序列从第二位开始,并且有四个连续的O.我正在尝试开发一个宏来计算第一个序列中的0的数量。此后,一旦出现1,宏返回相邻列中的序号。宏将继续,直到遇到另一个0并重复该过程。因此,在第七位,它将从Nil开始再次计算零的数量,并在相邻列中返回答案3。所有100,000行都应继续此过程。
以下是我对宏的尝试。问题是它从100,000行左右的数据中返回零的总数。请帮助我。
Sub Step1CountsNumberZerosInSequence()
'CountsNumberZerosInSequence宏 '宏确定序列中的零个数并返回该值 “
'步骤1:声明变量 昏暗的CloseOutRange作为范围 Dim CloseOutCell作为范围 Dim MaxDays作为整数 MaxDays = 1
'步骤2:定义目标范围 设置CloseOutRange =范围(“AY10:AY100000”)
'步骤3:开始循环遍历范围 对于CloseOutRange中的每个CloseOutCell
'步骤4:对每个细胞做一些事情 如果CloseOutCell.Value = 0那么 MaxDays = MaxDays + 1 结束如果
'步骤5:获取范围内的下一个单元格 下一个CloseOutCell
'步骤6:否则停止并提供最大数量 ActiveCell.Offset(1,0).Range(“A1”)。选择 ActiveCell.Value = MaxDays
End Sub
答案 0 :(得分:1)
如果我做对了,你必须在步骤4中插入一个ElseIf
,比如
'Step 4: Do something with each cell
If CloseOutCell.Value = 0 Then
MaxDays = MaxDays + 1
ElseIf CloseOutCell.Value = 1 Then
MaxDays = 0
End If
编辑:这将在序列结束时返回0。如果你想"保持"最后的0计数,您可以使用临时变量,例如:
Dim temp = 0 as Integer
If CloseOutCell.Value = 0 Then
MaxDays = MaxDays + 1
temp = MaxDays
ElseIf CloseOutCell.Value = 1 Then
MaxDays = 0
End If
Return temp