【问题标题】:Excel change referenced cell as a function of a certain valueExcel将引用的单元格更改为某个值的函数
【发布时间】:2018-05-07 08:18:35
【问题描述】:

在 Excel 工作表中,我想根据某个值更改引用的单元格,

B1=A1 & C1=A1-B1 if D1==1
B1=A1-C1 & C1=A1 if D1==0.

原则上,这可以通过以下方式重新定义单元格来完成,

B1=A1*D1+(A1-C1)*(1-D1) & C1=(A1-B1)*D1+A1*(1-D1),

但这会生成循环引用,因为 Excel 不知道 D1 是 1 还是 0。

是否可以为这种情况定义某种“切换”功能?

提前致谢,

【问题讨论】:

  • 如果 D1==0 那么通过定义你的 B1==0 也是如此,那么为什么 B1=A1-C1,其中 C1==A1,所以 B1=A1-A1?
  • 是的,没错,但这是一个虚拟示例,在我拥有的模型中,有一个更复杂的功能。我的问题更多是关于如何定义函数而不是如何计算最终值(这显然很容易使用代数)。

标签: excel switch-statement circular-dependency circular-reference


【解决方案1】:

Excel 函数“IF”允许您决定必须为给定单元格分配什么值(无论是否计算)。写作:

=IF(expression;value_if_true; value_if_false) 

到一个单元格,允许你表达你的分配逻辑。

来到您的“虚拟”示例,您的 B1 单元格内容应如下所示:

=IF(D1=1;A1;A1-C1)

您的 C1 单元格内容应如下所示:

=IF(D1=1;A1-B1;A1)

如果您将相同的分配样式应用于其他单元格,请记住根据需要锁定行或列(通过在行或列标识符前使用“$”):

=IF($D1=1;$A1-$B1;$A1) 'to lock the column
=IF(D$1=1;A$1-B$1;A$1) 'to lock the row

我希望这可能对你有所帮助。

【讨论】:

  • 非常感谢,我认为你的方法是最好的。如果我理解正确,If 语句在条件满足时停止,因此您的命题永远不会发生循环引用。
  • 事实上,@user2035908,IF 语句会分析您提供给它的表达式的结果,一旦完成,它实际上会用一种内容或另一种内容填充单元格(根据该结果)。
猜你喜欢
  • 2016-02-22
  • 2020-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-28
相关资源
最近更新 更多