从名称引用的单元格调用公式

我创build了一个相对复杂的公式来总结一个由开始和结束所定义的范围:

=SUMIFS(INDIRECT("Purchases!$B"&INDIRECT("B"&ROW())):INDIRECT("Purchases!$B"&INDIRECT("C"&ROW())), INDIRECT("Purchases!$I"&INDIRECT("B"&ROW())):INDIRECT("Purchases!$I"&INDIRECT("C"&ROW())), "income") 

我已经定义了这个公式,所以如果我简单地将它复制/粘贴到其他单元格中,它可以很好地工作。

现在如果我为这个复杂公式出现的第一个单元格定义一个名称,我怎样才能在其他单元格中通过名称引用这个公式,而不需要复制/粘贴公式?

我想要一些INDIRECT来执行expression式引用的公式。 例如“= CALL(sumifrange)”,其中sumifrange是具有复杂公式的单元格的名称。

更新 :这是一个启用macros的电子表格 ,试图chthonicdaemon的解决scheme 。 它不工作 – 有一个#REF! 错误。

作为字符串评估Excel公式

你不能完全按照你在Excel中描述的方式来完成。 您曾经能够使用EVALUATE函数来粗略地描述您所描述的内容,除非您需要使用公式作为string。 EVALUATE不再可以被称为单元格,但可以在定义命名范围时调用它。

程序:

  1. 创build一个单元格包含您的公式作为一个string(所以不要用等号开始您的公式,只是SUMIFS(INDIRECT(...

  2. 在其“引用”框中创build一个名称(比如func ),其中包含=EVALUATE($A$1) (使用绝对引用并select放置公式的单元格)

  3. 在任何需要评估公式的单元格中,键入=func

通过交换INDEX函数的INDIRECT函数 ,并使用推断位置的原理(请参阅我的解释),可以使您的公式变为非易失性的 ,以获得从列B和C拉取的边界行号。

 =SUMIFS(INDEX(Purchases!$B:$B,$B:$B ):INDEX(Purchases!$B:$B,$C:$C ), INDEX(Purchases!$I:$I,$B:$B ):INDEX(Purchases!$I:$I,$C:$C), "income") 

使用推断位置 ,您应该能够设置一对INDEX函数,根据引用它们的单元格的位置,将返回所需的任何范围。

使用公式►定义的名称►名称pipe理器,定义一个命名范围(例如siIncome ),它使用以下内容来引用:

 =SUMIFS(INDEX(Purchases!$B:$B,$B:$B ):INDEX(Purchases!$B:$B,$C:$C ), INDEX(Purchases!$I:$I,$B:$B ):INDEX(Purchases!$I:$I,$C:$C), "income") 

现在任何你想要的公式的结果(相对于单元格的位置),你可以使用=siIncome

公式作为命名的范围

在OP的示例工作手册中,下面的公式将进入“SO 29997947”!H2,

 =SUMIFS(INDEX('SO 29997947'!$B:$B,$F:$F ):INDEX('SO 29997947'!$B:$B,$G:$G ), INDEX('SO 29997947'!$D:$D,$F:$F ):INDEX('SO 29997947'!$D:$D,$G:$G), "income") 

指的是: sumcateg将是相同的公式。

远程公式

这用于'SO 29997947'!I2

这里是工作修订的工作簿。 呼叫式逐个小区name.xlsx