2014-10-10 4 views
1

Я разработал сценарий методом циклизации для копирования данных с одного листа на другой, а затем обновил первое поле. Скрипт работает хорошо, за исключением одной проблемы. Во втором листе предполагается найти последнюю непустую ячейку в столбце 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 
+0

вы имели в виду 'х = 1', а не' х = i'? –

+0

для первого листа x должен быть i, чтобы начать диапазон от 11-й строки, но второй лист должен быть смещен с x = 0, чтобы пройти мимо данных в первой не пустой ячейке в столбце A @TonyDallimore – Vizzi

+0

Просто примечание к вашему коду. Это намного сложнее, когда вы используете однобуквенные переменные, такие как x и y. Также вы должны указать диапазоны, с которыми работаете. Но мне нравится, что вы используете «Option Explicit». Хорошая работа! – BradyK

ответ

0

Это происходит потому, что вы используете смещение, которое начинается с 11 и увеличивается на единицу для каждой итерации цикла.

Изменение: Worksheets("DataBank").Range("a10000").End(xlUp).Offset(x, y) = c

To: Worksheets("DataBank").Cells(Rows.Count,y+1).End(xlUp).Offset(1, 0) = c

+0

Я не уверен, что следую тому, что вы говорите. Можете ли вы обновить свой вопрос на примере? –

+0

thnx для быстрого ответа на его прошлые данные из первой пустой ячейки в столбце A теперь, но порядок данных нарушен, допустим, что диапазон данных составляет от A11 до K11, а первая пустая строка - 10 во втором листе. теперь он делает это. A11 в A10 на целевом листе, B11 в B11 на целевом листе, C11 в C11 на целевом листе и т. Д. – Vizzi

+0

надеюсь, что я ясно с моей точки зрения @ jbarker2169 – Vizzi

Смежные вопросы