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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2020, 09:35   #1
oniava
 
Регистрация: 08.03.2015
Сообщений: 6
По умолчанию Объединение ячеек по условию.

Здравствуйте коллеги.

Интересует макрос, который бы объединял ячейки по заданному условию и помещал текст в центре (или с краю в левой ячейке)
Условие, поиск текста в таблице и при нахождении нужного теста, происходит объединение с А по D.
Код:
Sub ОбъединениеЯчеек()
  ' Объединяем  с 15 строки

    Dim ra As Range, delra As Range
    Application.ScreenUpdating = False    ' отключаем обновление экрана

    ' ищем и удаляем строки, содержащие заданный текст
    ' (можно указать сколько угодно значений, и использовать подстановочные знаки)
    СтрокиСТекстом = Array("Parameter List:", "main settings", "phases", "operating mode", "contactor")
 
    ' перебираем все строки в используемом диапазоне листа
    For Each ra In ActiveSheet.UsedRange.Rows
        ' перебираем все фразы в массиве
If ra.Row >= 15 Then
        For Each word In СтрокиСТекстом
        
            ' если в очередной строке листа найден искомый текст
            If Not ra.Find(word, , xlValues, xlPart) Is Nothing Then

                ' добавляем строку в диапазон для объединения
                If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
            End If
        Next word
End If
    Next
    
    ' если подходящие строки найдены, то: (оставьте одну из следующих строк)

   Здесь код для объединения

    ' If Not delra Is Nothing Then delra.EntireRow.Hidden = True    ' скрываем их
    ' If Not delra Is Nothing Then delra.EntireRow.Delete    ' удаляем их
End Sub
Может и как то по другому все это делается, я не силен в данной теме.
Подскажите пожалуйста, как это можно сделать?

Фай в котором будет выполняться поиск.
QF1 яч. 1-1 РМ(Р)0101А.xlsx

Последний раз редактировалось oniava; 08.11.2020 в 10:19.
oniava вне форума Ответить с цитированием
Старый 08.11.2020, 14:07   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Код:
Sub ОбъединениеЯчеек()
' Объединяем  с 15 строки

    Dim ra As Range, delra As Range
    Application.ScreenUpdating = False    ' отключаем обновление экрана

    ' ищем и удаляем строки, содержащие заданный текст
    ' (можно указать сколько угодно значений, и использовать подстановочные знаки)
    СтрокиСТекстом = Array("Parameter List:", "main settings", "phases", "operating mode", "contactor")

    ' перебираем все строки в используемом диапазоне листа
    For Each ra In ActiveSheet.UsedRange.Rows
        ' перебираем все фразы в массиве
        If ra.Row >= 15 Then
            For Each word In СтрокиСТекстом

                ' если в очередной строке листа найден искомый текст
                If Not ra.Find(word, , xlValues, xlWhole) Is Nothing Then '!!!xlWhole!!!!

                    ' добавляем строку в диапазон для объединения
                    If delra Is Nothing Then Set delra = Intersect(Columns("A:D"), ra) Else Set delra = Union(delra, Intersect(Columns("A:D"), ra))
                End If
            Next word
        End If
    Next

    ' если подходящие строки найдены, то: (оставьте одну из следующих строк)

    'Здесь код для объединения
    delra.Merge True

    ' If Not delra Is Nothing Then delra.EntireRow.Hidden = True    ' скрываем их
    ' If Not delra Is Nothing Then delra.EntireRow.Delete    ' удаляем их
End Sub
Если ещё нужно форматирование - запишите рекордером и добавьте.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединение ячеек ing60 Microsoft Office Excel 13 17.10.2019 21:35
Заполнение пустых ячеек по условию (копирование???) при помощи макроса, Макрос для копирования диапазона ячеек на текущем листе maxscorpio Microsoft Office Excel 0 06.02.2017 09:43
Объединение ячеек Nadin_2525 Microsoft Office Excel 3 26.12.2015 18:22
объединение ячеек OlegAB7819 Microsoft Office Excel 5 22.01.2010 16:27
объединение таблиц по условию rexec Microsoft Office Excel 2 25.05.2008 15:42