2017-10-12 56 views
0

我有一個主表單(「Perk」),並希望將所有列中的「y」複製到「註冊」表單中,並且全部使用「y」在B欄進入「房屋」表。使用當前的代碼,正確的信息將被複制到註冊表中。住房單只是拉動第一筆記錄。將行從一個工作表複製到另一個基於不同列的工作表

Sub extractdata() 
    Dim x As Long, lastrow 

    lastrow = Sheets("Perk").Range("A" & Rows.Count).End(xlUp).Row 

    Sheets("Housing").Range("A2:AW500").ClearContents 
    Sheets("Registration").Range("A2:AW500").ClearContents 
    For x = 2 To lastrow 
    If Worksheets("Perk").Cells(x, 1) Like "y*" Or Worksheets("Perk").Cells(x, 1) Like "Y*" Then 
    Worksheets("Perk").Cells(x, "A").EntireRow.Copy Destination:=Sheets("Registration").Range("A" & Rows.Count).End(xlUp).Offset(1) 
    End If 

    If Worksheets("Perk").Cells(x, 2) Like "y*" Or Worksheets("Perk").Cells(x, 2) Like "Y*" Then 
    Worksheets("Perk").Cells(x, "B").EntireRow.Copy Destination:=Sheets("Housing").Range("B" & Rows.Count).End(xlUp).Offset(1, -1) 
    End If 
    Next x 
End Sub 
+0

現在你擁有了它,如果列A以y它進入註冊且僅當A列沒有ÿ並且B列有它會去住房。如果你想讓它去住房,不管你是否有A,你都必須把它分成兩個不同的,如果不是ElseIF。 –

+0

謝謝!我做了更新。現在,如果列A和列B中有y,或者如果列B中有多行y,那麼行只會複製到外殼,然後只有最後一行被複制到外殼中。正確註冊副本。 – Faith

+0

你的問題準確地反映了問題中的代碼在做什麼?它似乎是在說問題中的一件事情(「使用當前的代碼,正確的信息是複製到註冊表中,外殼表只是拉入第一條記錄。」),但是您最後的評論(「現在行如果列A和列B中有y,或者如果在列B中有多行y,那麼只有最後一行被複制到房屋中。「)似乎與此相矛盾。 – YowE3K

回答

1

認爲這是您的PERK片,

enter image description here

此作爲登記表

enter image description here

的輸出和外殼片的這個輸出作爲

enter image description here 這裏發生的事情是聲明

Worksheets("Perk").Cells(x, "A").EntireRow.Copy Destination:=Sheets("Housing").Range("A" & Rows.Count).End(xlUp).Offset(1) 

您正在嘗試通過檢查在A列中的空單元格這是不對的,找到空行住房片的結果。

沒有嘗試過,但如果更改了該行與此它應該工作

Worksheets("Perk").Cells(x, "A").EntireRow.Copy Destination:=Sheets("Housing").Range("B" & Rows.Count).End(xlUp).Offset(1, -1) 
+0

@ YowE3K感謝您的評論。我已添加修復程序。 –

+0

@ YowE3K我改變了你的建議。 –

相關問題