1

For A model in Excel I would like to copy and paste data from one sheet in a workbook to the other sheet in the workbook and transpose this data with the usage of a for next loop. Data from the workfile CME should be pasted in the workfile of RME. The total lines of data is 2420. However, since the ranges in the copy and paste different workbook are different and step sizes are different, I assume that i should use two different variables i and j. The first two lines of code is the manual way to do it without a loop

When I try to run this code, it will give me an error. the first to codes are an example how it should be done manually without a loop. Thereafter the loop starts. Already a lot of thanks for the person who can help me with this issue.

Example from the file: In Excel Worksheet CME: copy range J2:J10 to transfer it to worksheet RME to be pasted on B2:J2 so it is important to have a transpose function in it. For the next range I need to copy the range J12:J20 to transfer it to worksheet RME to be pasted on B3:J3 and so on, therefore I need to create a loop right? With two different stepsizes for the copy and paste ranges. Thanks a lot already!

I came up with the following formula:

Dim i As Long
Dim j As Long
Worksheets("CME").Range("J2:J10").Copy
Worksheets("RME").Range("B2").PasteSpecial Transpose:=True
Worksheets("CME").Range("J12:J20").Copy
Worksheets("RME").Range("B3").PasteSpecial Transpose:=True
For i = 11 To 2420 Step 10
 Worksheets("CME").Range (Cells(i + 11, 10)), Cells(i + 19, 10).Copy
 For j = 3 To 2420 Step 1
 Worksheets("RME").Range(Cells(j + 1, 2)).PasteSpecial Transpose:=True
 Next j
Next i
End Sub 
asked Aug 2, 2018 at 8:28
2
  • In your titel you want to copy from another workbook, but in your code and explanation you seem to copy between sheets....which is it? Commented Aug 2, 2018 at 8:48
  • @JvdV yes you're right, changed it! Commented Aug 2, 2018 at 8:51

1 Answer 1

1

I'm a little confused with what exactly you want to do but would this do?:

First code: Not using transpose

Sub Test()
Dim X As Long, Y As Long, Z As Long
Z = 2
For X = 2 To 2420 Step 10
 For Y = 2 To 10
 Sheets("RME").Cells(Z, Y).Value = Sheets("CME").Cells(X + (Y - 1), 10).Value
 Next Y
 Z = Z + 1
Next X
End Sub

Second code: Using transpose

Sub Test()
Dim X As Long, Z As Long
Dim RNG1 As Range, RNG2 As Range
Sheets("CME").Activate
Z = 2
For X = 2 To 2420 Step 10
 Set RNG1 = Sheets("CME").Range(Cells(X, 10), Cells(X + 9, 10))
 Set RNG2 = Sheets("RME").Cells(Z, 2)
 RNG1.Copy
 RNG2.PasteSpecial Transpose:=True
 Z = Z + 1
Next X
Sheets("RME").Activate
End Sub

Note: Copy/Pasting and transpose take much longer to execute on a larger database. To compare the two code examples above:

  • First code: 0,13 seconds
  • Second code: 5,5 seconds
answered Aug 2, 2018 at 8:53
Sign up to request clarification or add additional context in comments.

2 Comments

Hi JvdV, the following are the first two lines in a way to do it manual, however for 2420 rows to do it manual it is pretty a time waste. That is why I would like to create a loop to do this Worksheets("CME").Range("J2:J10").Copy Worksheets("RME").Range("B2").PasteSpecial Transpose:=True Worksheets("CME").Range("J12:J20").Copy Worksheets("RME").Range("B3").PasteSpecial Transpose:=True
@BenjaminHuis, see updated answer. I hope it is what you try to achieve.

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.