2017-04-08 6 views
4

Ich versuche, die Werte von einer Array-Formel in VBA als Array zu erhalten. Einfaches Beispiel: Ich habe eine Zelle (sagen wir D1), die eine Array-Formel enthält, wie = A1: A10 * B1: B10 Wenn ich dies in der Tabelle markieren und F9 drücke, bekomme ich ein Array von 10 Zahlen, sagen wir, = {5; 12; 15; 24; 25; 24; 42; 40; 54; 70}Excel vba und arrayformula

Ich möchte in der Lage sein, diese Werte in einem VBA-Array zu speichern: a (0) = 5 , a (1) = 12, a (3) = 15 usw.; Du hast die Idee.

Ich habe versucht, nach einer Antwort zu suchen, kann aber selbst auf MSFT nichts Relevantes finden. Es gibt viele Antworten darüber, wie man von VBA auf den Arbeitsblatt-Bereich (das weiß ich) anders geht, aber nicht auf diese Weise. Ich habe versucht, es über ein ParamArray zu tun (die Anzahl der Elemente wird nicht festgelegt), indem ich es direkt einem undimensionierten Array und über EVALUATE (Bereich) zuweise, aber ich kann nichts davon zum Laufen bringen. Ich fühle, dass ich etwas Offensichtliches vermissen muss.

Antwort

3

Nicht sicher, was Sie bereits versucht haben. Aber Evaluate sollte funktionieren.

Wenn ich habe folgendes:

enter image description here

Der Code:

Sub getArrayFormulaResult() 

sFormula = Range("D1").FormulaArray 

aResult = Evaluate(sFormula) 

MsgBox Join(Application.Transpose(aResult), ",") 

End Sub 

bewirkt:

enter image description here

2

dieses
versuchen

Hinweis: Sie sollten Worksheet.Evaluate verwenden, um sicherzustellen, dass dies funktioniert, wenn Mysheet nicht das aktive Blatt ist. Das Ergebnis ist immer ein 2_D-Array (mit einer Spalte für Ihre Beispiel-Array-Formel)