Альтернативы созданию мегаформулы - PullRequest
2 голосов
/ 16 июля 2011

Есть ли способ оценить ряд формул для таблицы значений, не объединяя их в одну мегаформулу?

Проще проиллюстрировать это на примере.Скажем, Table1 выглядит следующим образом:

        A        B       C            D                E          F
1    PRODUCT    COST   MARKUP    SECRET FORMULA      PRICE      PROFIT
2    burger     4.00    50%         =22*12345    =B2*(1+C2)*D2  =E2-B2
3    fries      3.00    50%         =22*12345    =B3*(1+C3)*D3  =E3-B3
4    soda       1.50    50%         =22*12345    =B4*(1+C4)*D4  =E4-B4

Теперь я хочу построить Table2, чтобы получать прибыль для диапазона ставок наценки для каждого продукта, например:

       A        B        C         D         E       F
1   MARKUP    10%       20%      30%       40%     50%
2   burger
3   fries
4   soda 

В Table2! B2Я хочу отобразить значение ячейки Table1! $ C2, если для значения ячейки Table1! $ C2 установлено значение заголовка столбца из Table2! B $ 1.Другими словами, я хочу получить прибыль от бургера, когда наценка составляет 10%.Затем, копируя строки и ячейки, я могу наблюдать влияние на прибыль для каждого элемента, когда я изменяю свою наценку от 10% до 50%.

Я знаю, что мог бы сделать это вручную, объединив формулы из таблицы 1, столбцы D и E в одну мегаформулу для таблицы 2. Например, ячейка Table2B1 будет иметь следующую формулу:

= Table1!B2*(1 + B$1)*22*12345

Но давайте скажем, что СЕКРЕТНАЯ ФОРМУЛА на самом деле представляет собой очень сложную серию вычислений по нескольким столбцам с десятками зависимостей.Мой фактический набор формул охватывает около 20 столбцов и генерирует 8-строчную формулу ... невозможно редактировать.

Таким образом, построив ряд зависимых формул в Таблице 1, было бы здорово использовать эти формулы для генерации Таблицы 2 без необходимости повторять их все в Таблице 2.

Ответы [ 2 ]

1 голос
/ 16 июля 2011

Итак, просто чтобы почувствовать, насколько огромна и неуправляема мегаформула, я разместил ее ниже:

= Table6 [[# This Row], [FBLR]] * AC $ 1- ((Table6[[#This Row], [Базовый оклад]] + IF (IF (Table6 [[# This Row], [освобожден]] = "Y", IF ((AC $ 1-'Break Even'! $ D $ 32)>«Безубыточность»! $ D $ 31, (AC $ 1 - «Безубыточность»! $ D $ 32) - «Безубыточность»! $ D $ 31,0), (AC $ 1 - «Безубыточность»! $ D $ 32))>0, IF (Таблица6 [[# This Row], [освобожден]] = "Y", IF ((AC $ 1-'Безубыточный'! $ D $ 32)> 'Безубыточность'! $ D $ 31, (AC $ 1-«Безубыточность»! $ D $ 32) - «Безубыточность»! $ D $ 31,0), (AC $ 1 - «Безубыточность»! $ D $ 32)) * IF (Таблица 6 [[# This Row], [освобождается]]] = "Y", Table6 [[# This Row], [Pay rate]], Table6 [[# This Row], [Pay rate]] * 1.5), 0)) + Fringe! $ D $ 27 * IF ((Table6 [[# This Row], [Базовый оклад]] + IF (IF (Table6 [[# This Row], [освобожден]] = "Y", IF ((AC $ 1-'Break Even'! $ D $ 32)> «Безубыточность»! $ D $ 31, (AC $ 1 - «Безубыточность»! $ D $ 32) - «Безубыточность»! $ D $ 31,0), (AC $ 1 - «Безубыточность»! $ D $ 32))> 0, IF (Таблица6 [[# This Row], [освобожден]] = "Y", IF ((AC $ 1 - 'Безубыточный'! $ D $ 32)> 'Безубыточность'! $ D $ 31, (AC $ 1- 'Безубыточность'! $ D $ 32) - 'Безубыточность'! $ D $ 31,0), (AC$ 1 - 'Черт побери'! $ D $ 32)) * ЕСЛИ (Таблица6 [[# This Row], [освобожден]] = "Y", Table6 [[# This Row], [Pay rate]], Table6 [[# #This Row], [Pay rate]] * 1.5), 0))> Fringe! $ E $ 27, Fringe! $ E $ 27, (Table6 [[# This Row], [Базовый оклад]] + IF (IF (Table6 [[#This Row], [освобождаются]] = "Y", IF ((AC $ 1 - «Безубыточный»! $ D $ 32)> «Безубыточность»! $ D $ 31, (AC $ 1 - «Безубыточный»! $D $ 32) - «Безубыточность»! $ D $ 31,0), (AC $ 1 - «Безубыточность»! $ D $ 32))> 0, IF (Table6 [[# This Row], [освобождается]] = "Y", ЕСЛИ ((AC $ 1 -" Безубыточный "! $ D $ 32)>" Безубыточность "! $ D $ 31, (AC $ 1 -" Безубыточный "! $ D $ 32) -" Безубыточность "! $ D $ 31,0), (AC $ 1 - 'Безубыточный'! $ D $ 32)) * ЕСЛИ (Таблица6 [[# This Row], [освобождается]] = "Y", Table6 [[# This Row], [Pay rate]], Table6 [[# This Row], [Pay rate]] * 1.5), 0))) + (Table6 [[# This Row], [Base Salary]] + IF (IF (Table6 [[# This Row],[исключено]] = "Y", IF ((AC $ 1 - 'Безубыточный'! $ D $ 32)> 'Безубыточность'! $ D $ 31, (AC $ 1 - 'Безубыточный'! $ D $ 32) - 'ПерерывЧетный '! $ D $ 31,0), (AC $ 1 -' Безубыточный '! $ D $ 32))> 0, IF (Таблица6 [[# This Row], [освобожден]] = "Y", IF ((AC$ 1 - «Безубыточный»! $ D $ 32)> «Безубыточность»! $ D $ 31, (AC $ 1 - «Безубыточный»! $ D $ 32) - «Безубыточность»! $ D $ 31,0), (AC $ 1-'Bдаже '! $ D $ 32)) * ЕСЛИ (Таблица6 [[# This Row], [освобожден]] = "Y", Table6 [[# This Row], [Pay rate]], Table6 [[# This Row], [Pay rate]] * 1.5), 0)) * Бахрома! $ D $ 28 + Бахрома! $ D $ 29 * Бахрома! $ E $ 29 + Бахрома! $ D $ 30 * Бахрома! $ E $ 30 + ЕСЛИ (Таблица1 [[# #This Row], [TC?]] = "Y", Fringe! $ F $ 34 * 12, IF (Table1 [[# This Row], [TC?]] = "N", Fringe! $ E $ 34 * 12 *Бахрома! $ D $ 34, (Бахрома! $ F $ 34 * 12 + Бахрома! $ E $ 34 * 12 * Бахрома! $ D $ 34) / 2)) + (Table6 [[# This Row], [Базовый оклад]] + IF(IF (Table6 [[# This Row], [освобожден]] = "Y", IF ((AC $ 1 - 'Безубыточный'! $ D $ 32)> 'Безубыточность'! $ D $ 31, (AC $ 1- 'Безубыточность '! $ D $ 32) - "Безубыточность"! $ D $ 31,0), (AC $ 1 - "Безубыточность"! $ D $ 32))> 0, ЕСЛИ (Таблица6 [[# This Row], [освобождено]] = "Y", IF ((AC $ 1 - «Безубыточный»! $ D $ 32)> «Безубыточность»! $ D $ 31, (AC $ 1 - «Безубыточный»! $ D $ 32) - «Безубыточность»! $ D $ 31,0), (AC $ 1-'Безубыточный'! $ D $ 32)) * IF (Table6 [[# This Row], [освобожден]] = "Y", Table6 [[# This Row],[Ставка оплаты]], Таблица6 [[# This Row], [Ставка Pay]] * 1.5), 0)) * Fringe! $ D $ 32 + (Table6 [[# This Row], [Базовая зарплата]] + IF (IF (Table6 [[# This Row], [освобожден]] = "Y", IF ((AC $ 1-'Break Even'! $ D $ 32)> 'Безубыточность'! $ D $ 31, (AC $ 1-'BreakЕваn '! $ D $ 32) - «Безубыточность»! $ D $ 31,0), (AC $ 1 - «Безубыточность»! $ D $ 32))> 0, IF (Таблица 6 [[# This Row], [освобождается]]] = "Y", IF ((AC $ 1 - «Безубыточный»! $ D $ 32)> «Безубыточность»! $ D $ 31, (AC $ 1 - «Безубыточный»! $ D $ 32) - «Безубыточность»!$ D $ 31,0), (AC $ 1-'Безубыточный'! $ D $ 32)) * IF (Table6 [[# This Row], [освобожден]] = "Y", Table6 [[# This Row], [Pay rate]], Table6 [[# This Row], [Pay rate]] * 1.5), 0)) * Бахрома! $ D $ 33 + Бахрома! $ E $ 35 * 12 * Бахрома! $ D $ 35 + Таблица1 [[# #Эта строка], [Базовый оклад]] * Бахрома! $ D $ 36 + Бахрома! $ E $ 37 * Бахрома! $ D $ 37)

0 голосов
/ 16 июля 2011

Возьмите нижнюю границу панели формул и перетащите ее вниз, вы получите столько строк, сколько хотите для редактирования

enter image description here

...