У меня проблема при запуске моего макроса VBA, который я написал для переноса набора данных. Основная цель - взять этот набор данных подряд за строкой и перенести его, чтобы столбцы B: K были новыми строками.Copy Paste VBA loop
Вот пример того, что я пытаюсь сделать:
http://i.imgur.com/4ywn17m.png
Я написал следующий VBA, но все это делает, в основном создает «теневой» строку в новом листе , чего я не хочу.
Sub LoopPaste()
Dim i As Long
Dim firstRow As Long
Dim lastRow As Long
Dim wb As Workbook
Dim sheet1 As Worksheet
Dim sheet2 As Worksheet
Set wb = ThisWorkbook
Set sheet1 = wb.Sheets("Sheet1")
Set sheet2 = wb.Sheets("Sheet2")
'Find the last row with data
lastRow = sheet1.Range("A:A").Find("*", searchdirection:=xlPrevious).Row
'This is the beginning of the loop
For i = firstRow To lastRow
'Copying Company
sheet2.Range("A" & i) = sheet1.Range("A" & i).Value
'Copying Employees
sheet2.Range("B" & i) = sheet1.Range("B" & i).Value
sheet2.Range("B" & 1 + i) = sheet1.Range("C" & i).Value
sheet2.Range("B" & 2 + i) = sheet1.Range("D" & i).Value
sheet2.Range("B" & 3 + i) = sheet1.Range("E" & i).Value
Next i
End Sub
Как я могу получить цикл для создания новой строки для каждого сотрудника?
Вы можете использовать 'Offset()' 'метод Range'. Чтобы перенести строки в столбцы и наоборот, что-то, расположенное в 'Offset (i, j)' в верхнем левом углу исходного кода, нужно будет переходить в 'Offset (j, i)' в верхнем левом углу вашего целевого диапазона , – jsheeran
Я бы согласился с @jsheeran. Проще всего было бы перебирать столбцы и смещать их на новый лист, используя ThisWorkbook.Cells (Sheet1.Rows.Count, 1) .End (xlUp) .Offset (1, 0) .Value = positionInLoop (i) –
Прохладные очки, заработанные, если вы сначала храните в массиве, а затем сбрасываете на лист! : D –