多个数据集,input到单独的工作簿,输出每个数据集到自己的领域

我很新,从来没有做过编程,之前从未使用论坛。 我已经阅读了很多其他的post,就像我在Excel中所做的那样,试图让它按照我的要求执行。

基本上我有许多数据集,每个数据集有4个variables,每个数据集都需要复制到另一个工作表的相应字段中,然后从这个数据集的2个输出logging回第一个数据集,每个数据集有2个独立的列。 我已经得到了几乎所有的macros,但它只粘贴单元格中的最后一组数据输出,而不是每个单独的集合。

不幸的是我似乎不能添加屏幕截图。 目前我的macros文本是:

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 

为重复道歉,我希望有人能帮忙。

另外如果有什么好书可以让人们学习基本的macros和编程语言,那就太棒了。

12

你正在使用Rangevariables,这是很好的,但你正在使用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 

也许复制更大的单元格块来减less复制操作的数量?

 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