Здравствуйте! Попытаюсь максимально подробно объяснить чего хочу, т.к. нет возможности вставить пример.
Есть динамическая таблица на листе, в которой закрашиваются ячейки в зависимости от выбранного имени таблицы (закраска ячеек происходит при выборе имени таблицы). Имена таблиц вместе со значениями, указывающими какую ячейку выбранной таблицы в какой цвет залить хранятся в базе на другом листе. Есть ячейки, в которых выводится процент ячеек, залитых определенным цветом. Вначале я создал массив на отдельном листе , в нем получилось много ячеек с длинными формулами, и общий результат вычислений в этом массиве выводился в ячейки на листе вместе с таблицей. Вот пример формулы одной из ячеек массива с множеством условий:
Для увеличения скорости обработки данных решил перенести все вычисления в vba, а только в ячейки выводить общий результат.
Создал функцию в vba, в которую попытался запихнуть такую длинную формулу:
Не получилось, думаю из-за того, что в скобках стоит ограничение на 255 символов.
Подскажите метод чтобы можно было впихнуть всю формулу не разбивая ее на множество функций. Заранее благодарен.
Есть динамическая таблица на листе, в которой закрашиваются ячейки в зависимости от выбранного имени таблицы (закраска ячеек происходит при выборе имени таблицы). Имена таблиц вместе со значениями, указывающими какую ячейку выбранной таблицы в какой цвет залить хранятся в базе на другом листе. Есть ячейки, в которых выводится процент ячеек, залитых определенным цветом. Вначале я создал массив на отдельном листе , в нем получилось много ячеек с длинными формулами, и общий результат вычислений в этом массиве выводился в ячейки на листе вместе с таблицей. Вот пример формулы одной из ячеек массива с множеством условий:
Скрытый текст |
---|
=ЕСЛИ(NLHE.FR!$C$1=1;ЕСЛИ(NLHE.FR!$B$1=1;NLHE.FR!$B$8;ЕСЛИ(NLHE.FR!$B$1=2;NLHE.FR!$B$9;ЕСЛИ(NLHE.FR!$B$1=3;NLHE.FR!$B$10;ЕСЛИ(NLHE.FR!$B$1=4;NLHE.FR!$B$11;ЕСЛИ(NLHE.FR!$B$1=5;NLHE.FR!$B$12;ЕСЛИ(NLHE.FR!$B$1=6;NLHE.FR!$B$13;ЕСЛИ(NLHE.FR!$B$1=7;NLHE.FR!$B$14;ЕСЛИ(NLHE.FR!$B$1=8;NLHE.FR!$B$15))))))))&"."&NLHE.FR!$C$8&"."&NLHE.FR!$F$2&"."&ЕСЛИ(NLHE.FR!$I$1=1;NLHE.FR!$I$2;ЕСЛИ(NLHE.FR!$I$1=2;NLHE.FR!$I$3;ЕСЛИ(NLHE.FR!$I$1=3;NLHE.FR!$I$4;0)))&"."&ЕСЛИ(NLHE.FR!$L$1=1;NLHE.FR!$L$2;ЕСЛИ(NLHE.FR!$L$1=2;NLHE.FR!$L$3;ЕСЛИ(NLHE.FR!$L$1=3;NLHE.FR!$L$4;0)))&"."&ЕСЛИ(NLHE.FR!$A$4=1;NLHE.FR!$N$4;ЕСЛИ(NLHE.FR!$A$4=2;NLHE.FR!$O$4;ЕСЛИ(NLHE.FR!$A$4=3;NLHE.FR!$P$4;ЕСЛИ(NLHE.FR!$A$4=4;NLHE.FR!$Q$4;ЕСЛИ(NLHE.FR!$A$4=5;NLHE.FR!$R$4)))));ЕСЛИ(NLHE.FR!$C$1>1;ЕСЛИ(NLHE.FR!$B$1=2;NLHE.FR!$B$9;ЕСЛИ(NLHE.FR!$B$1=3;NLHE.FR!$B$10;ЕСЛИ(NLHE.FR!$B$1=4;NLHE.FR!$B$11;ЕСЛИ(NLHE.FR!$B$1=5;NLHE.FR!$B$12;ЕСЛИ(NLHE.FR!$B$1=6;NLHE.FR!$B$13;ЕСЛИ(NLHE.FR!$B$1=7;NLHE.FR!$B$14;ЕСЛИ(NLHE.FR!$B$1=8;NLHE.FR!$B$15;ЕСЛИ(NLHE.FR!$B$1=9;NLHE.FR!$B$16))))))))&"."&ЕСЛИ(NLHE.FR!$C$1=2;NLHE.FR!$C$9;ЕСЛИ(NLHE.FR!$C$1=3;NLHE.FR!$C$10;ЕСЛИ(NLHE.FR!$C$1=4;NLHE.FR!$C$11;ЕСЛИ(NLHE.FR!$C$1=5;NLHE.FR!$C$12;ЕСЛИ(NLHE.FR!$C$1=6;NLHE.FR!$C$13;ЕСЛИ(NLHE.FR!$C$1=7;NLHE.FR!$C$14;ЕСЛИ(NLHE.FR!$C$1=8;NLHE.FR!$C$15;ЕСЛИ(NLHE.FR!$C$1=9;NLHE.FR!$C$16))))))))&"."&NLHE.FR!$F$2&"."&ЕСЛИ(NLHE.FR!$I$1=1;NLHE.FR!$I$2;ЕСЛИ(NLHE.FR!$I$1=2;NLHE.FR!$I$3;ЕСЛИ(NLHE.FR!$I$1=3;NLHE.FR!$I$4)))&"."&ЕСЛИ(NLHE.FR!$L$1=1;NLHE.FR!$L$2;ЕСЛИ(NLHE.FR!$L$1=2;NLHE.FR!$L$3;ЕСЛИ(NLHE.FR!$L$1=3;NLHE.FR!$L$4)))&"."&ЕСЛИ(NLHE.FR!$A$4=1;NLHE.FR!$N$4;ЕСЛИ(NLHE.FR!$A$4=2;NLHE.FR!$O$4;ЕСЛИ(NLHE.FR!$A$4=3;NLHE.FR!$P$4;ЕСЛИ(NLHE.FR!$A$4=4;NLHE.FR!$Q$4;ЕСЛИ(NLHE.FR!$A$4=5;NLHE.FR!$R$4)))));ЕСЛИ(И(NLHE.FR!$B$1<>9;NLHE.FR!$D$1>=1);ЕСЛИ(NLHE.FR!$B$1=1;NLHE.FR!$B$8;ЕСЛИ(NLHE.FR!$B$1=2;NLHE.FR!$B$9;ЕСЛИ(NLHE.FR!$B$1=3;NLHE.FR!$B$10;ЕСЛИ(NLHE.FR!$B$1=4;NLHE.FR!$B$11;ЕСЛИ(NLHE.FR!$B$1=5;NLHE.FR!$B$12;ЕСЛИ(NLHE.FR!$B$1=6;NLHE.FR!$B$13;ЕСЛИ(NLHE.FR!$B$1=7;NLHE.FR!$B$14;ЕСЛИ(NLHE.FR!$B$1=8;NLHE.FR!$B$15))))))))&"."&ЕСЛИ(NLHE.FR!$D$1=1;NLHE.FR!$D$8;ЕСЛИ(NLHE.FR!$D$1=2;NLHE.FR!$D$9))&"."&NLHE.FR!$F$2&"."&ЕСЛИ(NLHE.FR!$I$1=1;NLHE.FR!$I$2;ЕСЛИ(NLHE.FR!$I$1=2;NLHE.FR!$I$3;ЕСЛИ(NLHE.FR!$I$1=3;NLHE.FR!$I$4)))&"."&ЕСЛИ(NLHE.FR!$L$1=1;NLHE.FR!$L$2;ЕСЛИ(NLHE.FR!$L$1=2;NLHE.FR!$L$3;ЕСЛИ(NLHE.FR!$L$1=3;NLHE.FR!$L$4)))&"."&ЕСЛИ(NLHE.FR!$A$4=1;NLHE.FR!$N$4;ЕСЛИ(NLHE.FR!$A$4=2;NLHE.FR!$O$4;ЕСЛИ(NLHE.FR!$A$4=3;NLHE.FR!$P$4;ЕСЛИ(NLHE.FR!$A$4=4;NLHE.FR!$Q$4;ЕСЛИ(NLHE.FR!$A$4=5;NLHE.FR!$R$4)))));""))) |
Для увеличения скорости обработки данных решил перенести все вычисления в vba, а только в ячейки выводить общий результат.
Создал функцию в vba, в которую попытался запихнуть такую длинную формулу:
Код |
---|
Option explicit Function Test() Test=Evaluate("="длинная формула в англ. варианте"") End Function |
Не получилось, думаю из-за того, что в скобках стоит ограничение на 255 символов.
Подскажите метод чтобы можно было впихнуть всю формулу не разбивая ее на множество функций. Заранее благодарен.