如何在Google表格中从另一个单元格引用公式

5

背景

我有一个包含一些高级公式的电子表格。例如,我正在为本月制定预算,有不同的员工拥有不同的薪资结构(即一些按小时计费,一些按照目标估算计费等)。

我希望使用单个公式并将其复制粘贴到其他单元格中。这就是我现在所拥有的。

=if(C54="employee 1",D54*'resource information'!$D$3,
   if(C54="employee 2",D54*'resource information'!$D$8,
     if(C54="employee 3",D54*'resource information'!$D$4)))

这里涉及到IT技术,需要实现一个基本的计算方法:员工工作时长*每小时薪水(员工1/2/3的薪水不同)。但是如果需要添加一个员工4,其支付方式比较复杂(例如,需要用3-4个不同变量从不同的表格提取),那么我不想将这个丑陋的公式添加到上面的计算公式中。相反,我想引用一个具有该公式的单元格。内容如下:

问题

如何实现引用复杂公式的单元格,使其能够参与工资计算?

=if(C54="employee 1",D54*'resource information'!$D$3,
   if(C54="employee 2",D54*'resource information'!$D$8,
     if(C54="employee 3",D54*'resource information'!$D$4))) 
 + employee 4 formula with parameters C54,D54 <-- this formula will be stored elsewhere

有什么想法吗?

1个回答

3

简短回答

在Google表格中无法“隐藏”复杂的公式。

详细回答

不要过分关注公式的外观,而应关注可维护性和易读性。作为替代方案,考虑创建自定义函数

提示1:可以尝试使用查找函数,如VLOOKUP,而不是嵌套IF。
提示2:正如您已经发现的那样,您可以将一个公式嵌套作为大多数函数的参数,就像您在IF中所做的那样。

备注:Google表格公式无法调用存储在其他地方的公式,它们只能调用这些公式的结果。

示例应用提示1和提示2

假设资源信息在A列中具有资源ID(员工1、员工2等)

=D54*IF(
  C54<>"employee 4",
  VLOOKUP(C54,'resource information'!$A$3:$D$8,4,0),
  your_formula_goes_here
 )

提示3:如果你不想在公式栏中显示员工4的计算结果,可以使用自定义函数。

备注:Google Apps Script无法调用电子表格内置函数,但是你可以从GitHub存储库中复制JavaScript版本,例如

请参阅我的答案,其中我分享了一个带有来自SocialCalc的JavaScript文件的绑定Google Apps Script项目的电子表格。

另请参阅


嘿@Ruben,我克隆了EtherCalc存储库..但我不知道如何将我需要的函数复制到Google表格中..例如,如果我在EtherCalc存储库中搜索vlookup,我找不到定义为可调用函数的单个位置..你能给我一些指导/帮助,告诉我如何在Google表格中使用这些来自EtherCalc的函数吗?否则,我的唯一选择就是迁移到Excel :( - abbood

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接