从名称引用的单元格调用公式
我创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中描述的方式来完成。 您曾经能够使用EVALUATE函数来粗略地描述您所描述的内容,除非您需要使用公式作为string。 EVALUATE不再可以被称为单元格,但可以在定义命名范围时调用它。
程序:
-
创build一个单元格包含您的公式作为一个string(所以不要用等号开始您的公式,只是
SUMIFS(INDIRECT(...
-
在其“引用”框中创build一个名称(比如
func
),其中包含=EVALUATE($A$1)
(使用绝对引用并select放置公式的单元格) -
在任何需要评估公式的单元格中,键入
=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