Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2014, 17:25   #1
Dancerdi
Новичок
Джуниор
 
Регистрация: 04.08.2014
Сообщений: 1
По умолчанию Помогите с макросом, пожалуйста.

Доброго времени суток, помогите плиз с макросом, который объединяет столбцы в один, без потерь данных.
Самое близкое, что смог найти это макрос SAS888

Sub Main()
Dim i As Long, a(), b(): Application.ScreenUpdating = False
a = Range([A2], Cells(Cells(Rows.Count, 1).End(xlUp).Row, 4)).Value: ReDim b(1 To UBound(a, 1), 1 To 1)
For i = 1 To UBound(a, 1): b(i, 1) = "Тел.:" & a(i, 1) & ", Факс: " & a(i, 2) & ", E-mail:" & a(i, 3) & ", Сайт:" & a(i, 4): Next
Range([E2], Cells(UBound(b, 1) + 1, 5)).Value = b
End Sub

из этой темы http://www.programmersforum.ru/showthread.php?t=60113

но вот как переделать его под себя ума не приложу. Надо в столбец AY снести все данные из столбцов N - AX. Заранее спасибо
Dancerdi вне форума Ответить с цитированием
Старый 04.08.2014, 18:55   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

самое близкое, что смог написать:
Код:
Sub C14_50_2_51()
  Dim rg As Range, c As Long, r As Long
  r = 1:  c = 14:  Set rg = Cells(1, c)
  Do
    Do
      If rg.Cells(1) = "" Then Set rg = rg.Cells(1).End(xlDown)
      If rg.Cells(1) = "" Then
        If c >= 50 Then Exit Sub
        c = c + 1: Set rg = Cells(1, c)
      End If
    Loop Until rg.Cells(1) <> ""
    If rg.Cells(1).Offset(1, 0) <> "" Then Set rg = Range(rg, rg.Cells(1).End(xlDown))
    rg.Copy Cells(r, 51):  r = r + rg.Cells.Count
    If rg.Cells(rg.Cells.Count).Row < Rows.Count Then
      Set rg = rg.Cells(rg.Cells.Count).Offset(1, 0)
    Else
      If c < 50 Then c = c + 1: Set rg = Cells(1, c)
    End If
  Loop Until False
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 04.08.2014, 21:33   #3
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,079
По умолчанию

для начала --привести в читабельный вид
Код:
Sub Main()
Dim i As Long, a(), b()
Application.ScreenUpdating = False
a = Range([A2], Cells(Cells(Rows.Count, 1).End(xlUp).Row, 4)).Value
ReDim b(1 To UBound(a, 1), 1 To 1)
For i = 1 To UBound(a, 1)
  b(i, 1) = "Тел.:" & a(i, 1) & ", Факс: " & a(i, 2) _
  & ", E-mail:"   & a(i, 3) & ", Сайт:" & a(i, 4)
Next
Range([E2], Cells(UBound(b, 1) + 1, 5)).Value = b
Application.ScreenUpdating =TRUE
End Sub
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с макросом famasik Microsoft Office Excel 2 10.12.2013 17:20
Пожалуйста помогите бедному студенту с макросом! Akunin Microsoft Office Word 2 22.12.2009 19:14
помогите пожалуйста с макросом PANTERYL4IK Microsoft Office Access 9 02.12.2009 17:49
помогите пожалуйста с макросом cargoline9 Microsoft Office Excel 2 07.10.2009 18:06