我很新,之前没有编程,也从未使用过论坛。我已经阅读了很多其他帖子,以便在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
为重复道歉,我希望有人可以提供帮助。
此外,如果有任何好的书籍,人们可以评价学习基本的宏观和编程语言会很棒。
答案 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