Зависимый выпадающий + фиксированные формулы и расчеты - PullRequest
0 голосов
/ 15 марта 2020

У меня есть один лист с некоторыми ручными вычислениями. В первой верхней таблице (названной XYZ) вы получили обзор, в котором исправлены некоторые характеристики системы, где строка 6 - это тип системы, что на самом деле важно для следующего шага.

Во второй таблице, начиная с B16 (раскрывающееся поле), находятся значения, которые объединяют 1-ю таблицу (XYZ) и 3-ю таблицу (AB C) с использованием формул, определенных вручную, как вы можете видеть в строках 21 и 22:

ROW 21 (3,14*($C$8^2)/4*SUM(C18:C20)/1000)  Volume (L)

и

ROW 22 $C$11-C21  Remaining Volume (L)

Дело в том, что это только для одного типа системы (CC025), и вся таблица должна быть заполнена для всех систем ( из верхней таблицы XYZ) один раз при выборе в раскрывающихся списках в строке B16. Я использовал вложенную IF-функцию:

=IF($B$16="CC025";(3,14*($C$8^2)/4*SUM(C18:C20)/1000);IF($B$16="CC070";(3,14*($D$8^2)/4*SUM(C18:C20)/1000);IF($B$16="CC100";(3,14*($E$8^2)/4*SUM(C18:C20)/1000);IF($B$16="CC200";(3,14*($F$8^2)/4*SUM(C18:C20)/1000);IF($B$16="CSM015";(3,14*($G$8^2)/4*SUM(C18:C20)/1000);IF($B$16="CSM025";(3,14*($H$8^2)/4*SUM(C18:C20)/1000);IF($B$16="CSM065";(3,14*($I$8^2)/4*SUM(C18:C20)/1000);IF($B$16="CSM125";(3,14*($J$8^2)/4*SUM(C18:C20)/1000);IF($B$16="CSM195";(3,14*($K$8^2)/4*SUM(C18:C20)/1000))))))))))

ИЛИ просто более новую версию = IF S

=IFS(B16="CC025";(3,14*($C$8^2)/4*SUM(C18:C20)/1000);B16="CC070";(3,14*($C$8^2)/4*SUM(C18:C20)/1000);B16="CC100";(3,14*($C$8^2)/4*SUM(C18:C20)/1000);B16="CC200";(3,14*($C$8^2)/4*SUM(C18:C20)/1000);B16="CSM015";(3,14*($C$8^2)/4*SUM(C18:C20)/1000);B16="CSM025";(3,14*($C$8^2)/4*SUM(C18:C20)/1000);B16="CSM065";(3,14*($C$8^2)/4*SUM(C18:C20)/1000);B16="CSM125";(3,14*($C$8^2)/4*SUM(C18:C20)/1000);B16="CSM195";(3,14*($C$8^2)/4*SUM(C18:C20)/1000))

Но в целом все хорошо, работает, но работает Есть ли другой способ сделать этот расчет короче? Это первое, что мне приходит в голову, но я должен показать это некоторым коллегам, которые не так хороши в Excel, и если их показать так, то это будет "WTF", это выглядит сложно - даже это не так =) Любые идеи, как я Можно написать и получить те же результаты по другому, может быть, более коротким путем?

Thx enter image description here

1 Ответ

1 голос
/ 15 марта 2020

Эта формула, вероятно, то, что вам нужно:

  • вам не нужно повторять const в формуле, например 3.14 и 4*SUM(C18:C20)/1000
  • , так как результат это число, поэтому я буду использовать sumproduct вместо if, просто умножим массивы вместе

.

 =3.14*SUMPRODUCT((B16={"CC025","CC070","CC100","CC200","CSM015","CSM025","CSM065","CSM125","CSM195"})*$C$8:K8^2)/4*SUM(C18:C20)/1000

enter image description here

...