Страницы: 1
RSS
как сослаться на массив в формуле?
 
Добрый день, подскажите пожалуйста.

у меня есть одна формула которая производит вычисления в виртуальных массивах:
{=МАКС(МУМНОЖ((СТРОКА(ИНДЕКС(A:A;МИН(Техника!$L$7:$M$1554)):ИНДЕКС(A:A;МАКС(Техника!$L$7:$M$1554)))>=ТРАНСП(Техника!$L$7:$L$1554))*(СТРОКА(ИНДЕКС(A:A;МИН(Техника!$L$7:$M$1554)):ИНДЕКС(A:A;МАКС(Техника!$L$7:$M$1554)))<=ТРАНСП(Техника!$M$7:$M$1554));(--(Техника!$AB$7:$AB$1554)*(Техника!$P$7:$P$1554=Проверка!C6))))+МАКС(МУМНОЖ((СТРОКА(ИНДЕКС(A:A;МИН(Техника!$L$7:$M$1554)):ИНДЕКС(A:A;МАКС(Техника!$L$7:$M$1554)))>=ТРАНСП(Техника!$L$7:$L$1554))*(СТРОКА(ИНДЕКС(A:A;МИН(Техника!$L$7:$M$1554)):ИНДЕКС(A:A;МАКС(Техника!$L$7:$M$1554)))<=ТРАНСП(Техника!$M$7:$M$1554));(--(Техника!$AB$7:$AB$1554)*(Техника!$R$7:$R$1554=Проверка!E6)*(Техника!$R$7:$R$1554<>0))))+МАКС(МУМНОЖ((СТРОКА(ИНДЕКС(A:A;МИН(Техника!$L$7:$M$1554)):ИНДЕКС(A:A;МАКС(Техника!$L$7:$M$1554)))>=ТРАНСП(Техника!$L$7:$L$1554))*(СТРОКА(ИНДЕКС(A:A;МИН(Техника!$L$7:$M$1554)):ИНДЕКС(A:A;МАКС(Техника!$L$7:$M$1554)))<=ТРАНСП(Техника!$M$7:$M$1554));(--(Техника!$AB$7:$AB$1554)*(Техника!$S$7:$S$1554=Проверка!E6)*(Техника!$S$7:$S$1554<>0))))}

формула работает,. но эксель тормозит и периодически пишет что не хватает ресурсов для расчета.
в расчете есть повторяющийся массив
СТРОКА(ИНДЕКС(A:A;МИН(Техника!$L$7:$M$1554)):ИНДЕКС(A:A;МАКС(Техника!$L$7:$M$1554)))>=ТРАНСП(Техника!$L$7:$L$1554))*(СТРОКА(ИНДЕКС(A:A;МИН(Техника!$L$7:$M$1554)):ИНДЕКС(A:A;МАКС(Техника!$L$7:$M$1554)))<=ТРАНСП(Техника!$M$7:$M$1554))

для ускорения пересчета я хотел бы вынести этот массив в отдельную ячейку/столбец/лист чтоб он вычислялся один раз и затем остальные ячейки ссылались на него.

подскажите как это сделать, пожалуйста. а то что у меня мысль по кругу ходит и пока безрезультатно
 
Цитата
для ускорения пересчета я хотел бы
Для ускорения пересчёта лучше выложить файл небольшой и рассказать, что нужно посчитать.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
хорошо попробую сделать файл с примером,
но хотелось бы услышать и простой теории как сделать ссылку на массив?
 
присвойте имя этому куску формулы
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Цитата
повторяющийся массив
компенсируется дополнительными столбцами.
Если что не так понял извиняюсь - слишком длинный текст.
 
Может посмотреть в сторону UDF?
Столько функций в одной формуле!
Да ещё массивной.
Немудрено, что тормоз и зависание
Изменено: Александр Моторин - 22.01.2014 05:02:39
 
Цитата
компенсируется дополнительными столбцами.
судя по формуле - там массив более 1500 столбцов и много строк (в количестве максимальное-минимальное значение L$7:$M$1554). Вряд ли это можно как-то ускорить, не меняя алгоритма вычислений.
 
ikki - именование формулы не спасет от многократного вычисления этого массива, к сожалению (((((


Михаил С. да, беда в том, что массив довольно велик, и формула в процессе вычисления строит дополнительные массивы на которые ссылается сама внутри себя. если я пытаюсь вывести расчет массива за пределы формулы то формула будет использовать только первое значение из рассчитанного массива и работать неправильно ((
 
Blood81, разбить части вычислений на разные файлы. Возможно следует перейти на аксес. Больше мыслей по данному случаю у меня нет.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
ввести эту формулу в массив ячеек( формула массива) и ссылаться на массив

ps ах да ? вопрос как раз как ссылаться на массив.. ну.. =а1:a5 - уже ссылка на массив
Изменено: Слэн - 22.01.2014 18:30:09
Живи и дай жить..
 
Слэн да все верно, но чертова формула формирует не просто массив - строку а целую матрицу из X х Y элементов, и при построении доп столбца со значениями в ячейках так же остаются столбы в Y цифр...
 
Цитата
попробую сделать файл с примером
Не пробовали?
 
Blood81, в принципе, если уж хотите, алгоритм такой (если у вас офис не ниже 2007):
-на отдельном листе в диапазон A1:BEP1000 вводите вашу формулу массива. (1000 я взял наобум, зависит от величины макс-мин диапазона);
-создаете динамический диапазон с количеством строк, равным макс-мин
-в формулах ссылаетесь на этот диапазон.

Объем файла вырастет до многих мБ, но тормозить должен меньше.
 
Уважаемый Михаил С. , я прошу прощения за то что давно не заглядывал в тему, да ваш совет несомненно поможет но не ускорит расчет, эту формулу я писал как раз взамен похожего массива, там получается что многократное повторение одного и того же расчета, что перерасчет огромной матрицы.

на сегодняшний день решил проблему след образом: вынес лист с расчетом формулы в новую книгу, и удалил несколько расчетов заведомо с заведомо нулевым результатом. в результате компьютер может "переварить" данные вычисления, хотя считает довольно долго.

спасибо Михаил, и всем кто откликнулся. тему думаю можно закрыть
 
Blood81, если б вы показали файл (маленький подобный пример(, то, возможно, можно было б найти другой, более "легкий" алгоритм вычислений.
А возможно, есть смысл в макросе...
Страницы: 1
Наверх