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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2014, 11:15   #1
Евгений Таб
Форумчанин
 
Аватар для Евгений Таб
 
Регистрация: 09.08.2013
Сообщений: 202
По умолчанию ОБЬЕДЕНИТЬ, СЦЕПИТЬ И РАМКУ

Коллеги, приветствую!

На листе есть множесвтаво данных. Во вложении "кусок" листа по которому можно прикрутить макрос.

Дано :

Столбы R, S и T.

Необходимо :
Добавить столб "U" и наполнить его данными по примеру.
Обьединить сцепить и рамку....

Голову сломал.... Выручайте...

Спасибо!
Вложения
Тип файла: zip ПРИВЕР.zip (7.4 Кб, 11 просмотров)
Евгений Таб вне форума Ответить с цитированием
Старый 16.12.2014, 12:34   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Sub MergeCod()
  Dim r As Long, cnt As Long, i As Long, rg As Range, dct As Object
  Columns("u").Insert
  With Columns("u")
    .HorizontalAlignment = xlCenter: .VerticalAlignment = xlCenter: .WrapText = True
  End With
  Set dct = CreateObject("Scripting.Dictionary"):  r = 2
  Do While Not IsEmpty(Cells(r + 2, 19))
    cnt = IIf(IsEmpty(Cells(r + 1, 19)), 1, Cells(r, 19).End(xlDown).Row - r + 1)
    Cells(r, 21).Resize(cnt, 1).MergeCells = True
    For i = r To r + cnt - 1
      If Not IsEmpty(Cells(i, 20)) Then
        If Not dct.exists(Cells(i, 20).Value) Then dct.Add Cells(i, 20).Value, i
      End If
    Next
    Cells(r, 21) = Join(dct.keys, " ")
    For i = 7 To 10
      With Cells(r, 21).Resize(cnt, 1).Borders(i)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .Weight = xlMedium
      End With
    Next
    r = r + cnt + 1: dct.RemoveAll
  Loop
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 16.12.2014, 15:47   #3
Евгений Таб
Форумчанин
 
Аватар для Евгений Таб
 
Регистрация: 09.08.2013
Сообщений: 202
По умолчанию

Маленькие пилит таблички, с побольше не справился.......

Вложение............

Ps страна может быть не только Россия...
Вложения
Тип файла: zip НИКАК.zip (10.1 Кб, 10 просмотров)

Последний раз редактировалось Stilet; 16.12.2014 в 20:13.
Евгений Таб вне форума Ответить с цитированием
Старый 16.12.2014, 16:46   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

размер таблички для предложенного макроса - не критичен, критично чтобы сохранялась структура данных.
задача поставлнена визуально. как увидел - так решил. а вариантов может быть много, угадывать что там может быть - не интересно
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 16.12.2014, 16:49   #5
Евгений Таб
Форумчанин
 
Аватар для Евгений Таб
 
Регистрация: 09.08.2013
Сообщений: 202
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
размер таблички для предложенного макроса - не критичен, критично чтобы сохранялась структура данных.
задача поставлнена визуально. как увидел - так решил. а вариантов может быть много, угадывать что там может быть - не интересно
Подскажите тогда, оч прошу, что не так в моей новой большой табличке....
Ведь структура сохранена и логика тоже...

Последний раз редактировалось Евгений Таб; 16.12.2014 в 16:53. Причина: .............
Евгений Таб вне форума Ответить с цитированием
Старый 16.12.2014, 17:55   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

строка где было
Код:
  Do While Not IsEmpty(Cells(r + 2, 19))
оставляете просто
Код:
  Do
а строка, где было
Код:
  Loop
записываете как
Код:
  Loop Until IsEmpty(Cells(r, 19))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 16.12.2014, 19:37   #7
Евгений Таб
Форумчанин
 
Аватар для Евгений Таб
 
Регистрация: 09.08.2013
Сообщений: 202
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
строка где было
Код:
  Do While Not IsEmpty(Cells(r + 2, 19))
оставляете просто
Код:
  Do
а строка, где было
Код:
  Loop
записываете как
Код:
  Loop Until IsEmpty(Cells(r, 19))
Мерси вам огромедное
Евгений Таб вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обьеденить повторяющиеся ячейки в одну и суммировать их значения Омар34 Microsoft Office Excel 5 20.03.2016 17:30
Убрать рамку из печати Paskal1 Общие вопросы Delphi 2 26.01.2013 16:31
Прошу помочь. Надо обьеденить 30 файлов и сгрупировать. creo Microsoft Office Excel 5 05.07.2009 14:40