2015-07-04 62 views
0

我很新,從未做過編程,從未使用過論壇之前。我已經閱讀了很多其他文章,以便像我在Excel中所做的那樣嘗試讓它按照我的要求執行。多個數據集,輸入到單獨的工作簿,輸出每個數據集到自己的領域

基本上我有許多數據集,每個數據集都有4個變量,每組需要複製到另一個工作表上的相應字段中,然後從這2個輸出中記錄回第一個工作表,每個工作表有2個獨立的列數據集。 我已經得到了幾乎所有的宏,但它只粘貼單元格中的最後一組數據輸出,而不是每個單獨的集合。

不幸的是我似乎無法添加屏幕截圖。 目前我的宏文本是:

Sub macro1() 

    Dim rCell As Range 
    Dim rRng As Range 

    Set rRng = Sheet1.Range("C2:C6") 

    For Each rCell In rRng.Cells 
    rCell.Copy 
    Sheets("Sheet2").Select 
    Range("C2").Select 
    Sheets("Sheet2").Paste 

    Next rCell 

    Dim rCell2 As Range 
    Dim rRng2 As Range 

    Set rRng2 = Sheet1.Range("D2:D6") 

    For Each rCell2 In rRng2.Cells 
    rCell2.Copy 
    Sheets("Sheet2").Select 
    Range("D2").Select 
    Sheets("Sheet2").Paste 
    Range("C8").Select 
    Selection.Copy 
    Sheets("Sheet1").Select 
    Range("J2:J6").PasteSpecial Paste:=xlPasteValues 

    Next rCell2 

    Dim rCell3 As Range 
    Dim rRng3 As Range 

    Set rRng3 = Sheet1.Range("E2:E6") 

    For Each rCell3 In rRng3.Cells 
    rCell3.Copy 
    Sheets("Sheet2").Select 
    Range("E2").Select 
    Sheets("Sheet2").Paste 

    Next rCell3 

    Dim rCell4 As Range 
    Dim rRng4 As Range 

    Set rRng4 = Sheet1.Range("F2:F6") 

    For Each rCell4 In rRng4.Cells 
    rCell4.Copy 
    Sheets("Sheet2").Select 
    Range("F2").Select 
    Sheets("Sheet2").Paste 
    Range("D8").Select 
    Selection.Copy 
    Sheets("Sheet1").Select 
    Range("K2:K6").PasteSpecial Paste:=xlPasteValues 

    Next rCell4 

End Sub 

道歉重複,我希望有人可以提供幫助。

此外,如果有任何好的書,人們可以評價學習基本的宏和編程語言將是偉大的。

1 2

回答

1

您正在使用Range變量這是很好的,但是,你正在使用Select應該避免的。

如果你想從Sheets("Sheet1").Range("C2:C6")複製並粘貼到Sheets("Sheet2").Range("C2:C6"),你可以在一行代碼中做到這一點。你不通過細胞這需要循環:

Sheets("Sheet1").Range("C2:C6").Copy Sheets("Sheet2").Range("C2") 

你的代碼張貼通過細胞循環,但總是粘貼到相同的細胞。

您可以複製較大的代碼塊,它看起來像您的代碼試圖複製單元格C2:F6。通常情況下,你可以做一個行:

Sheets("Sheet1").Range("C2:F6").Copy Sheets("Sheet2").Range("C2") 

但也許粘貼特殊原因在列d & E中的價值得到改變?

PasteSpecial方法需要兩行代碼,但在您的代碼中這似乎確定。這些行的代碼拷貝一個值,並將其粘貼到五個格:

Sheets("Sheet2").Range("C8").Copy 
Sheets("Sheet1").Range("J2:J6").PasteSpecial Paste:=xlPasteValues 

您可以簡化代碼:

Sheets("Sheet1").Range("C2:C6").Copy Sheets("Sheet2").Range("C2") 
Sheets("Sheet1").Range("D2:D6").Copy Sheets("Sheet2").Range("D2") 

Sheets("Sheet2").Range("C8").Copy 
Sheets("Sheet1").Range("J2:J6").PasteSpecial Paste:=xlPasteValues 

Sheets("Sheet1").Range("E2:E6").Copy Sheets("Sheet2").Range("E2") 
Sheets("Sheet1").Range("F2:F6").Copy Sheets("Sheet2").Range("F2") 

Sheets("Sheet2").Range("D8").Copy 
Sheets("Sheet1").Range("K2:K6").PasteSpecial Paste:=xlPasteValues 

也許複製較大的電池塊,以減少拷貝操作的數量?

Sheets("Sheet1").Range("C2:D6").Copy Sheets("Sheet2").Range("C2") 

Sheets("Sheet2").Range("C8").Copy 
Sheets("Sheet1").Range("J2:J6").PasteSpecial Paste:=xlPasteValues 

Sheets("Sheet1").Range("E2:F6").Copy Sheets("Sheet2").Range("E2") 

Sheets("Sheet2").Range("D8").Copy 
Sheets("Sheet1").Range("K2:K6").PasteSpecial Paste:=xlPasteValues 
相關問題