根据多个条件将行从一个选项卡复制到另一个选项卡
Copying Rows from one tab to another, based on several criteria
我正在尝试将导入到文档中的选项卡中的行复制到另一个选项卡。
'Clears previous data from sheet
Sheets("60L Specific Data").Select
Cells.Range("A3:AC3000").ClearContents
'Pastes Title Block from Imported into 60L sheet
Sheets("Imported Data").Select
Rows("1:1").Select
Selection.Copy
Sheets("60L Specific Data").Select
Rows("3:3").Select
ActiveSheet.Paste
'Filters using several criteria
Dim i As Integer
Dim j As Integer
j = 4
For i = 2 To 2000
If Cells(i, 28) <> "" Or Cells(i, 29) <> "" Or InStr(Cells(i, 6).Value, "K60") <> 0 Or InStr(Cells(i, 6).Value, "60T") Then
Sheets("Imported Data").Select
Rows(i).Select
Selection.Copy
Sheets("60L Specific Data").Select
Rows(j).Select
ActiveSheet.Paste
j = j + 1
End If
Next i
这个问题一直困扰着我。我知道你想知道一些测试内容:
首先,前两个代码块按预期工作。
其次,如果您删除 if 语句,它就可以工作。
第三,当我在 if 语句中替换我知道必须对所有人都为真时,它做到了 运行,但是任何只会导致某些人被选中的语句根本不起作用。
我很困惑,为此花了很多时间,请帮忙!
总是safer/easier使用变量来引用你的工作表,并避免activate/select你可以:
Dim shtSrc As Worksheet, shtDest As Worksheet
Dim rw As Range
Dim i As Long, j As Long
Set shtSrc = Sheets("Imported Data")
Set shtDest = Sheets("60L Specific Data")
'Clears previous data from sheet
shtDest.Range("A3:AC3000").ClearContents
'Pastes Title Block from Imported into 60L sheet
shtSrc.Rows(1).Copy Destination:=shtDest.Cells(3, 1)
j = 4
'Filters using several criteria
For i = 2 To 2000
Set rw = shtSrc.Rows(i)
If rw.Cells(28) <> "" Or rw.Cells(29) <> "" Or _
InStr(rw.Cells(6).Value, "K60") <> 0 Or _
InStr(rw.Cells(6).Value, "60T") Then
rw.Copy shtDest.Cells(j, 1)
j = j + 1
End If
Next i
我正在尝试将导入到文档中的选项卡中的行复制到另一个选项卡。
'Clears previous data from sheet
Sheets("60L Specific Data").Select
Cells.Range("A3:AC3000").ClearContents
'Pastes Title Block from Imported into 60L sheet
Sheets("Imported Data").Select
Rows("1:1").Select
Selection.Copy
Sheets("60L Specific Data").Select
Rows("3:3").Select
ActiveSheet.Paste
'Filters using several criteria
Dim i As Integer
Dim j As Integer
j = 4
For i = 2 To 2000
If Cells(i, 28) <> "" Or Cells(i, 29) <> "" Or InStr(Cells(i, 6).Value, "K60") <> 0 Or InStr(Cells(i, 6).Value, "60T") Then
Sheets("Imported Data").Select
Rows(i).Select
Selection.Copy
Sheets("60L Specific Data").Select
Rows(j).Select
ActiveSheet.Paste
j = j + 1
End If
Next i
这个问题一直困扰着我。我知道你想知道一些测试内容:
首先,前两个代码块按预期工作。
其次,如果您删除 if 语句,它就可以工作。
第三,当我在 if 语句中替换我知道必须对所有人都为真时,它做到了 运行,但是任何只会导致某些人被选中的语句根本不起作用。
我很困惑,为此花了很多时间,请帮忙!
总是safer/easier使用变量来引用你的工作表,并避免activate/select你可以:
Dim shtSrc As Worksheet, shtDest As Worksheet
Dim rw As Range
Dim i As Long, j As Long
Set shtSrc = Sheets("Imported Data")
Set shtDest = Sheets("60L Specific Data")
'Clears previous data from sheet
shtDest.Range("A3:AC3000").ClearContents
'Pastes Title Block from Imported into 60L sheet
shtSrc.Rows(1).Copy Destination:=shtDest.Cells(3, 1)
j = 4
'Filters using several criteria
For i = 2 To 2000
Set rw = shtSrc.Rows(i)
If rw.Cells(28) <> "" Or rw.Cells(29) <> "" Or _
InStr(rw.Cells(6).Value, "K60") <> 0 Or _
InStr(rw.Cells(6).Value, "60T") Then
rw.Copy shtDest.Cells(j, 1)
j = j + 1
End If
Next i