Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1124to1128
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

Worksheetfunction für Array-Funktionen

Worksheetfunction für Array-Funktionen
Martin
Hallo,
ich möchte die RGP-Funktion unter VBA für eine mehrdimensionale Interpolation nutzen:
y = b + m1*z1 + m2*z2
...
Dim LaneRecY(n,1) as Double
Dim LaneRecZ(n,2) as Double
Dim BestFit(5,3) as Double
...
BestFit() = WorksheetFunction.LinEst(LaneRecY, LaneRecZ, True, True)
...
Dann mosert Excel: Keine Zuweisung an Datenfeld möglich!
Wie kann ich Matrix-Formeln wie RGP als WorksheetFunction nutzen?
Wenn das grundsätzlich nicht funktionieren sollte, warum werden dann diese Function überhaupt als Bestandteil des Objects Worksheetfunction angeboten?
Vielleicht hat ja jemand eine Idee,
vorab vielen Dank,
Martin

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Das geht schon, aber nicht so,...
21.12.2009 17:58:52
Luc:-?
...Martin...!
Du musst das Ergebnis einem Variant, keinem festgelegten Feld zuweisen! Letzteres geht nämlich nur elementweise. Der Variant enthält dann eben das Ergebnisfeld und kann fast wie üblich auch elementweise ausgewertet wdn — (index1)(index2)(...).
Gruß Luc :-?
AW: Das geht schon, aber nicht so,...
22.12.2009 09:29:02
Martin
Hallo Luc,
danke für Deinen Tipp, damit habe ich gestern abend auch noch rumexperimentiert. Leider ändert sich dadurch nur die Fehlermeldung.
...
Dim BestFit As Variant
Dim LaneRecY(n,1) as Double
Dim LaneRecZ(n,2) as Double
...
BestFit = WorksheetFunction.LinEst(LaneRecY, LaneRecZ, True, True)
...
Fehlermeldung:
Laufzeitfehler 1004:
Die LinEst-Eigenschaft des WorksheetFunction-Objekts kann nicht zugeordnet werden.
Mmult ergibt die gleiche Fehlermeldung. Mit z.B. Min(LaneRecZ) oder anderen Funktionen, die nur eine Zahl als Ergebnis zurückgeben, klappt es dagegen.
Hast Du vielleicht noch eine andere Idee?
Martin
Anzeige
AW: Das geht schon, aber nicht so,...
22.12.2009 15:38:30
Martin
Hallo zusammen,
mein Fehler lag in der Definition der Arrays. Linest ist über die nicht besetzten, nullten Spalten gestolpert.
...
Dim LaneRecY() As Variant
Dim LaneRecZ() As Variant
Dim BestFit As Variant
...
ReDim LaneRecY(1 To AnzSteps, 1 To 1) As Variant
ReDim LaneRecZ(1 To AnzSteps, 1 To 2) As Variant
...
BestFit = WorksheetFunction.LinEst(LaneRecY, LaneRecZ, True, True)
With WS_AB.Range("BestFitTab")
Range(.Offset(1, 0), .Offset(1 + UBound(BestFit, 1) - 1, 0 + UBound(BestFit, 2) - 1)).Value = BestFit
End With
...
So läuft es jetzt, leider brachte es nicht den erhofften Geschwindigkeitsgewinn.
Ob der Input auch Double sein kann, habe ich nicht mehr getestet.
Danke für's Mitdenken,
Martin
Anzeige
Bitte sehr! Gern... FroWein! owT
22.12.2009 21:13:46
Luc:-?
:-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige