Макрос объединения ячеек в Excel

компьютеры программирование программы сети VBA

На листе Excel в столбце A содержатся имена, в столбце B - фамилии. Как при помощи макроса объединить содержимое ячеек этих столбцов в один столбец С, при этом разделив значения пробелом? Данную операцию нужно выполнить на большом количестве строк (порядка 500). Вот пример макроса, который выполняет аналогичную операцию, но только с одной строкой. Каким образом нужно подправить?
-------------------------------------------------
Sub test()
' соединяет содержимое ячеек диапазона [A1:B1] через соединитель delimiter
' и записывает результат в ячейку [C1]

Set ra = [A1:B1]: res = "": delimiter = " " ' delimiter - разделитель
' соединение значений ячеек исходного диапазона в переменную res
For Each cell In ra.Cells: res = res & cell & delimiter: Next: res = Left(res, Len(res) - Len(delimiter))
[c1] = res
End Sub
-------------------------------------------------

Заранее спасибо!

Примечание:
2 ToshibaUser
Вера то позволяет ), но только при объединении ячеек Excel выдает вот что:

"Выполняется объединение ячеек, среди которых по меньшей мере две ячейки содержат данные.
В Microsoft Office Excel объединение означает создание одной ячейки из двух или более выделенных ячеек. Если данные содержатся в нескольких объединяемых ячейках, сохраняются только данные в левой верхней или правой верхней ячейке (в зависимости от текущего направления просмотра), при этом ОСТАЛЬНЫЕ ДАННЫЕ УДАЛЯЮТСЯ."

В принципе можно использовать вот такую формулу, введенную в C1: =A1&" "&B1 , но, опять же проблема: в ячейках должны быть текстовые значения, а не формулы. Поэтому и спрашиваю про макрос.



Выполняется объединение ячеек, среди которых по меньшей мере две ячейки содержат данные.
В Microsoft Office Excel объединение означает создание одной ячейки из двух или более выделенных ячеек. Если данные содержатся в нескольких объединяемых ячейках, сохраняются только данные в левой верхней или правой верхней ячейке (в зависимости от текущего направления просмотра), при этом остальные данные удаляются.

Примечание:
2 scriptoman

Спасибо за макрос! То что нужно! Но 3 строчка

Dim stolbTo(1 to 100) as string
нужна, без нее выдает ошибку: "Sub or Function undefined" )

Примечание:
2 scriptoman

Сорри, не про ту строчку написал ) Не нужна строка
Dim rezulat(1 to 100)

Еще раз спасибо за макрос!
Ответы:
А просто строковую функцию объединения использовать вера не позволяет? Написали в одной строке, выделяем и "двойной" клик на уголке и .... хоть тысяча строк  - все скопируется мгновенно.
я бы  вообще переписал бы все по другому.вот так:
Sub test()
Dim stolbOne(1 to 100) as string 'примерно 100 сами измените
Dim stolbTo(1 to 100) as string
Dim  rezulat(1 to 100)
For i=1 to 100
  stolbOne(i)=cells(i,1)
   stolbTo(i)=cells(i,2)
   cells(i,3)=stolbOne(i)+" "+stolbTo(i)
next i
упс третяя строчка в коде выше не нужна(= и end sub Не забудте


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.