2016-05-23 48 views
1

我想采用此数组公式,并使用间接引用单元格地址,它可以表示MAX,MIN,AVERAGE或SUM。使用间接引用单元格来创建公式

{=MAX(IF(($A$2:$A$10=$F$1)*($B$2:$B$10=$F$2),$C$2:$C$10,""))} 

如果E3包含MAX的单元格地址,然后我试图做到这一点:

{=INDIRECT((E3)(IF(($A$2:$A$10=$F$1)*($B$2:$B$10=$F$2),$C$2:$C$10,"")))} 

这个公式导致#REF!间接(E3)部分的错误。一旦我们能够得到它的工作,我们可以复制公式,如果列E表示MAX,MIN,SUM或AVERAGE,则会运行正确的间接公式。

enter image description here

感谢您的帮助。

+0

据我了解,这是不可能的。但正如我多次说过的,我不是这里最聪明的人,可能被证明是错误的。我希望如此,因为那时我学到了一些东西。我可以接近AGGREGATE()公式,但只会做MIN和MAX。 –

+1

@ScottCraner我认为average和sum是聚合的一部分,而不是它的数组部分,这当然是你需要的!我认为间接只适用于处理单元地址? –

+0

我能得到的最接近的是一个辅助单元格,并使用“NAMED”公式来评估它。如果您可以将公式作为单元格中的文本构建,则评估可以处理该文本并将其视为Excel公式。否则,我认为你会看VBA中的UDF –

回答

2

如果你是开放的UDF然后把这个附加到工作簿模块中:

Function formulaConcat(ref As Range, form As String) As Variant 
    formulaConcat = ActiveSheet.Evaluate(ref.Value & form) 
End Function 

那么你就需要输入公式,如:

=formulaConcat(E3,"(IF(($A$2:$A$10=$F$1)*($B$2:$B$10=$F$2),$C$2:$C$10))") 

enter image description here

+0

工作很好,谢谢斯科特 –

相关问题