Макрос для объединения одинаковых ячеек в таблице Excel

Обновлено: 21.11.2024

Привет, ребята!
Прежде всего, спасибо за вашу поддержку. Это было удивительно и работало в прошлом. Но по какой-то причине он больше не работает.

Мой диапазон на данный момент составляет "$A$2:$A$126551". Я не уверен, был ли он настолько большим раньше, поскольку в прошлом диапазон для каждого пользователя также был больше (я пытаюсь помочь ему здесь). Любая помощь будет здоровой.

Я получаю сообщение об ошибке:
"Ошибка выполнения '6':

на "xRows = WorkRng.Rows.Count"

Sub MergeSameCell()
'Updateby Extendoffice
Dim Rng As Range, xCell As Range
Dim xRows As Integer
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
>xRows = WorkRng.Rows.Count
Для каждого ряда в WorkRng.Columns
Для i = 1 до xRows - 1
Для j = i + 1 до xRows
Если Rng. Cells(i, 1).Value <> Rng.Cells(j, 1).Value Then
Выйти для
End If
Далее
WorkRng.Parent.Range(Rng. Ячейки(i, 1), Rng.Cells(j - 1, 1)).Объединить
i = j - 1
Следующий
Следующий
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Дополнительно: когда я выбираю один диапазон дат до количества строк 12547, он работает, но только для одной даты. Я хочу сделать это для всех дат в столбце

Здравствуйте!
Это было потрясающе и работало в прошлом. Но по какой-то причине он больше не работает.

Мой диапазон на данный момент составляет "$A$2:$A$126551". Я не уверен, был ли он настолько большим раньше, поскольку в прошлом диапазон для каждого пользователя также был больше (я пытаюсь помочь ему здесь). Любая помощь будет здоровой.

Я получаю сообщение об ошибке:


Sub MergeSameCell()
'Updateby Extendoffice
Dim Rng As Range, xCell As Range
Dim xRows As Integer
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xRows = WorkRng.Rows.Count
Для каждого ряда в WorkRng.Columns
Для i = 1 до xRows - 1
Для j = i + 1 до xRows
>If Rng.Cells(i, 1).Value <> Rng.Cells(j, 1).Value Then
Выйти на
End If
Далее
WorkRng.Parent. Диапазон(Rng.Cells(i, 1), Rng.Cells(j - 1, 1)).Объединить
i = j - 1
Следующий
Следующий
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

A формула funciona perfeitamente para valores em colunas, mas se fossem valores para mesclar em linhas? Como серия формула? Обригадо!!

Большое спасибо за помощь. У меня есть дополнительный вопрос по этому поводу. Предположим, у меня есть следующая ситуация:

Яблоко 2
Яблоко 2
Апельсин 2
Апельсин 2
Банан 1
Груша 1
Киви 1

Запуск макроса приведет к тому, что все "1" и "2" будут сгруппированы вместе, и мой общий счет будет равен 3 вместо 7. Есть ли способ объединить ячейки во втором столбце на основе ячеек в первом? ? Заранее спасибо (:

У меня та же проблема, я хочу объединить ячейки в столбце на основе значения другого столбца. Есть ли решение?

Это потрясающе. Большое спасибо за код. Есть ли какое-либо дополнение, благодаря которому сегменты не сливаются при печати на разрыве страницы?

Здравствуйте, Кимберли,
Я не могу получить подробную информацию о вашей проблеме, но приведенный ниже код VBA может помочь вам объединить одни и те же ячейки до и после разрыва страницы по отдельности, попробуйте.
Если это поможет вам, дайте мне знать.

Sub MergeSameCell_PageBreak()
Dim Rng As Range, xCell As Range
Dim xRows As Integer
Dim xHPB As HPageBreaks
Dim xChpb As Long
Dim xBol As Boolean
Dim xRg As Range
Set xHPB = ActiveSheet.HPageBreaks
xChpb = xHPB.Count
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
>Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xRows = WorkRng.Rows .Count
Для каждого ряда в WorkRng.Columns
Для I = 1 до xRows - 1
Для J = I + 1 до xRows
xBol = False
Установить xRg = Rng.Cells(J, 1)
For xC = 1 To xChpb
If xRg.Row = xHPB.Item(xC).Location.Row Then
xBol = True
Выход для
Конец, если
Далее
Если xBol, то Выход для
If Rng.Cells(I, 1).Value <> Rng.Cells(J, 1).Value Then
Выход для
Конец, если
Следующий
WorkRng.Parent.Range(Rng.Cells(I, 1), Rn g.Cells(J - 1, 1)).Объединить
I = J - 1
Следующий
Следующий
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Конец подписки

В приведенной выше строке кода VBA номер 19 "i=j-1 "
как это вообще повлияет на нашу логику?Я удалил это и все еще мог получить тот же результат!
Какая-то конкретная цель, почему она присутствует?

При работе с Microsoft Excel дома и в офисе, в супермаркетах или корпоративных компаниях нам часто приходится ассимилировать повторяющиеся строки рабочего листа и суммировать результаты. В Excel есть разные эффективные и удобные методы объединения повторяющихся строк. Сегодня мы покажем три из них с подходящими примерами и соответствующими иллюстрациями.

Загрузить практическую рабочую тетрадь

Вы можете скачать учебник по следующей ссылке.

3 метода объединения повторяющихся строк в Excel

Предположим, у нас есть набор данных, содержащий данные о продажах нескольких торговых представителей на листе Excel. Нам нужно объединить набор данных, чтобы каждый торговый представитель был записан в таблицу только один раз вместе с его общим объемом продаж. Мы покажем три широко используемых метода объединения повторяющихся строк для объединения наших демонстрационных данных.

1. Используйте параметр «Объединить» для объединения повторяющихся строк

Параметр Excel Consolidate используется для объединения информации из нескольких строк, листов или книг в одном месте. Это поможет вам обобщить информацию из таблицы данных из разных мест. Мы шаг за шагом увидим, как этот инструмент помогает нам в решении наших проблем

Шаги:

<р>1. Выберите заголовки данных, скопируйте и вставьте их в то место (E4:F4), где вы хотите отобразить консолидированные данные.

2. Выберите ячейку E5, расположенную под самым левым заголовком новой таблицы. Затем перейдите на вкладку Данные.

<р>3. Теперь перейдите в группу «Инструменты данных» и щелкните значок «Консолидировать». Появится диалоговое окно.

<р>4. В раскрывающемся списке «Функция» выберите «Сумма» (или любой параметр, который вы считаете полезным для своей задачи).

5. В поле «Ссылка» щелкните значок «Выбор диапазона» и выберите диапазон ячеек B5:C14. Не забудьте установить флажок Левый столбец.

<р>6. Нажмите ОК.

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

2. Используйте сводную таблицу Excel для объединения повторяющихся строк

Сводная таблица — чрезвычайно эффективный инструмент MS Excel для суммирования, консолидации и проверки данных в Excel. В этом методе мы покажем, как использовать этот инструмент для объединения повторяющихся строк и достижения наших целей.

Шаги:

<р>1. Щелкните любую ячейку в наборе данных (здесь, ячейка B5) и перейдите на вкладку "Вставка".

2. В группе "Таблицы" выберите параметр "Сводная таблица".

<р>3. Откроется диалоговое окно «Создать сводную таблицу». Посмотрите на поле Выберите таблицу или диапазон и внимательно проверьте правильность выбранного диапазона. Выберите существующий рабочий лист.

4. Щелкните значок «Расположение» и выберите место (здесь, в ячейке E4), куда вы хотите поместить результирующую сводную таблицу. Затем нажмите ОК.

В выбранной ячейке E4 появится сводная таблица.

5. Щелкните в любом месте сводной таблицы.

Справа откроется диалоговое окно сводной таблицы.

<р>6. Установите флажки «Торговый представитель» и «Продажи». Перетащите поле «Торговый представитель» в область «Строки» и поле «Продажи» в область «Значения».

Наконец мы объединили наши данные с помощью инструмента сводной таблицы.

3. Использование кодов Excel VBA для объединения повторяющихся строк

Коды VBA также помогают объединять повторяющиеся строки на листе. Мы покажем вам, как работать с кодом VBA для объединения повторяющихся строк в MS Excel.

Примечание:

Исходные данные больше не будут существовать на листе после того, как мы использовали код VBA. Нам придется создать резервную копию данных.

Шаги:

<р>1. Прежде всего, щелкните правой кнопкой мыши имя рабочего листа «Использование кода VBA». Затем нажмите «Просмотреть код».

2. Откроется окно модуля приложений Microsoft Visual Basic.

3. Скопируйте следующие коды VBA и просто вставьте их в окно модуля.

Ваш модуль MS VBA будет выглядеть следующим образом.

<р>4. Теперь нажмите F5 или щелкните значок «Выполнить форму подписчика/пользователя», а затем нажмите «Выполнить».

<р>5. Мы выберем диапазон ячеек B5:C14, который мы хотим объединить, и нажмем OK.

<р>6. Повторяющиеся строки теперь объединены, и значения продаж суммируются для каждого уникального торгового представителя.

Заключение

Надеюсь, вы найдете все эти методы полезными. Учебник есть для вас, чтобы загрузить и практиковать себя. Если у вас есть какие-либо вопросы, комментарии или любые отзывы, сообщите мне об этом в поле для комментариев.

Если у вас есть рабочий лист с одинаковыми данными в соседних ячейках, вы можете объединить их по визуальным соображениям. В этом уроке я покажу вам, как вы можете это сделать.

В этом случае вы можете выбрать диапазоны A1:A2 и нажать кнопку объединения, а затем сделать то же самое для A4:A6. Но если вы имеете дело с сотнями ячеек, это не лучшая идея.

Конечно, лучше всего использовать код VBA, который сделает всю работу за нас.

Сначала подготовьте данные.

Ячейки, которые вы хотите объединить, должны быть отсортированы, иначе будут объединены только соседние ячейки с одинаковым значением.

Ваш отсортированный пример должен выглядеть следующим образом.

После сортировки данных вы можете запустить следующий код.

Это даст нам следующий результат.

Объяснение кода:

Следующая строка кода отключает оповещения.

Если вы не добавите эту строку, каждый раз, когда код попытается объединить ячейки, вы получите это сообщение.

В нашем случае Excel попытается объединить ячейки три раза и каждый раз будет отображать это предупреждение.

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

Затем мы запускаем цикл для myRange. Этот диапазон состоит из одного столбца, поэтому следующей ячейкой всегда будет новая строка.

Эта строка проверяет, совпадает ли ячейка в следующей строке с текущей ячейкой. Он также проверяет, не является ли ячейка пустой, иначе цикл перейдет к последней ячейке внутри рабочих листов, и программа вылетит.

Если условие выполняется, ячейки объединяются и центрируются по вертикали.

Следующая строка — оператор GoTo.

Выполнение переместится перед циклом, чтобы проверить, есть ли еще ячейки для проверки.

В конце мы установим для параметров ScreenUpdating и DisplayAlterts значение TRUE.

В Excel часто возникает необходимость объединить повторяющиеся строки в диапазоне и суммировать их в отдельном столбце. Например, если у вас есть продажи по продуктам на листе (как показано ниже), вы можете захотеть суммировать продажи по каждому продукту. В следующем примере у вас есть продукты в столбце B (включая дубликаты), а суммы их продаж — в столбце C.

Вы можете объединить данные и получить общую сумму продаж для каждого продукта в отдельном диапазоне рядом с исходным.

<р>1. Выберите ячейку, в которую вы хотите получить новый диапазон данных (например, E1), и на ленте выберите Данные > Консолидировать.

<р>2. В окне «Консолидация» оставьте функцию по умолчанию (Сумма) и щелкните значок «Ссылка», чтобы выбрать диапазон для консолидации.

<р>3. Выберите диапазон данных, который вы хотите объединить (например, B1:C17), и нажмите Enter.

<р>4. В окне «Консолидация» установите флажок «Верхняя строка» и «Левый столбец» и нажмите «ОК».
Если в наборе данных нет строки заголовка, вам не нужно выбирать верхнюю строку.

Читайте также: