Нужно простое решение для суммирования 2 столбцов после группировки по 16 кумонов для более 200 тыс. Записей в EXCEl VBA - PullRequest
0 голосов
/ 21 августа 2011

У меня есть лист Excel с 18 столбцами.Последние 2 столбца являются суммами.У меня есть ситуация, в которой мне нужно многократно выполнять группировку.

Например: рассмотрим первые 16 столбцов, скажем, уровень 16. Мне нужно сгруппировать все эти 16 столбцов и суммировать суммы за последние 2колонны.Затем наступает уровень 15, на котором я теперь группирую по 15 столбцам и суммирую последние 2 столбца и так далее ... пока не достигну уровня 1

Проблема здесь в том, что я имею дело с 200k + записями.Одним из конкретных подходов, который я выбрал, было сначала скопировать все записи из 200 000+ на другой лист, а затем на основе текущего уровня (скажем, 16). Я использую CONCATANATE (все 16 столбцов), чтобы создать строку, а затем

 =SUMIF(entire 200k concatanate string,first cell of concatenate string,entire range of coulmn to be summed)

.Используйте то же самое для другого столбца, который будет суммирован.Теперь, поскольку встраивание этой формулы в каждую ячейку в цикле отнимает уйму времени, я использую пасту диапазона копирования, чтобы сделать это.Но все равно копирование с вставкой формулы в 200 тыс. Строк немного подвисает.

После этого я использую метод .removeduplicates, чтобы удалить любые дублирующиеся записи на основе объединенной строки.Проблема в том, что формула SUMIF зависит от тех записей, которые были удалены методом .removeduplicates: (

Для этого я сначала вставил формулы в последние 2 столбца, а затем скопировал и вставил их в отдельные столбцы, используяcopypastespecial в качестве «values», а затем использовать метод .removeduplicates

Это вызывает огромную нагрузку на время и ресурсы, и Excel постоянно зависает. Я не эксперт по VBA, поэтому уверен, что может быть лучше логикатам :(. пользуюсь excel 2007

помогите пожалуйста !!!

1 Ответ

2 голосов
/ 21 августа 2011

Я бы рекомендовал использовать сводную таблицу. Начните с добавления всех 16 полей столбца в фильтр отчета и 2, которые вы хотите суммировать в область значений. Это дает вам первую группировку. они перемещают столбец в область строк для второй группировки и т. д.

Или в 2007 году вы можете попробовать использовать SUMIFS вместо SUMIF, но Pivot будет лучше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...