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

UDF in Matrixformel verwenden

UDF in Matrixformel verwenden
22.03.2021 16:23:18
Jennen
Hallo,
ich möchte eine UDF in einer Matrixformel einsetzen, kriege das aber nicht hin.
Einfaches Beispiel, das das Problem zeigt, eine Funktion, die einen Wert verzehnfacht:

Public Function Zehnfach(a) As Variant
Zehnfach = a * 10
End Function

Im Bereich A1 bis A5 stehen die Werte von 1 bis 5.
Wenn ich jetzt den Bereich B1 bis B5 selektiere und die Funktion mit dem
Bereich A1 bis A5 aufrufe, als Matrixformel abschließe (Ctrl-Shift-Enter)
wird mir der Fehler #Wert ausgegeben.
Wenn ich diese Funktion auf einer Einzelzelle aufrufe, funktioniert sie korrekt.
Was muss ich ändern, dass meine UDF auch in einer Matrixformel funktioniert?
Danke und Grüße
Brigitte

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UDF in Matrixformel verwenden
22.03.2021 17:27:59
Jennen
So weit war ich schon.
Ich hab selbstverständlich vorher gegoogelt und im Forumsarchiv nachgesehen, ob evtl hilfreiche Beiträge vorhanden sind.
Deine Antwort sagt mir nicht, warum sich die von mir angegebene, simple Funktion nicht
in einer Matrixformel einsetzen lässt.
Vielleicht probierst Du es einfach mal selbst aus?
Grüße Brigitte

AW: UDF in Matrixformel verwenden
22.03.2021 17:29:47
onur
Anscheinend hast du den Beitrag nicht RICHTIG gelesen, denn sonst hättest du gemerkt, dass die UDF im Beitrag einen ARRAY ausgibt.

Anzeige
AW: UDF in Matrixformel verwenden
22.03.2021 17:34:55
Jennen
OK. Muss ich zugeben, hab ich überlesen.
Aber wenn ich jetzt meine Funktion so abändere, dass ein Array zurückgegeben wird,
Public Function Zehnfach(a) As Variant()
Zehnfach = a * 10
End Function
ändert sich nichts.
Wie muss ich die Funktion ändern, dass das funktioniert?

AW: UDF in Matrixformel verwenden
22.03.2021 17:36:47
onur
Wenn du einfach
Public Function Zehnfach(a) As Variant()
schreibst, wird deswegen noch lange kein Array ausgegeben.

Hallo Brigitte, ...
22.03.2021 17:44:24
lupo1
... Du musst jedes Array auch als solches eingeben:
Markiere die Zellen gemeinsam, füge die Funktion in der Markierung ein und schließe sie mit Strg-Umsch-Eing ab.
Erst ab XL365 muss man das nicht mehr.

Anzeige
AW: UDF in Matrixformel verwenden
22.03.2021 17:47:09
Jennen
OK - hab ich verstanden.
Ich seh trotz Bemühen seit mehr als 3 Stunden keine Lösung und gebe auf.
Ich werd's irgendwie anders versuchen.
Trotzdem Danke für Deine Hilfe.
Grüße Brigitta

Probiere es mal so...
22.03.2021 17:42:33
Case
Hallo, :-)
... wie in der Beispieldatei...
Servus
Case

AW: Probiere es mal so...
22.03.2021 18:03:45
Jennen
Hallo Case,
ich danke Dir sehr!!!
Nicht nur, weil Dein Beispiel funktioniert, sondern auch weil Du Dir die Mühe gemacht hast,
mein Beispiel wirklich auszuprobieren.
Anhand Deiner Veränderungen im Code hab ich jetzt endlich verstanden, wo das Problem liegt.
Nochmals ganz herzlichen Dank für Deine kompetente Hilfe!!
Grüße Brigitte

Anzeige
Dein Fehler lag darin, ...
22.03.2021 18:38:34
Luc:-?
…Brigitte,
dass du im speziellen Fall ein Array mit einem EinzelWert operativ verknüpfen wolltest, was ein Verstoß gg die VBA-Syntax ist. Das geht nur zwischen EinzelWerten!
Wenn du das mit einer Xl-Fkt versuchst, die in einem ihrer Argumente einen EinzelWert verlangt, fktioniert das in einer MatrixFml nur deshalb, weil der FmlText-Interpreter das erkennt und die Fkt dann zyklisch mit immer einem anderen Wert aus dem Intervall für dieses Argument aufruft. Dieser Service steht einer UDF idR aber nicht zV, weshalb du das selber pgmmieren musst. Genau das hat Case gemacht, wobei das As Variant in der KopfZeile überflüssig ist, weil das Fktsergebnis ohne das ohnehin Variant ist. Mit etwas mehr Aufwand hätte auch zwischen Bereichsbezügen und Datenfeldern (bspw aus Ausdrucksberechnungen) und für letztere dann auch zwischen EinzelWerten und Arrays im 1.Argument unterschieden wdn können. In diesem Fall müsste das 1.Argument natürlich ebenfalls Variant sein, was dann auch weggelassen wdn könnte.
Nebenbei, meine UDFs sind idR so beschaffen und As Range wird nur dann verwendet, wenn das lt UDF-Aufgabe zwingend erforderlich ist.
Gruß, Luc :-?
„Der beste Beweis für intelligentes Leben im Universum ist, dass noch niemand versucht hat, Kontakt mit uns aufzunehmen.“ H.Lesch, 2018, Sonneberg
Anzeige

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige