Я разработал сценарий методом циклизации для копирования данных с одного листа на другой, а затем обновил первое поле. Скрипт работает хорошо, за исключением одной проблемы. Во втором листе предполагается найти последнюю непустую ячейку в столбце A (то есть «x») и прочесть данные из следующей строки. Проблема в том, что он вставляет данные в строку «x + 11».Проблема с копированием данных с одного листа на другой
Мне нужна помощь в определении того, почему это происходит.
Обратите внимание, что здесь i = 11, поскольку данные в строке 10 являются заголовками, а требуемые данные начинаются с 11-й строки.
Вот макрос я сделал:
Option Explicit
Sub CopyPaste()
Dim i As Integer
Dim x As Long
Dim y As Long
Dim c As Range
i = 11
Do While Cells(i, 1).Value <> ""
'ActiveSheet.CopyPast
x = i
y = 0
For Each c In Worksheets("CDS").Range(Cells(x, 1), Cells(x, 11))
Worksheets("DataBank").Range("a10000").End(xlUp).Offset(x, y) = c
y = y + 1
x = 0
Next c
Application.CutCopyMode = False
i = i + 1
Loop
With Sheets("CDS")
Range("A11:K65").ClearContents
End With
End Sub
вы имели в виду 'х = 1', а не' х = i'? –
для первого листа x должен быть i, чтобы начать диапазон от 11-й строки, но второй лист должен быть смещен с x = 0, чтобы пройти мимо данных в первой не пустой ячейке в столбце A @TonyDallimore – Vizzi
Просто примечание к вашему коду. Это намного сложнее, когда вы используете однобуквенные переменные, такие как x и y. Также вы должны указать диапазоны, с которыми работаете. Но мне нравится, что вы используете «Option Explicit». Хорошая работа! – BradyK