如何从谷歌表格中的另一个单元格引用公式

Posted

技术标签:

【中文标题】如何从谷歌表格中的另一个单元格引用公式【英文标题】:how to reference a formula from another cell in google sheets 【发布时间】:2016-10-13 09:35:43 【问题描述】:

背景

我有一个包含一些高级公式的电子表格。例如,我正在汇总当月的预算,并且我有不同的员工,他们有不同的薪酬结构(即一些小时,一些小时,根据估计目标等的奖金) )..

我喜欢放置一个公式,然后将其复制并粘贴到单元格中。这就是我现在所拥有的

=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)))

每个员工的小时*小时工资的基本乘积(员工 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】:

简答

在 Google 表格中,无法“隐藏”丑陋的公式。

扩展答案

不要太担心公式的外观,担心可维护性和可读性。作为替代方案,可以考虑创建一个custom function。

提示 1:不要嵌套 IF,而是尝试使用查找函数,例如 VLOOKUP。提示 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 脚本无法调用电子表格内置函数,但您可以从 GitHub 存储库中复制 javascript 版本,例如

SocialCalc formula.js EtherCalc1

请参阅我的answer 到另一个问题,我在其中与一个有界 Google Apps 脚本项目共享一个电子表格,其中包含来自 SocialCalc 的 JavaScript 文件。

另见

Is there a way to evaluate a formula that is stored in a cell? How to evaluate a spreadsheet formula within a custom function?

【讨论】:

嘿@Ruben 我克隆了 EtherCalc 存储库.. 但我不知道如何将我需要的函数复制到谷歌表中.. 例如,如果我搜索 vlookup 在EtherCalc repo ..我没有找到一个地方将 vlookup 定义为我可以调用的函数..你能给我一些关于如何在谷歌表格中使用 EtherCalc 中的这些函数的说明/帮助吗?否则我唯一的选择是迁移到 excel :(

以上是关于如何从谷歌表格中的另一个单元格引用公式的主要内容,如果未能解决你的问题,请参考以下文章

如何从谷歌电子表格中动态变化的单元格中保存最小值和最大值?

如何在 Google 表格的 IMPORTRANGE 中使单元格引用动态化?

谷歌表格 - 根据公式内的另一个单元格值设置行号?

如何根据公式引用单元格

EXCEL如何引用其它文件名下表格中单元格数据?

在excel中横向拖动公式,如何实现引用的单元格地址行号递增?