![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
Анна, попробуйте такой вариант:
Код:
Но я решил оставить - потому, что так проще код менять под задачу - изменили например диапазон, а в коде эта переменная всегда указывает на последний элемент массива (который нужно суммировать), менять не нужно 3 на n при таких изменениях.
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 31.08.2011 в 14:05. |
![]() |
![]() |
![]() |
#12 |
Форумчанин
Регистрация: 24.08.2011
Сообщений: 193
|
![]()
Hugo121 БОЛЬШОЕ, БОЛЬШОЕ ВАМ СПАСИБО. Данный код работает в моем файле (с моими данными).
![]() А можно ещё вопросик? Тот макрас который похож на Результирующий_файл.xls: и в котором я все заменила, что Вы мне сказали у меня работал , но только в файле который был для примера дан изначально, а в моеём файле работать отказывается выделяет мне жёлтым цветом данную строчку: b(ii, 1) = temp: b(ii, 2) = Trim(a(i, 2)): b(ii, 3) = Trim(a(i, 4)): b(ii, ubb) = a(i, 3). Что не так? ![]() |
![]() |
![]() |
![]() |
#13 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
Я думаю, что проблема в a(i, 4) - если у Вас диапазон не
Код:
Эта строка вероятно так должна быть написана: b(ii, 1) = Trim(a(i, 1)): b(ii, 2) = Trim(a(i, 2)): b(ii, ubb) = a(i, 3)
webmoney: E265281470651 Z422237915069 R418926282008
|
![]() |
![]() |
![]() |
#14 |
Форумчанин
Регистрация: 24.08.2011
Сообщений: 193
|
![]()
Hugo121 Да, так код работает, но...
Видимо данный код как то рассчитан толи на количество листов в книге (из который мы хотим взять данные), то ли на то что заполняются только 21 графа. Т.е. если в моем файле только 15 листов с данными, то в результате я получаю таблицу, которая меня устраивает, но после 17 графы по 21 все заполняется такими знаками #Н/Д, это конечно не беда я и удалить их могу, но... В моем файле 75 листов и в итоге в сводной таблице по данному макросу получается, что заполняется только 21 графа (1-номер, 2- наименование, с 3 по 21 суммы) т.е. данные взялись только с первых 19 листов. Как можно решить такую проблему? ![]() |
![]() |
![]() |
![]() |
#15 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
Проблему всегда можно решить...
Чуть прокомментирую. 'определяем массив высотой с сумму количества строк ранее просмотренных листов ReDim b(1 To rcnt, 1 To 3) 'определяем, использованы ли вообще выбранные столбцы, определяем нужный диапазон Set r = Intersect(.UsedRange, .[a:c]) 'если использовались If Not r Is Nothing Then 'данные в массив a = r.Value ind = UBound(a, 2) For i = 1 To UBound(a) 'если есть что суммировать If Not IsEmpty(a(i, ind)) Then 'если это цифра, а не буквы If IsNumeric(a(i, ind)) Then ... ... 'выгружаем с первой строки по число использованных строк массива .Range("A1:C1").Resize(ii) = b Если у Вас #Н/Д, то это значит, что переменная ii имеет не то значение (больше нужного), или массив меньше, чем Вы задали выгрузку. В общем, желательно видеть пример файла.
webmoney: E265281470651 Z422237915069 R418926282008
|
![]() |
![]() |
![]() |
#16 |
Форумчанин
Регистрация: 24.08.2011
Сообщений: 193
|
![]()
Вот файлы для примера
![]() |
![]() |
![]() |
![]() |
#17 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
Да, была моя ошибка - выгрузка была нединамическая
![]() Вот тут: .Range("A1:C1").Resize или .Range("A1:U1").Resize... Код:
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 31.08.2011 в 16:54. |
![]() |
![]() |
![]() |
#18 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
Код выше слегка изменил - так правильнее.
webmoney: E265281470651 Z422237915069 R418926282008
|
![]() |
![]() |
![]() |
#19 |
Форумчанин
Регистрация: 24.08.2011
Сообщений: 193
|
![]()
Hugo121 ОГРОМНОЕ, ОГРОМНОЕ ВАМ СПАСИБО Все получилось.
Буду работать, пользоваться и вспоминать Вас добрым словом. Спасибо. ![]() |
![]() |
![]() |
![]() |
#20 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
На здоровье
![]() Кстати, если "Буду работать, пользоваться", то удобнее этот код держать в отдельном файле. 1. Открыть этот файл ![]() 2. Открыть анализируемый файл. 3. По Alt+F8 выбрать макрос UniqSumm из ЭТОГО файла.
webmoney: E265281470651 Z422237915069 R418926282008
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Макрос Сводной Таблиц для всех листов | Richard123 | Microsoft Office Excel | 4 | 21.01.2011 12:53 |
Классический макет сводной таблицы. Макрос. | Serge 007 | Microsoft Office Excel | 1 | 05.01.2011 14:30 |
Макрос создания таблицы в MS Word 2007 | kotkuban | Microsoft Office Word | 8 | 20.07.2010 20:37 |
Макрос для сводной таблицы | kipish_lp | Microsoft Office Excel | 2 | 21.04.2010 10:58 |
Макрос создания таблицы в ворде по шаблону. | opengeimer | Microsoft Office Word | 14 | 02.02.2009 11:41 |