Как Удалить Одинаковые Строки в Excel Макрос • Использование формулы

Excel макрос VBA для суммирования повторяющихся значений, а затем удаления дубликатов записей

Я пытаюсь суммировать значения на основе дубликатов, найденных в столбцах “AO”. Я использую макрос ниже. Есть около 500k+ записей, а нижний макрос висит плохо.

Позвольте мне кратко объяснить макрос. У меня есть столбцы “AO”, и мне приходится их группировать… на основе группировки я должен суммировать столбцы “P, Q”. У меня есть функция, которая делает конкатенированную строку из 16 столбцов и хранится в столбце “AA”. Основываясь на этом столбце, я использую функцию sumif для суммирования всех повторяющихся значений

Затем я копирую пасту в качестве “значений” вышеуказанных значений, чтобы удалить формулу, в 2 новых столбцах (функция pasteSpecial в указанном выше макрокодеке).

Наконец, я вызываю дубликаты удаления, чтобы удалить повторяющиеся значения

Я использовал метод.removeduplicates, который, кажется, работает довольно быстро даже на таком огромном наборе данных. Есть ли какая-либо предопределенная функция в excel, которая бы даже суммировала значения дубликатов, а затем удаляла дубликаты записей?

Вышеупомянутая логика висит плохо, едя все ресурсы ЦП и сильно врезавшись…

Кто-то, пожалуйста, оптимизируйте макрос выше, чтобы он работал с записями 500k+. Допустимая производительность составляет 1-2 минуты.

EDIT: По записи 500k+ я имею в виду A1: O500000. Таким образом, предполагается, что для дублирования в этом случае используется комбинация A1, B1, C1, D1, E1, F1, G1, H1, I1, J1, K1, L1, M1, N1, O1 с A2, B2, C2, D2, E2, F2, G2, H2, I2, J2, K2, L2, M2, N2, O2 и A3, B3, C3, D3, E3, F3, G3, H3, I3, J3, K3, L3, M3, O3 и т.д…. до A500000, B500000 и т.п….

Короче, я должен проверить все совпадения A1-O1 со всеми A2-O2 или A3-O3 или….. A500k-O500k и так далее

Для каждого совпадения между всем набором записей AO мне нужно суммировать их соответствующие столбцы P, Q. Скажем, например, набор A1-O1, соответствующий набору A2-O2, затем добавьте P1, Q1 и P2, Q2 и сохраните в P1, Q1 или что-то в этом роде.

В любом случае мне нужно сохранить каждый оригинальный набор записей, скажем, A1-O1 с суммированными значениями его дубликатов и свойством в P1, Q1

Я не думаю, что мы можем приложить демоверсию листа Excel здесь, не так ли? 🙁

Функция для репликации формулы sumif во всех ячейках

Он висит довольно плохо. Какая проблема в репликации формулы в 30k-40k строк. Может ли кто-то оптимизировать код?

Что-то должно быть ужасно неправильно с тем, как вы делаете добавление дубликатов. Поскольку у вас мало информации о данных, с которыми вы работаете, я не знаю, является ли это одним и тем же, но я заполнил A1: O33334 (более 500 тыс. Ячеек) случайным числом от 1 до 10 000.

Используя объект словаря (я известен своей любовью и чрезмерным использованием), я прошел через все из них и суммировал только повторяющиеся значения, а затем ударил уникальный список элементов в столбец A в sheet2.

Проверка и добавление дубликатов и копирование уникальных ячеек занимает всего 2 секунды. Вот код для вашей справки.

Вы не должны select каждую ячейку при выполнении кода.

Кстати, если вы посмотрите на свой код, некоторые утверждения бесполезны:

Что касается производительности, см. Некоторые советы в этом потоке: Бенчмаркинг кода VBA

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

Вот несколько шагов, которые я бы предпринял. Измените их в соответствии с вашими потребностями:

Используйте функцию concatenate для создания нового столбца справа от вашего набора данных. Например

Создайте столбец под названием Dups и используйте его для заполнения:

Я добавляю это как второй ответ, так как он будет длиться долго…

Безусловно, я упрямый мул, я пробовал много разных вещей, я думаю, вы достигли предела того, что может сделать Excel. Лучшая функция, которую я мог придумать, заключалась в этом, и обратите внимание, что я использую 50 000 строк, а не 500 000:

  • 50 000 строк со 100 уникальными строками, случайным образом распределены: 1m: 47s
  • 50 000 строк с 50 уникальными строками, случайным образом распределены: 57 секунд
  • 50 000 строк с 25 уникальными строками, случайное распространение: 28 секунд
  • 50 000 строк с 10 уникальными строками, случайное распространение: 12 с
  • 50 000 строк с 5 уникальными строками, случайное распространение: 6 с

Как вы можете видеть, функция будет ухудшаться по мере увеличения числа уникальных строк. У меня здесь много дурацких идей, поэтому я решил поделиться своим кодом ради исследования:

специалист
Мнение эксперта
Витальева Анжела, консультант по работе с офисными программами
Со всеми вопросами обращайтесь ко мне!
Задать вопрос эксперту
Макрос стоит использовать, если вы уверены что такую процедуру по удалению пустых строк в Excel, а также, столбцов или ячеек будет очень частым и для выполнения этих работ стоит прописать скрипт. Если же вам нужны дополнительные объяснения, обращайтесь ко мне!
Этот способ уже на искушенного пользователя. Хотя ничего уж слишком сложного и нет, тем не менее, этот способ я увидел у Николая Павлова на его сайте и решил добавить его для полноты информации о возможностях чистки от пустых строк с применением формулы массива.
Pustie stroki 5 5 вариантов, как удалить пустые строки в Excel

5 вариантов, как удалить пустые строки в Excel | Понятный Excel

В этом методе используется конструктор Excel (расширенный режим с дополнительными возможностями). Конструктор активируется при выделении любой ячейки табличной области. Как и в первом случае, после применения производится удаление дублированных значений.

Другие методы

Существуют альтернативные способы избавления от повторов, которые также будут работать в excel 2003 года. Рассмотрим подробнее:

  1. Дубликаты можно удалить формулой. Создаете дополнительный столбец, в котором используете функцию СЧЁТЕСЛИ (на английском COUNTIF). В качестве первого аргумента выбираете анализируемый диапазон, который обязательно фиксируете клавишей F4 или значком доллара, а во втором блоке ставите ссылку на ячейку из столбца. Применяете формулу ко всем строкам при помощи маркера автозаполнения. Затем убираете строки, где стоит ИСТИНА, которая указывает на повтор.

Удалить дубликаты в excel 7

Используя этот способ можно без смещения и удаления увидеть повторяющиеся значения.

Удалить дубликаты в excel 8

Удалить дубликаты в excel 9

Удалить дубликаты в excel 10

  1. Пользовательский макрос, написанный на языке программирования vba (Visual Basic). Этот способ требует определенных знаний в кодировке программы, синтаксисе языка, а также необходимо иметь идею реализации поиска дублей в базе данных, что под силу только опытным пользователям MS Excel.

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

Excel макрос VBA для суммирования повторяющихся значений, а затем удаления дубликатов записей
Безусловно, я упрямый мул, я пробовал много разных вещей, я думаю, вы достигли предела того, что может сделать Excel. Лучшая функция, которую я мог придумать, заключалась в этом, и обратите внимание, что я использую 50 000 строк, а не 500 000:
специалист
Мнение эксперта
Витальева Анжела, консультант по работе с офисными программами
Со всеми вопросами обращайтесь ко мне!
Задать вопрос эксперту
Подобный формат таблицы влияет на восприятие информации, а также может привести к ошибке в вычислениях, если со значениями производятся какие-либо математические операции. Если же вам нужны дополнительные объяснения, обращайтесь ко мне!
Позвольте мне кратко объяснить макрос. У меня есть столбцы “AO”, и мне приходится их группировать… на основе группировки я должен суммировать столбцы “P, Q”. У меня есть функция, которая делает конкатенированную строку из 16 столбцов и хранится в столбце “AA”. Основываясь на этом столбце, я использую функцию sumif для суммирования всех повторяющихся значений

Удалить дубликаты в excel — пошаговая инструкция с фото

  1. В появившемся диалогом окне выбираете столбцы, по которым будет выполняться проверка. Если поставить галочку напротив содержания заголовков, то название столбцов будет соответствовать названию таблицы, а не буквенной последовательности рабочего листа excel.

Если в каждом столбце таблицы имеется заголовок, установить маркер Мои данные содержат заголовки. Также проставляем маркеры напротив тех столбцов, в которых требуется произвести поиск дубликатов.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: