0
我試圖編寫一個宏,在滿足3個條件時複製行。如:如果滿足3個條件的50個不同變量,複製Excel行
如果 「A」= B和 「d」= E和 「F」= G 然後複製行到下一個可用的行上紙2
如果 「A」= C且 「d」 = F和「F」= H 然後將行復制到第2頁上的下一個可用行中
我需要重複上述步驟最多50次。列不會改變
這是我到目前爲止有:
`Sub SearchForString()
Dim LSearchRow As Integer
Dim LCopyToRow As Integer
On Error GoTo Err_Execute
'Start search in row 4
LSearchRow = 4
'Start copying data to row 2 in Sheet2 (row counter variable)
LCopyToRow = 2
While Len(Range("A" & CStr(LSearchRow)).Value) > 0
'If value in column E = "Mail Box", copy entire row to Sheet2
'If value in column D = "0", copy entire row to Sheet2
'If value in column A = "5", copy entire row to Sheet2
'If Range("E" & CStr(LSearchRow)).Value = "Mail Box" Then
If Range("F" & CStr(LSearchRow)).Value = "Mail Box" And _
Range("E" & CStr(LSearchRow)).Value = "0" And _
Range("A" & CStr(LSearchRow)).Value = "5" Then
'If Range("E" & CStr(LSearchRow)).Value = "Mail Box" Then
'Select row in Sheet1 to copy
Rows(CStr(LSearchRow) & ":" & CStr(LSearchRow)).Select
Selection.Copy
'Paste row into Sheet2 in next row
Sheets("Sheet2").Select
Rows(CStr(LCopyToRow) & ":" & CStr(LCopyToRow)).Select
ActiveSheet.Paste
'Move counter to next row
LCopyToRow = LCopyToRow + 1
'Go back to Sheet1 to continue searching
Sheets("Sheet1").Select
End If
LSearchRow = LSearchRow + 1
Wend
'Position on cell A3
Application.CutCopyMode = False
Range("A3").Select
'MsgBox "All matching data has been copied."
'Exit Sub
'Search 2
'Start search in row 4
LSearchRow = 4
'Start copying data to row 3 in Sheet2 (row counter variable)
LCopyToRow = 3
While Len(Range("A" & CStr(LSearchRow)).Value) > 0
'If value in column E = "Mail Box", copy entire row to Sheet2
'If value in column D = "1", copy entire row to Sheet2
'If value in column A = "5", copy entire row to Sheet2
'If Range("E" & CStr(LSearchRow)).Value = "Mail Box" Then
If Range("F" & CStr(LSearchRow)).Value = "Mail Box" And _
Range("E" & CStr(LSearchRow)).Value = "1" And _
Range("A" & CStr(LSearchRow)).Value = "5" Then
'If Range("E" & CStr(LSearchRow)).Value = "Mail Box" Then
'Select row in Sheet1 to copy
Rows(CStr(LSearchRow) & ":" & CStr(LSearchRow)).Select
Selection.Copy
'Paste row into Sheet2 in next row
Sheets("Sheet2").Select
Rows(CStr(LCopyToRow) & ":" & CStr(LCopyToRow)).Select
ActiveSheet.Paste
'Move counter to next row
LCopyToRow = LCopyToRow + 1
'Go back to Sheet1 to continue searching
Sheets("Sheet1").Select
End If
LSearchRow = LSearchRow + 1
Wend
'Position on cell A3
Application.CutCopyMode = False
Range("A3").Select
MsgBox "All matching data has been copied."
Exit Sub
Err_Execute:
MsgBox "An error occurred."
End Sub
看起來你已經有了一個如何複製行的好主意。你卡在哪裏?你是否將A列中的值與B,D到E等中的值在同一工作表上進行比較? – Zairja 2012-08-09 17:33:47
如果第一個搜索找到多個匹配項,您的第二個搜索不會覆蓋第一個搜索項的複製值嗎?至於重複多次:你應該將「搜索和複製」代碼分離成一個單獨的子代碼,它有三個參數:這些代碼是你在A,E和F列中尋找的值,然後每次調用這個子代碼搜索值的組合。 – 2012-08-09 17:35:50
是的,他們都會在大約15,000行的同一張工作表上。 – user1588191 2012-08-09 17:39:32