Страницы: 1
RSS
Объединение одинаковых ячеек в одну, с доп. условием
 
Здравствуйте. Подскажите, пожалуйста, прикладываю пример и как должно получится. Каким образом можно объединить ячейки в одном столбце, ориентируясь на объединенные ячейки из другого столбца? Стоит обратить внимание, что текст может повторятся, но нужен он будет в разных ячейках. (Как например со словом "белый")
Как-то пробовала через "=" и ссылка на 1ую строчку, но не получается дальше протянуть из-за разного размера ячеек...
Если данный вопрос уже рассматривался, прошу извинить, именно как я хочу не нашла)
 
Макрос.
 
ksu-ksu, здравствуйте! Если ориентироваться на ваш пример, то просто выделить A1:A41, нажать ФОРМАТ ПО ОБРАЗЦУ и щёлкнуть на B1  8)
А если понадобится просто объединить повторяющиеся значения в столбцах то вот (к сожалению, потерял автора):
Код
Sub MergeAuto()

    If TypeName(Selection) <> "Range" Then Exit Sub
    If Selection.Cells.Count <= 1 Then Exit Sub
    Dim rColumn As Range, rCell As Range, sAddress$, rMerge As Range, rTarget As Range


Application.ScreenUpdating = False


    Set rTarget = Intersect(Selection, ActiveSheet.UsedRange)
    For Each rCell In rTarget
    If rCell.MergeCells Then
        sAddress = rCell.MergeArea.Address: rCell.UnMerge
        Range(sAddress).Value = rCell.Value
    End If
    Next
    rTarget.Select
    'Stop
    For Each rColumn In rTarget.Columns
    For Each rCell In rColumn.Cells
        If rMerge Is Nothing Then
            Set rMerge = rCell
        Else
            If rMerge(1).Value = rCell.Value Then
                Set rMerge = Union(rMerge, rCell): rMerge.Merge
            Else
                Set rMerge = rCell
            End If
        End If
    Next
    Set rMerge = Nothing
    Next


Application.ScreenUpdating = True

    
End Sub
Изменено: Jack Famous - 19.06.2016 13:26:35
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Юрий М, Спасибо большое, всё работает.
Jack Famous, Класс, спасибо большое)
 
ksu-ksu, вот вариант "Формат по образцу" макросом:
Код
Sub Перенос_объединения()
    Dim LastRow As Long
    LastRow = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row ' последняя строка
    Application.ScreenUpdating = False
    Range(Cells(1, столбец_шаблона), Cells(LastRow, столбец_шаблона)).Copy ' копируем столбец с "шаблоном" объединений
    Range(Cells(1, столбец_применения_шаблона), Cells(LastRow, столбец_применения_шаблона)).PasteSpecial xlPasteFormats ' "применяем "шаблон" (форматы)
    Application.ScreenUpdating = True
End Sub
вместо "столбец_шаблона" и "столбец_применения_шаблона" нужно поставить номера нужных столбцов (по файлу-примеру "столбец_шаблона" меняем на 1, а "столбец_применения_шаблона" меняем на 2)...
Успехов. И мне того же. Благодарю. :)
 
Ренат, к сожалению, самая большая из общих бед макросов (на мой взгляд) - не срабатывает обычная "отмена последнего действия" :cry:
поэтому и стараюсь использовать стандартные методы, когда это возможно
Изменено: Jack Famous - 21.06.2016 18:12:39
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, согласен, есть такое. Но я, возможно, видел файл ksu-ksu и в нём большое кол-во строк, что, для некоторых пользователей может вызвать затруднения для выделения (не все знают про кучу возможностей выделения с Ctrl и Shift, а некоторые "знают", но не умеют пользоваться)... Правда, не знаю принадлежит ли ksu-ksu к этой категории, но могут принадлежать "предки", которые найдут эту тему по своей нужде... А "моим" макросом выделяется нужный диапазон во всех строках листа и форматирование применяется ко всем строкам практически нажатием одной кнопки.
Успехов. И мне того же. Благодарю. :)
 
Ренат,Спасибо и за ваш вариант. Да, строк много, но выделять я их быстро умею)
Страницы: 1
Наверх