Страницы: 1
RSS
Как с помощью VBA скопировать данные из списка поочередно в определенную ячейку
 
Здравствуйте, добрые люди!

Задача такова:

Есть простой список с текстом в столбце А. Сколько в нем строк неизвестно, то есть количество строк будет постоянно меняться. Нужно сделать так, чтобы макрос копировал поочередно значения всех ячеек в другую ячейку, ну скажем в С1. Но, только всегда в одну и ту же ячейку С1. До тех пор пока в столбце А не закончатся данные, ну и на выходне нужно оставить в ячейке С1 значение последней ячейки в столбце А.
Во вложении, пример, как должно все выглядеть, но только надо сделать, наверное, циклом это, или как-то еще, не так как я копировал вручную каждую ячейку.

Заранее признателен за любой совет.
 
Цитата
нужно оставить в ячейке С1 значение последней ячейки в столбце А.  
Достаточно этого:
Код
Cells(Rows.Count, 1).End(xlUp).Copy [C1]
А если нужно только значение (без формата, границ ячейки и т. п.), то лучше так:
Код
[C1] = Cells(Rows.Count, 1).End(xlUp).Value
Чем шире угол зрения, тем он тупее.
 
Спасибо за ответ. Но, видимо, я плохо разъяснил суть задачи. Мне нужно, чтобы в ячейку С1 копировались все ячейки из столбца А поочереди, то есть:

А1 копировать в С1
А2 копировать в С1
А3 копировать в С1
А4 копировать в С1
А5 копировать в С1
А6 копировать в С1

И закончить этот цикл нужно тогда когда закончатся ячейки с данными в строобце А, более того, в С1 поместить значение последней ячейки столбца А.

То, что предложили Вы, просто копирует последнюю ячейку столбца А в С1. А мне надо, чтобы в С1 побывали все ячейки из столбца А поочередно.
Изменено: Paul Zealand - 01.01.2017 07:44:45
 
Цитата
Paul Zealand написал:
То, что предложили Вы, просто копирует последнюю ячейку столбца А в С1. А мне надо, чтобы в С1 побывали все ячейки из столбца А поочередно.
А зачем Вам это? После копирования очередной ячейки Вы еще что-то будете с ней делать?
Ну, если надо, то так:
Код
Sub qq()
    Dim i As Long: Application.ScreenUpdating = False
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        Cells(i, 1).Copy [C1]
        'или
        '[C1] = Cells(i, 1)
    Next
End Sub

Изменено: SAS888 - 01.01.2017 08:44:45
Чем шире угол зрения, тем он тупее.
 
Отличный код, думаю подойдет. Только вот выдает ошибку на строке Cells(i, 1).Copy [C1]. Пишет: Sub or Function not defined.
 
SAS888, огромное спасибо! Код работает идеально, именно так как нужно. Вопрос закрыт. Спасибо!
 
А какой смысл поочерёдно? Ведь в итоге в ячейке С1 останется значение из последней ячейки.
 
Цитата
Юрий М написал:
А какой смысл поочерёдно? Ведь в итоге в ячейке С1 останется значение из последней ячейки.
Смысл в том, что будет проводить автоматическая рассылка е-мейлов по списку из столбца А. Каждому адрессату будет отправлен индивидуальный е-мейл и только ему. Кусочек кода будет ингегрирован в другой цикл. Для этого и надо было, чтобы в ячейке побывали поочередно все значения столбца А.  
 
Оперативно Вы ответили ))
 
Юрий М, стараюсь ))
Страницы: 1
Наверх