我有一列数据,其中包括" UP"," DOWN"或""作为价值观。我正在尝试编写代码,说明对于所有行,如果第一个单元格是" UP"然后检查下一行,直到我来到" DOWN"或者" UP",即如果下一行有""然后检查下一行,直到我来到" DOWN"或者" UP"。 我是VBA的新手,并尝试了各种选择,但似乎只能在连续的" UP" s或者#34; DOWNS"而不是有一个" UP",多行""然后另一个" UP"。
这是我的代码:
Range("z1:z250").Select
Selection.ClearContents
For Row = 2 To 250
If Range("Y" & Row).Value = "UP" Then
For sRow = 3 To 250
If Range("Y" & Row + 1).Value = "UP" Then
Range("Z" & Row) = "MT-UP"
ElseIf Range("Y" & Row + 1).Value = "" Then
End If
Next
End If
Next
End Sub
我尝试添加For Each c in Range (“Y3”:”Y250”)
之类的代码,但这并没有让它找到下一个UP,并使其变得非常慢。我也试过GoTo next cell
(虽然似乎明白这是不赞成的!)但这也不起作用。任何帮助表示赞赏。
答案 0 :(得分:0)
如果这是你想要的,那么不是100%清楚但是看看......
在遇到“DOWN”之前,我使用一个标志来标记何时找到第二个连续的“UP”,而不是嵌套循环。根据您的描述,似乎无需检查空单元格(“”)。
Sub MTTest()
Dim Row As Long
Dim MTRow As Long
Dim MTFlag As Boolean
Range("Z1:Z250").ClearContents
For Row = 2 To 250
If Range("Y" & Row).Value = "UP" Then
If MTFlag = True Then
Range("Z" & MTRow) = "MT-UP"
MTFlag = Flase
Else
MTFlag = True
MTRow = Row
End If
Else
If Range("Y" & Row).Value = "DOWN" Then MTFlag = False
End If
Next
End Sub