多个数据集,输入到单独的工作簿,将每个数据集输出到自己的字段

时间:2015-07-04 05:55:07

标签: excel vba excel-vba

我很新,之前没有编程,也从未使用过论坛。我已经阅读了很多其他帖子,以便在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 个答案:

答案 0 :(得分: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