首页 > 解决方案 > 相关下拉+固定公式和计算

问题描述

我这里有一张带有一些手动输入计算的表格。在第一个上表(命名为 XYZ)上,您得到了一个固定的概述,其中第 6 行是系统类型的系统的一些规格,这对于下一步实际上很重要。

在第二个表中,从 B16(下拉字段)开始是使用手动定义的公式组合第一个表 (XYZ) 和第三个表 (ABC) 的值,如第 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),当在 B16 行的下拉列表中选择时,应为所有系统(来自 XYZ 上表)填充整个表。我使用的是嵌套的 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”,它看起来很复杂 - 即使它不是 =) 任何想法我如何可以用另一种可能更短的方式编写并获得相同的结果吗?

谢谢 在此处输入图像描述

标签: excelexcel-formulaexcel-2016

解决方案


这个公式可能是你需要的:

  • 您不需要在公式中重复 const,例如3.14and4*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

在此处输入图像描述


推荐阅读