2017-08-01 112 views
0

我有一個宏根據特定的單元格值複製整行,並將這些行粘貼到另一個表單中。但是,在第二張紙上粘貼到單元格B1,但我希望它粘貼到B2,以便我可以包含標題。如何讓我的宏粘貼到特定的單元格

(測試紙張從B:E)

Dim C As Range 
Dim Test As Worksheet 
Dim Pastesheet As Worksheet 
Dim j As Integer 

'Find the last row with data in column C 
LR = Worksheets("Test Sheet").Cells(Rows.Count, "B").End(xlUp).Row 

Set Test = Worksheets("Test Sheet") ' Copy From this sheet 
Set Pastesheet = Worksheets("Inventory") ' to this sheet 

'look at every cell in D2 onwards 

j = 1 

For Each C In Test.Range("D2:D" & LR) 

If C.Value = True Then 

     'Copy code 

     C.EntireRow.Copy Pastesheet.Rows(j) ' copy the row from column D that meets that requirements 

     j = j + 1 

    End If 

Next C 


End Sub 
+2

'行(j + 1)'而不是'行(j)'如何? – pnuts

+2

將'j = 1'更改爲'j = 2'。或者從1開始,但建議使用@pnuts使用'j + 1'。或者在'Copy'行之前移動'j = j + 1'行。任何這些都可以工作。 – YowE3K

回答

0

解決方法就是改變你的貼行從2開始,所以j = 2而不是j = 1

我也補充一點,如果你不不需要在複製的選擇中拉出單元格的格式(也就是說你只需要這些值),我建議避免使用複製功能,因爲這可能會在大型數據集上變得很慢。如果確實是這樣,下面將工作相當不錯:

... 

j = 1 

For Each C In Test.Range("D2:D" & LR) 
    If C.Value = True Then 

     Pastesheet.Range(Pastesheet.Cells(j, 2),Pastesheet.Cells(j, 5)).Value = Test.Range(Test.Cells(C.Row, 2),Test.Cells(C.Row, 5)).Value 

     j = j + 1 
    End If 
Next C 

... 

注:我假設你要複製的數據是僅在4列,因爲你說,將數據從去B:E,但可以通過調整列號來調整捕獲更多列,只需調整列號即可。

代碼本身比paste命令稍長一點,看起來不那麼優雅,但對於大型數據集,這可以節省相當多一點處理時間。

+0

謝謝你的建議。這是很好的建議。一個問題,在嘗試代碼後,只有Test 2的第2列被粘貼到Pastesheet中。我怎樣才能讓第2-5列連續粘貼? – zshake

+0

我相信我解決了它。 (Test.Cells(C.Row,2),Test.Cells(C.Row,2),Pastesheet.Cells(j,5))。 5))。值' – zshake

+0

是的,我混合了行和列。良好的發現(現在編輯答案來解決這個問題) – RGA

相關問題