2016-05-23 9 views
1

zu erstellen. Ich möchte diese Matrixformel verwenden und Indirect verwenden, um eine Zelladresse zu referenzieren, in der MAX, MIN, AVERAGE oder SUM stehen. Verwenden Sie indirekt, um eine Zelle zu referenzieren, um Formel

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

Wenn die Zelle Adresse E3 MAX enthalten dann das ich versuche zu tun:

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

Diese Formel bewirkt einen BEZUG! Fehler für den indirekten (E3) Teil. Sobald es funktioniert, können wir die Formel nach unten kopieren und wenn Spalte E MAX, MIN, SUM oder AVERAGE angibt, wird die korrekte indirekte Formel ausgeführt.

enter image description here

Vielen Dank für Ihre Hilfe.

+0

Soweit ich es verstehe, ist das nicht möglich. Aber wie ich schon oft gesagt habe, bin ich hier nicht die klügste Person und kann sich als falsch erweisen. Ich hoffe es, denn dann lerne ich etwas. Ich kann mit der AGGREGATE() Formel nah kommen, aber das wird nur die MIN und die MAX machen. –

+1

@ScottCraner Ich glaube, dass Durchschnitt und Summe Teil des Aggregats sind, nur nicht der Array-Teil davon, was natürlich das ist, was Sie brauchen! Ich dachte indirekt wäre nur gut für den Umgang mit Zelladressen? –

+0

Der nächste, den ich bekommen kann, ist mit einer Helferzelle und mit einer "NAMED" -Formel mit evaluieren. Wenn Sie die Formel als Text in einer Zelle erstellen können, kann evaluate diesen Text verarbeiten und als Excel-Formel behandeln. Ansonsten denke ich, dass Sie eine UDF in VBA –

Antwort

2

Wenn Sie zu einem UDF offen sind dann diese an die Arbeitsmappe gebunden in einem Modul setzen:

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

Dann müssen Sie die Formel wie einen:

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

enter image description here

+0

das funktioniert super, danke scott –