Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1484to1488
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Evaluate - ArrayFormel

Evaluate - ArrayFormel
06.04.2016 20:15:18
Coco99
Hallo,
In meiner Tabelle möchte ich keine Array-Formel per VBA einfügen, um zum gewünschten Ergebnis zu gelangen. Folgende Formel steht bereits in den Zellen:
=MAX(WENN(($F$5:$F$300=A2)*($K$5:$K$300=C1);($R$5:$R$300;" - ")
Abschließend fehlt mir nur noch der Befehl für die geschweiften Klammern:STRG+SHIFT+RETURN
damit mir ein Wert angegeben wird und nicht #WERT in den Zellen steht.
Diesen würde ich gerne per VBA Code einfügen. Ich habe probiert den Befehl über die Evaluate Funktion auszuführen:
Set FormulaInCell = ActiveSheet.Evaluate("D5")
Sheets("Tabelle39").Cells(6, 4).Formula = FormulaInCell
Leider wird so nicht die Formel mit Geschweiften Klammern in der Zelle ausgegeben, sondern nur #Wert!.
Ist es möglich über Evaluate und Cells( zeile, spalte).Formula den Befehl auszuführen, sodass die Formel ausgewertet wird. Oder hat jemand eventuell einen anderen Vorschlag?
Vielen Dank!

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Evaluate - ArrayFormel
06.04.2016 22:31:36
snb
Max(" - ") ?
y= [MAX(($F$5:$F$300=A2)*($K$5:$K$300=C1)*($R$5:$R$300))]

AW: Evaluate - ArrayFormel
07.04.2016 00:35:25
Coco99
Ich würde aber gerne die Max Wenn Formel nutzen, und wenn möglich über Cells(zeile, spalte).formula auf die Formel die bereits in der Zelle steht zugreifen.. Kann mir dabei jemand weiterhelfen?

In D5 steht also eine nicht als MatrixFml ...
07.04.2016 01:31:38
Luc:-?
…gekennzeichnete Fml, Coco,
die du durch den Wert ersetzen willst, der bei ihrer Ausführung als MatrixFml herauskäme. Da erhebt sich natürlich die Frage, warum du sie nicht gleich als MatrixFml einträgst, dann würde ein einfaches …
Sheets("Tabelle39").Cells(6, 4) = Sheets("Tabelle39").Cells(6, 4) reichen.
Falls du das partout nicht machen willst, solltest du aber auch den (US-Original-)FmlText, nicht das Fml-Ergebnis oder gar nur eine ZellAdresse evaluieren wollen. Dabei kommt allerhöchstens raus, was ohnehin schon in der Zelle steht. Das macht man also so:
Sheets("Tabelle39").Cells(6, 4) = ActiveSheet.Evaluate(ActiveSheet.Range("D5").Formula)
Falls du aber nur die Fml zur MatrixFml machen willst, musst du so vorgehen:
Sheets("Tabelle39").Cells(6, 4).FormulaArray = ActiveSheet.Range("D5").FormulaR1C1
Wobei ich natürlich nicht weiß, warum D5 und ActiveSheet verwendet wird, da dein Text eigentlich etwas Anderes aussagt.
Feedback nicht unerwünscht! Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW: In D5 steht also eine nicht als MatrixFml ...
07.04.2016 14:33:49
Coco99
Vielen Dank das ist genau die Lösung, die ich gesucht hatte! Dann hatte ich mich wohl falsch ausgedrückt.
Ich probiere es morgen aus und gebe dir dann eine Rückmeldung, ob es geklappt hat!
Wäre dies Variante auch möglich:
Sheets("Tabelle39").Cells(6, 4) = ActiveSheet.Evaluate(ActiveCell.Formula)
LG Coco

Im Prinzip ja! owT
07.04.2016 14:58:08
Luc:-?
:-?

AW: Evaluate - ArrayFormel
08.04.2016 11:43:37
Coco99
Leider hat es nicht funktioniert: Laufzeitfehler 1004
Die Formula Array Eigenschaft des Range Objektes kann nicht festgelegt werden.
Was kann ich tun, um diesen Fehler zu beheben?
Danke!

Dann BspDatei mit dem, was du wirklich ...
08.04.2016 11:51:13
Luc:-?
…machen willst, Coco,
und deinem Versuch (kein Bild) hochladen!
Luc :-?

Anzeige
AW: Evaluate - ArrayFormel
08.04.2016 12:04:47
Coco99
In D6 steht Folgende Formel:
=MAX(WENN(($F$5:$F$300=A2)*($K$5:$K$300=C1);($R$5:$R$300;" - ")
Es wird mir der Fehler #Wert! angezeigt, da die geschweiften Klammern fehlen
Diese würde ich gerne per VBA Code automatisch hinzufügen:
If Sheets("Tabelle39").Range("D6").Formula = "#WERT!" Then
Sheets("Tabelle39").Cells(6, 4).FormulaArray = ActiveSheet.Range("D6").FormulaR1C1
End If

Wenn ich diesen Code in meinem Sub starte, wird mir der Laufzeitfehler 1004 angezeigt.

Dann so, Coco:
08.04.2016 14:16:19
Luc:-?

With Sheets("Tabelle39").Cells(6, 4)
If .Value = CVErr(xlErrValue) Then _
.FormulaArray = .FormulaR1C1
End With
Luc :-?

Anzeige
Einfache Fmln, die eigentlich MatrixFmln ...
08.04.2016 15:21:49
Luc:-?
…sein müssten, neigen aber eher dazu, ein falsches Ergebnis anstelle von #WERT! auszuweisen, wenn sie in einer der Zeilen (bzw Spalten) ihres Bezugsbereichs notiert wdn. In diesem Fall wäre es angebracht, auch das noch abzudecken. Deshalb habe ich mal ein KomplettPgm für einen ganzen ZellBereich mit derartigen Fmln entwickelt:
Sub TestMxFml()
Const naRelBlatt$ = "Tabelle39", adRelBereich$ = "D2:D20" '    Dim xZ As Range
For Each xZ In Sheets(naRelBlatt).Range(adRelBereich)
If xZ.HasFormula Then
If IsError(xZ) Then
If xZ = CVErr(xlErrValue) Then xZ.FormulaArray = xZ.FormulaR1C1
ElseIf xZ  Sheets(naRelBlatt).Evaluate(xZ.Formula) Then
xZ.FormulaArray = xZ.FormulaR1C1
End If
End If
Next xZ
End Sub
Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige