0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 135
|
||||||
1 | ||||||
Друзья немного сократить код VBA06.12.2016, 15:58. Показов 844. Ответов 20
Метки нет (Все метки)
Ребят, написал код. Но он слишком большой. очень много If. Как бы мне его сократить.
Механика кода проста. Есть сводная таблица, он оттуда просматривает значения и суммирует их вставляя в определенные ячейки результат моего вычисления. Т.е он находит сначала 2011 и все что меньше, выдает сумму, потом по 2012 также и до 2016.
0
|
06.12.2016, 15:58 | |
Ответы с готовыми решениями:
20
Слишком длинный типовой код в UserForm VBA. Как сократить код? VBA: Сократить текст каждой ячейки столбца Excel Друзья сделайте за меня код на рнр! Сократить код |
15145 / 6418 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
|
06.12.2016, 16:06 | 2 |
hannu, похоже тут функцией СУММЕСЛИ можно обойтись, приложите файл-пример.
0
|
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 135
|
|
06.12.2016, 16:25 [ТС] | 3 |
Вопрос в том, что там, обычная таблица завязана на сводную.
Т.е получается динамический диапазон. Т.е когда то данных больше, когда то меньше. А при помощи функции нужно обозначать определенный диапазон
0
|
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 135
|
|
06.12.2016, 16:28 [ТС] | 4 |
Вот прикладываю.
0
|
1856 / 1178 / 190
Регистрация: 27.03.2009
Сообщений: 4,558
|
|
06.12.2016, 16:57 | 5 |
типа такого?
0
|
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 135
|
|
06.12.2016, 17:02 [ТС] | 6 |
Не совсем, он из сводной таблицы(Лист С3) должен брать необходимые данные, суммировать их и вставлять в Т3.
Макрос на это есть, но там много переменных и If. Мне челвоек сказал что можно при помощи While сделать, он будет смотреть в сводной таблицы данные, если 4 символа левых от даты = 2016 то суммировать все ячейки с кол-во обьекта и 2016 годом. Ну и также по 2015 , 2014, 2013
0
|
1856 / 1178 / 190
Регистрация: 27.03.2009
Сообщений: 4,558
|
||||||
06.12.2016, 17:08 | 7 | |||||
hannu, а посмотри сам макрос. Да и... там нет третьего листа. В данном случае данные берет с первого, и результат ставит на 3 (то есть O3).
Добавлено через 1 минуту а если нужно с 1 во второй (С3 в ТЗ), то просто в макросе поменять листы Добавлено через 30 секунд
0
|
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 135
|
|
06.12.2016, 17:15 [ТС] | 8 |
Точно, через case. Блин сейчас поковыряюсь, сделаю. А теперь другой момент, в случае если данные поменяются он их проссумирует с предыдущими. тут я так понимаю нужен цикл на обнуление или как?
0
|
1856 / 1178 / 190
Регистрация: 27.03.2009
Сообщений: 4,558
|
|
06.12.2016, 17:16 | 9 |
то есть?
0
|
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 135
|
|
06.12.2016, 17:18 [ТС] | 10 |
Получается, я обновил сводную запустил макрос. Потом данные поменял запустил и он новые данные сложит с предыдущими, которые не очистились.
Получается если на сводной таблице 3 раза запустить код он будет тупо складывать и складывать складывать и складывать. А нужно чтобы один раз выдал необходимое значение.
0
|
1856 / 1178 / 190
Регистрация: 27.03.2009
Сообщений: 4,558
|
||||||
06.12.2016, 17:18 | 11 | |||||
0
|
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 135
|
|
06.12.2016, 17:27 [ТС] | 12 |
да я так понимаю он очищает диапазон ячеек. Но тогда нужно будет 2 кнопки делать. Одной кнопкой очищать а второй вносить.
И второй небольшой вопрос, как сделать, чтобы он не по каждому столбцу а например по Case:a находил значения меньше 2012 и данные по колличеству квартир и по площади отражал также в таблице Т3 Добавлено через 3 минуты Т.е для следующих данных нужно будет составлять такой же код, но только смещать его верно?
0
|
1856 / 1178 / 190
Регистрация: 27.03.2009
Сообщений: 4,558
|
||||||
06.12.2016, 17:33 | 14 | |||||
hannu, не 2 кнопки...
0
|
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 135
|
||||||
06.12.2016, 17:43 [ТС] | 15 | |||||
Потому что сводная таблица привязана у меня к выгрузке и делается совершенно из другого массива данных. А таблица это некоторое визуальное отображение части необходимой информации
Добавлено через 10 минут
0
|
1856 / 1178 / 190
Регистрация: 27.03.2009
Сообщений: 4,558
|
|
06.12.2016, 17:45 | 16 |
а потому что там год во всех строчках меньше 2012
0
|
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 135
|
|
06.12.2016, 17:46 [ТС] | 17 |
а как же быть с 2013, 2014. ?? 2015 и 2016
0
|
1856 / 1178 / 190
Регистрация: 27.03.2009
Сообщений: 4,558
|
|
06.12.2016, 17:48 | 18 |
hannu, ввести в отчет :-)
0
|
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 135
|
|
06.12.2016, 17:51 [ТС] | 19 |
Так там они есть. Просто почему то не собираются
Добавлено через 1 минуту там фильтр стоит в сводной, если его убрать, как раз даты другие появятся.
0
|
1856 / 1178 / 190
Регистрация: 27.03.2009
Сообщений: 4,558
|
|
06.12.2016, 17:55 | 20 |
hannu, последний раз. Лист СЗ - 16 строк, заполнены с 5 по 15 датами, где год меньше 2012.
Остальные данные с потолка возьму
0
|
06.12.2016, 17:55 | |
06.12.2016, 17:55 | |
Помогаю со студенческими работами здесь
20
Сократить код Сократить JS-код Сократить код Сократить код Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |