【发布时间】:2017-10-22 15:03:44
【问题描述】:
早上好,
我有一个看起来像这样的 excel 公式:
=IF([@Date]>currentPeriod,#N/A,
IF(
SUM(
TProgress[@[D Earned]],
TProgress[@[D Adj Earned]],
TProgress[@[I Earned]],
TProgress[@[I Adj Earned]]
)
/
SUM(
TCost[[#Totals],[D Budget Hours]],
TCost[[#Totals],[I Budget Hours]]
)
*
TInterface[[#Totals],[Current Budget]]
>
TInterface[[#Totals],[Current Budget]],
TInterface[[#Totals],[Current Budget]],
SUM(
TProgress[@[D Earned]],
TProgress[@[D Adj Earned]],
TProgress[@[I Earned]],
TProgress[@[I Adj Earned]]
)
/
SUM(
TCost[[#Totals],[D Budget Hours]],
TCost[[#Totals],[I Budget Hours]]
)
*
TInterface[[#Totals],[Current Budget]]
)
)
这很荒谬。这是一个项目管理表,用于计算赚取的成本。挣得的成本永远不能高于当前预算。有没有办法在同一个单元格中为这个计算声明一个变量而不是重复两次?我不想在其他单元格中隐藏公式,这只会让它变得混乱且难以追踪。
任何想法将不胜感激!
【问题讨论】:
-
如果您不想将主公式放在另一个单元格中然后引用它,那么您将被这个长公式或 vba 卡住。公式没有或不允许声明和使用变量。由于 Excel 假设如果您想这样做,您将使用另一个单元格作为该变量。
-
我希望有更好的选择。我宁愿将赚取成本的计算放在一个地方,而不是四处寻找调试;或者让其他人理解计算。现在开始使用中间单元只是意大利面。感谢您的参与。
-
顺便说一句,您可以将第二个 IF 中的逻辑缩短为
IF(SUM( TProgress[@[D Earned]], TProgress[@[D Adj Earned]], TProgress[@[I Earned]], TProgress[@[I Adj Earned]] ) < SUM( TCost[[#Totals],[D Budget Hours]], TCost[[#Totals],[I Budget Hours]] ),... -
哦,是的,谢谢!这样可以节省 4 行 :)
标签: excel-formula