2017-09-13 119 views
0

我想從一張紙上覆制行,然後在該邏輯循環中複製另一張紙上與來自紙張1複製的行中的值相匹配的行。然後對第一張紙的每一行重複此過程,使用布爾值來記錄是否有任何行不匹配,並將這些行復制到第四張紙上。將整行從一張紙複製到另一張紙上,使用第一張紙上的總行作爲變量

但是,這是一段路。

最初我想從一張紙複製每一行到第二張紙。這是我的代碼,但它只複製第一行的信息,如果第一行是空的,則停止。

這絕對是簡單的東西,但我沒有看到它。

Sub test() 
    Dim sh As Worksheet 
    Set sh = ThisWorkbook.Sheets("Sheet1") 

    Dim k As Long 

    k = sh.Range("A1", sh.Range("A1").End(xlDown)).Rows.Count 
    If k = 1048576 Then 
     k = 1 
    End If 
    For i = 1 To sh.Range("A1", sh.Range("A1").End(xlDown)).Rows.Count 
     Sheets("Sheet1").Rows(i).Copy Destination:= Sheets("Sheet3").Rows(i) 
    Exit For 
Next i 

End Sub 

回答

1

聽起來就像你有一些空行一樣,因爲.End(xlDown)將停在第一個空行。這聽起來像你想迭代,直到最後一個可用的記錄。在這種情況下,改變你如何通過從底部

sh.Range(「A1048576」)計算確定的最後一行。完(xlUp).Rows.Count

1

只需卸下Exit For,它應該工作。

Sub test() 
Dim sh As Worksheet 
Set sh = ThisWorkbook.Sheets("Sheet1") 

Dim k As Long 

k = sh.Range("A1", sh.Range("A1").End(xlDown)).Rows.Count 
If k = 1048576 Then 
    k = 1 
End If 
For i = 1 To sh.Range("A1", sh.Range("A1").End(xlDown)).Rows.Count 
    Sheets("Sheet1").Rows(i).Copy Destination:=Sheets("Sheet3").Rows(i) 
Next i 
End Sub 
相關問題