我有一个电子表格,其中包含以下内容的列(请省略数字,它们用于格式化打开,关闭,不可用的单元格):
我正在寻找一种解决方案(VBA更可取),它可以计算单元格中的单元格从OPEN变为CLOSE到OPEN的次数。在这个例子中,正确数量的'周期'将是2.我不确定如何合并一个移动的COUNT,它主动寻找一个条件然后找到一个,计算它,然后向下移动继续寻找。 / p>
提前感谢您的帮助!
编辑:
感谢Michael Moulsdale的answer!我编辑了代码以查找空白单元格而不是END。这是代码:
PrivateSub CommandButton1_Click()
Dim VarCycles
Dim BooStart
Dim booClosed
VarCycles = 0
BooStart = False
booClosed = False
Range("B2").Select
While Selection.Value <> IsEmpty("B2")
If Selection.Value = "OPEN" And BooStart = False Then
BooStart = True
End If
If Selection.Value = "CLOSED" And BooStart = True Then
BooStart = False
VarCycles = VarCycles + 1
End If
Selection.Offset(1, 0).Select
Wend
Range("B1").Select
Selection.Value = VarCycles
End Sub
答案 0 :(得分:0)
我认为你可以用这个功能来做到这一点:
=IF(AND(A1="OPEN"; A2="CLOSED"; A3="OPEN"); 1; 0)
将它放在第一行并拉出单元格以将其应用于所有列。但在你的例子中,我认为只有一个&#34;周期&#34;,不是吗?
答案 1 :(得分:0)
使用VBA我会做类似以下的事情。应该注意的是,我添加了一个END作为列表中的最后一个变量,并用它来测试最后一个值。但你可以同样测试适合你情况的空白或其他机制
Sub Macro1()
'
' Macro1 Macro
'
'
varCycles = 0
booStart = False
booClosed = False
Range("B2").Select
While Selection.Value <> "END"
If Selection.Value = "OPEN" And booStart = False Then
booStart = True
End If
If Selection.Value = "CLOSED" And booStart = True Then
booStart = False
varCycles = varCycles + 1
End If
Selection.Offset(1, 0).Select
Wend
Range("B1").Select
Selection.Value = varCycles
End Sub