Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1352to1356
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

Arrayfunktion gibt immer nur den ersten Wert aus

Arrayfunktion gibt immer nur den ersten Wert aus
09.03.2014 20:18:38
Frank
Hallo und guten Abend an Alle,
ich habe diesen Code für die Bestimmung von Polynomkoeffizienten gefunden. Wenn mann diese Fuction laufen lässt, dann ergeben sich im Debugmodus auch die richtigen Polynomkoeffizienten. Die Formel wird mit Strg+Shift+Enter abgeschlossen. Leider gibt die Arrayfunktion immer nur den ersten Wert aus. Kann mir jemand sagen wieso das so ist F29:F32?
https://www.herber.de/bbs/user/89601.zip
Vielen Dank und viele Grüße
Frank

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Arrayfunktion gibt immer nur den ersten Wert aus
09.03.2014 20:47:34
Uduuh
Hallo,
die Function kannst du nicht als Arrayformel eingeben. Du musst sie mit Index() auslesen.
F29: =Index(Polynomregrel(.....);Zeile(a1)) und runter kopieren.
Gruß aus’m Pott
Udo

AW: Arrayfunktion gibt immer nur den ersten Wert aus
09.03.2014 21:10:50
Frank
Hallo Udo,
vielen Dank für deine Hilfe. Besteht denn keine Möglichkeit den Code so zu ändern dass sie als Arrayformel verwendet werden kann, ohne das ich Index verwenden muss?
Vielen Dank und viele Grüße
Frank

AW: Arrayfunktion gibt immer nur den ersten Wert aus
09.03.2014 21:18:05
Frank
Der Autor selbst schreibt,
Die Funktion PolynomRegRel ist eine sog. Arrayfunktion .
Der Wert der ersten Resultatzelle kann direkt mit dem Funktionassistenten oder per Handeingabe
erfolgen. Die Eingabe wird normal abgeschlossen und wir erhalten in der Zelle den Koeffizienten  _
a0.
Nun wird das Feld für die Koeffizienten a0,..,an durch Selektieren der nachfolgenden Zellen  _
aufgezogen.
Dann wird die Eingabezeile mit der Formel oberhalb des Arbeitsblattes angeklickt und die Zeile  _
mit
 abgeschlossen. Die restlichen Koeffizienten werden jetzt in die markierten  _
Felder
übertragen. Die Formel im Zellenblock wird nachher in geschweiften Klammern dargestellt. Dies  _
zeigt an,
dass eine Arrayfunktion die Zellinhalte definiert. Ein Editieren im zellenblock ist noch mö _
glich,
jedoch muss die Eingabe immer mit CTL> in der Editorzeile unterhalb des Menüs  _
abgeschlossen
werden. Erfolgt das CTL> in der Zelle selbst, werden die restlichen Koeffizienten  _
nicht
angezeigt oder es wird ein Fehler ausgegeben.
Also bin ich davon ausgegangen, dass das möglich ist...

Anzeige
Das ist auch so, ...
09.03.2014 23:16:23
Luc:-?
…Frank! ;-]
Wie kommt ihr beide nur auf die Idee, dass ein Ergebnis aus mehreren Werten mittels einer MatrixFml zwingend einen vertikalen Vektor darstellt? ;->
Merke: Das normale 1dimensionale Vektor-Array ist in VBA stets horizontal orientiert - EinzelElement x(i)! Ein senkrecht orientiertes wäre entweder 2dimensional oder bestünde selbst aus 1elementigen Arrays. Nur Letztere sind auch 1dimensional möglich. Allerdings müsste ein einzelnes Element dann mit x(i)(j) statt x(i,j) - für j=0 - angesprochen wdn. Xl wäre das egal, es kann beide abbilden.
Wenn du also die Ergebnisse senkrecht untereinander ausgeben willst, musst du zusätzlich noch MTRANS einsetzen → etwas, auf das man binnen Sekunden kommen kann, wenn man nur über etwas Erfahrung mit MxFmln verfügt. So aber wird stets nur der 1.Wert wiederholt, was ein übliches Verhalten von Xl ist.
Übrigens, wenn sich die Ergebnisse einer Fkt mit INDEX auslesen lassen, können sie auch zusammen­hängend mittels MxFml dargestellt wdn, denn dafür ist die schließlich da. Einzige Ausnahme: Die Fkt gibt Bezüge auf unzusammenhängende ZellBereiche zurück. So etwas kann Xl nicht abbilden, aber weiterverarbeiten (direkt als Argument einer Fkt, die dazu imstande ist → alle xlFktt, die auch reine Daten-Arrays akzeptieren). INDEX müsste dann mit 4.Argument eingesetzt wdn, um diese Daten Areas-weise auszulesen. Ansonsten kann Xl nur rechteckige Matrizen direkt abbilden (Vektoren fallen für Xl auch darunter!).
Gruß Luc :-?

Anzeige
AW: Das ist auch so, ...
10.03.2014 21:50:08
Frank
Guten Abend Luc,
allerbesten Dank für deine ausführliche Erläuterung zu meinem Problem, das hat mir sehr weitergeholfen. Ich war heute leider den ganzen Tag unterwegs und komme erst jetzt dazu dir zu antworten. Ja, wie bin ich nur darauf gekommen bzw. nicht darauf gekommen das mal horizontal zu versuchen. Ich fand das vertikal halt irgendwie logisch und habe keinen Gedanken daran verschwendet es anders zu versuchen. Ich bastle jetzt in die Funktion die Transpose Funktion und dann sollte alles klappen.
Vielen Dank nochmal für deine Worte.
Viele Grüße
Frank

Anzeige
Die Funktion direkt zu verändern, ...
11.03.2014 04:01:07
Luc:-?
…Frank,
finde ich gar nicht gut. Sie erzeugt ja nur an einer Stelle einen Vektor, sonst an 2 Stellen Matrizen, bei denen es egal ist. Ich habe so etwas zwar auch manchmal in UDFs eingebaut, es dann aber von der Zellauswahlrichtung (nur bei Vektoren!) abhängig gemacht. Dazu muss man zuerst den Application.Caller feststellen (→abfragbarer Fehler, falls kein Objekt, hier also Zelle), dann nach .HasArray fragen und schließlich noch feststellen, ob seine Zeilen- oder Spaltenzahl =1 ist. Aber das ist auch nicht sonderlich zu empfehlen, wenn man unbedingt Zirkelbezüge vermeiden will bzw muss. Xl reagiert auf .Caller-Abfragen gern mit der entsprd Fehlermeldung.
Morrn, Luc :-?

Anzeige
AW: Die Funktion direkt zu verändern, ...
11.03.2014 14:58:18
Frank
Hallo Luc,
vielen Dank für deine erneute Antwort. Nun bin ich etwas verunsichert. Wenn ich eine andere Arrayfunktion verwende, dann liegt es in meinem Verantwortungsbereich ob ich einen Zellbereich überschreibe, so auch bei dieser Funktion. Oder habe ich dich falsch verstanden? Ich transponiere das einfach und gut ;o). Oder meinst du nicht?
Vielen Dank nochmal an dich.
Frank

Ja, in diesem Fall mit MTRANS in der Fml, ...
11.03.2014 15:24:23
Luc:-?
…Frank,
nicht aber direkt im PgmCode der UDF, worauf die Verwendung des OriginalFktsnamens (Transpose) durch dich schließen ließ. Der UDF-Autor hat sich ja auch was dabei gedacht.
Nebenbei, UDFs können normalerweise genauso wie StandardFktt in Zell- u.a. Fmln verwendet wdn (ggf auch als Argument einer geeigneten StandardFkt). Wobei und mit welchen Modalitäten hängt ganz allein von ihrer Pgmierung ab.
Gruß Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige