我如何编辑我的代码,使程序在分析当前行后自动选择下一行?



我有一个表格,其中包含我的教室的信息,包括他们的名字,然后是他们使用的手机(IOS或Android),然后是他们是否有资格参加考试。使用这些信息,代码将其放置在相应的工作表中(IOS YES)或(ANDROID YES)。但是,我希望我的代码在分析第一行之后继续处理第二行。我该怎么做?

到目前为止我写的是:

While Sheets("BASE").Range("D2").Value <> ""
If Sheets("BASE").Range("D2").Value = "IOS" And Sheets("BASE").Range("E2").Value = "Y" Then
Sheets("BASE").Range("A2:E2").Select
Selection.Copy
Sheets("IOS YES").Select
Range("A2:E2").Select
ActiveSheet.Paste
ElseIf Sheets("BASE").Range("D2").Value = "ANDROID" And Sheets("BASE").Range("E2").Value = "Y" Then
Sheets("BASE").Range("A2:E2").Select
Selection.Copy
Sheets("ANDROID YES").Select
Range("A2:E2").Select
ActiveSheet.Paste
End If
Wend

您需要对行进行计数:对于base-sheet = rBase, ios-sheet = rIOS等

您不需要选择/复制/粘贴-您可以简单地将值写入单元格。这就快多了。

此外,我假设你的基表上的数据在一个有条件的范围内,即中间没有空行,那么你可以使用CurrentRegion来获得你必须检查的行数。

我正在将工作表应用于变量,因为它使代码更具可读性(= "噪音更少")与重复本练习册相比。worksheet-stuff……)。如果工作表的名称改变了,你只需要在一个地方调整代码。

Sub copyRows()
Dim wsBase As Worksheet
Set wsBase = ThisWorkbook.Worksheets("BASE")
Dim wsAndroid As Worksheet
Set wsAndroid = ThisWorkbook.Worksheets("ANDROID YES")
Dim wsIOS As Worksheet
Set wsIOS = ThisWorkbook.Worksheets("IOS YES")

Dim cntRows As Long
cntRows = wsBase.Range("A1").CurrentRegion.Rows.Count
Dim rBase As Long, rIOS As Long, rAndroid As Long
rIOS = 1: rAndroid = 1
Dim OS As String
For rBase = 2 To cntRows
If wsBase.Range("E" & rBase) = "Y" Then
OS = wsBase.Range("D" & rBase)
If OS = "IOS" Then
rIOS = rIOS + 1
wsIOS.Range("A" & rIOS & ":E" & rIOS).Value = wsBase.Range("A" & rBase & ":E" & rBase).Value
ElseIf OS = "ANDROID" Then
rAndroid = rAndroid + 1
wsAndroid.Range("A" & rAndroid & ":E" & rIOS).Value = wsBase.Range("A" & rBase & ":E" & rBase).Value
End If
End If
Next
End Sub

最新更新