Страницы: 1
RSS
Уменьшить размер файла (Индексы много весят)
 
Друзья, привет! У меня есть файлик в котором есть табличка с продуктами. Данные по продуктам в зависимости от выпадающего списка тянутся из исходника с помощью Индексов, Поискпоз, Сумм, Если. Я проверял, благодаря таким формулам, эта табличка весит больше 10 мб. Файл динамический, поэтому изменить формулы на значения нельзя, хотя так таблица весит 44 кб. Формулы, к примеру, такие:

=ЕСЛИОШИБКА(ИНДЕКС('D:\Sergey\White board\[White board 0513.xlsx]05'!$I$2:$GE$4659;ПОИСКПОЗ($C$21;'D:\Sergey\White board\[White board 0513.xlsx]05'!$J$2:$J$4659;0);ПОИСКПОЗ($B108;'D:\Sergey\White board\[White board 0513.xlsx]05'!$I$2:$GE$2;0));0)

{=ЕСЛИОШИБКА(СУММ(ЕСЛИ('D:\Sergey\White board\[White board 0513.xlsx]05'!$L$7:$L$4659=$B$30;ИНДЕКС('D:\Sergey\White board\[White board 0513.xlsx]05'!$N$7:$GE$4659;;ПОИСКПОЗ($B108;'D:\Sergey\White board\[White board 0513.xlsx]05'!$N$7:$GE$7;0));0));0)}

Может кто сталкивался с подобной проблемой, либо есть функции аналоги Индекса, Поискпоз, о которых я не знаю и которые мало места в книге занимают?  :)

Буду признателен за помощь.
 
Если нельзя использовать макросы - то попробуйте вместо строковых констант в формулах использовать ссылки на ячейки с этими строчками. Ну и вообще, перейти к именованным ячейкам и диапазонам...
 
AndreTM, спасибо! А можно пример к вышеприведенным формулам?
 
Лучше вы дайте ваши файлы (поскольку вы ведь используете внешние ссылки), чтобы прямо на их примере и показать. Можно личкой...
 
Цитата
...Ну и вообще, перейти к именованным ячейкам и диапазонам...
Попробовал заменить ф-лы (пример) с:
=ЕСЛИОШИБКА(ИНДЕКС('D:\Sergey\White board\[White board 0513.xlsx]05'!$I$2:$GE$4659;ПОИСКПОЗ($C$21;'D:\Sergey\White board\[White board 0513.xlsx]05'!$J$2:$J$4659;0);ПОИСКПОЗ($B108;'D:\Sergey\White board\[White board 0513.xlsx]05'!$I$2:$GE$2;0));0)
на:
=ЕСЛИОШИБКА(ИНДЕКС(инд_май_весь;ПОИСКПОЗ($C$21;поиск_май_долж;0);ПОИСКПОЗ($B108;поиск_май_прод;0));0)

То есть именовал диапазоны:
'D:\Sergey\White board\[White board 0513.xlsx]05'!$I$2:$GE$4659=инд_май_весь
'D:\Sergey\White board\[White board 0513.xlsx]05'!$J$2:$J$4659=поиск_май_долж
'D:\Sergey\White board\[White board 0513.xlsx]05'!$I$2:$GE$2=поиск_май_прод

Но результат по размеру тот же...
Могу выслать, но файлик большой, куда лучше?
Изменено: serj1987@ - 16.10.2013 01:20:23
 
Друзья, хочу вернуться к этой теме! Проблема до сих пор актуальна. Мой отчет весит почти 17 мб. Как я уже писал там есть куча Индексов, которые занимают место. Полагаю, что без макросов не обойтись. Общался с приятелем на днях. Я в ВБА профан пока что. Он мне поведал истину, что формулы можно заменить в ВБА, чтобы ячейки заполнялись значениям без написания формул, а в коде уже непосредственно прописывались формулы. Так файл станет гораздо легче. Для меня это пока невыполнимо, но хочу реализовать )

Наставьте меня на путь истинный относительно такой задачки, что лучше почитать? Заодно может посоветуете классную вещь по VBA? Уокенбах?..

Спасибо заранее  :)
 
Я вам даже больше скажу, можно вообще обойтись без формул в коде, а использовать другие методы.
В вашем случае открываете файл исходник, забираете из него данные в массив, и уже в массиве ищите нужные вам данные по условиям.
 
Роман, интересная идея! А с примером поможете? )
 
Формула

=ЕСЛИОШИБКА(ИНДЕКС('D:\Sergey\White board\[White board 0513.xlsx]05'!$I$2:$GE$4659;ПОИСКПОЗ(87887;'D:\Sergey\White board\[White board 0513.xlsx]05'!$J$2:$J$4659;0);ПОИСКПОЗ(в41;'D:\Sergey\White board\[White board 0513.xlsx]05'!$I$2:$GE$2;0));0)

выдает результат 140. Может, кто подскажет, каким кодом заменить такую формулу? В отчете их десятки.
 
Вот набросал простой пример.
По-поводу чем заменить вашу формулу, без примера ваших файлов точный код вам не напишут, а так
1)цикл по столбца с поиском значения из B41
2)цикл по найденному выше столбцу значения 87887
3)подстановка найденного значения или в массив или сразу на лист
 
Роман, спасибо! Буду пробовать.

Друзья, вопрос! Не могу понять, какой код записывает макрорекордер, когда изменяешь данные в выпадающем списке. У меня стоит задача по изменению заполнения массива данных, когда меняешь значение в ячейке с выпадающим списком. Примерчик во вложении. С листа2 на лист1 нужно подтянуть данные в зависимости от значения в выпадающем списке.
Изменено: serj1987@ - 12.07.2013 16:53:04
 
Поможет событие листа Worksheet_Change
 
Доброго вечера, Друзья! Нужна помощь в следующем вопросе...

Не нужно сваливать все вопросы в одну тему [МОДЕРАТОР]
Страницы: 1
Наверх