【发布时间】:2023-04-06 14:45:01
【问题描述】:
在“V34:V99”列中,数字1、2、3、0的顺序是分散的。
我想计算(n)有多少种情况(三个连续的1к=3,不考虑零),如果出现2或3,那么k=o。
我写了代码,但它不起作用(没有给出多种情况(n))。
0
1
0
1
0
0
0
1
0
1
0
0
0
0
1
0
0
1
0
0
1
0
0
1
0
0
1
0
0
0
1
0
0
0
0
3
0
1
0
3
0
0
0
3
0
1
0
1
0
0
1
3
0
1
0
0
0
0
0
0
0
0
0
0
0
0
代码
Sub а33условие3()
Dim k, n As Integer
Dim parRange As Range
Set parRange = Range("V34:V99")
k = 0
n = 0
For Each Cell In parRange.Rows
If Cell.Value = 1 Then
k = k + 1
If k = 3 Then
n = n + 1
k = o
MsgBox n
End If
End If
If Cell.Value = 2 Or 3 Then
k = 0
End If
Next Cell
End Sub
【问题讨论】:
-
您要检查
V34:V99范围内的值还是整行?因为现在您正在检查整行 (parRange.Rows)。如果这是正确的,那么我认为通过使用For Each Cell In parRange.Rows,您可以按列获取单元格,即A34, A35, A36,...,A99, B34, B35,...。 -
此外,您可以通过将
End If, If Cell.Value = 2 Or 3替换为ElseIF Cell.Value = 2 Or 3来避免额外的 if 语句另外我不确定 Or 语句是否像这样工作,或者您应该写Cell.Value = 2 Or Cell.Value = 3 -
@Luuklag , Cell.Value = 2 或 Cell.Value = 3 有帮助,现在一切正常。非常感谢!
-
我将其添加为答案。