【发布时间】:2018-05-18 11:51:55
【问题描述】:
目标是指定两个不同的条件,只要满足其中一个条件,主文件(thisworkbook)中的整行就会被复制,然后粘贴到新的工作簿中。
我认为问题与“if”函数有关,因为此代码适用于一个条件(创建新工作簿并在满足条件时将所有行添加到此工作簿)。
其他问题: 当主文件包含许多符合指定条件的观察时,此方法非常耗时。出于这个原因,如果有人能在这个问题上提出更好的解决方案,我将不胜感激。如果所有行都可以一次发布到正确的工作簿上,而不是一一粘贴行,那就太棒了。
Private Sub CommandButton2_Click()
a = Worksheets("Sheet1").Cells(Rows.Count, 9).End(xlUp).Row
'creating new workbooks
Dim newDataOne As Workbook
Dim newDataTwo As Workbook
Set newDataOne = Workbooks.Add
Set newDataTwo = Workbooks.Add
ThisWorkbook.Worksheets("Sheet1").Activate
Dim nameone As String
Dim nametwo As String
nameone = ThisWorkbook.Worksheets("Sheet1").Range("CQ21")
nametwo = ThisWorkbook.Worksheets("Sheet1").Range("CQ22")
For i = 10 To a
If Worksheets("Sheet1").Cells(i, 1).Value = nameone Then
Worksheets("Sheet1").Rows(i).Copy
newDataOne.ActiveSheet.Activate
b = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
newDataOne.ActiveSheet.Cells(b + 1, 1).Select
ActiveSheet.PasteSpecial xlPasteValuesAndNumberFormats
ThisWorkbook.Worksheets("Sheet1").Activate
End If
If Worksheets("Sheet1").Cells(i, 1).Value = nametwo Then
Worksheets("Sheet1").Rows(i).Copy
newDataTwo.ActiveSheet.Activate
h = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
newDataTwo.ActiveSheet.Cells(h + 1, 1).Select
ActiveSheet.PasteSpecial xlPasteValuesAndNumberFormats
ThisWorkbook.Worksheets("Sheet1").Activate
End If
Next i
End Sub
>
【问题讨论】:
标签: vba excel loops conditional-statements matching