#excel #vba
Вопрос:
Я думаю, что я слишком глуп, чтобы объяснить это, поэтому вот пример:
A | B | C | D | E | F | G | H | Я | J | K | L | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 121 | 221 | 335 | 335 | 558 | 669 | 126 | |||||
2 | 54 | 89 | 56 | 78 | 23 | |||||||
3 | 85 | 59 | 16 | 15 | ||||||||
4 | ||||||||||||
5 | 16 | 95 | 48 | 16 | 79 | 16 |
Итак, вот как выглядит лист. Чего бы я хотел, так это чтобы:
Для всех столбцов, имеющих одинаковое значение в строке 1, т. е. 121 221, 335
-получите значения в этих столбцах и сложите их вместе в столбце, который предшествует столбцу с первым значением в строке A
Например, в первом столбце этой таблицы будет сумма B2, в строке A2 H3 будет сумма I3 J3 E5 будет сумма F5 G5
Наконец, пустые столбцы будут принимать значение строки 1 столбцов, извлеченных из-A1 будет = B1-C1 будет = D1
Затем все первоначально заполненные столбцы будут удалены:
A | B | C | D | E | F | |
---|---|---|---|---|---|---|
1 | 121 | 221 | 335 | 558 | 669 | 126 |
2 | 54 | 89 | 56 | 78 | 0 | 23 |
3 | 85 | 0 | 59 | 0 | 16 | 15 |
4 | 0 | 0 | 0 | 0 | 0 | 0 |
5 | 16 | 95 | 64 | 0 | 79 | 16 |
В значениях в строке 1 нет шаблона
Спасибо за любую помощь, которую вы можете оказать, я добился некоторого прогресса в этом проекте, но это ставит меня в тупик.
Комментарии:
1. Вы говорите, что я добился некоторого прогресса в этом проекте, но это ставит меня в тупик , так что покажите нам, что у вас есть и что мешает вам прогрессировать. Как написано, это звучит как просьба «сделай мою работу за меня», на которую вряд ли ответят
2. Я имел в виду, что я дошел до этого этапа, до этого были другие шаги, которые я выполнил и в которых не нужна помощь. Мне просто нужен способ завершить то, что описано. Извините, если я плохо соблюдаю этикет. Это мой первый раз, когда я использую VBA
Ответ №1:
Вот алгоритмический подход, который вы можете использовать
- Получите ссылку на ваш диапазон исходных данных
- Скопируйте этот диапазон в массив вариантов
- Создайте еще один пустой массив того же размера, что и данные
- Создайте переменную указателя столбца для вывода
- Инициализируйте первый столбец выходного массива равным 0
- Зациклите первую строку данных
- Когда значение найдено, проверьте, совпадает ли оно со значением в столбце текущий вывод
- Если это не так, обновите указатель вывода, инициализируйте новый столбец до 0
- Зациклите столбец данных и добавьте значения в выходной столбец
- Как только цикл будет завершен, поместите выходной массив на лист, перезаписав исходные данные
На этот вопрос есть множество ответов, которые могут помочь с каждым из этих шагов
Комментарии:
1. Спасибо! Я действительно ценю это. Я попробую и доложу об этом.