Anzeige
Archiv - Navigation
120to124
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
120to124
120to124
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Benutzerdefinierte Array-Function

Benutzerdefinierte Array-Function
16.05.2002 09:16:50
Jochen
Hallo,
ich verwende benutzerdef. Funktionen, die ein Array übergeben bekommen und selbst ein (genauso großes) Array zurückliefern. Aus irgendeinem Grund arbeiten diese Funktionen nur bis zu einer Array-Größe von 5460 Elementen. Bei jeder größeren Elementzahl liefert die Funktion lediglich "#WERT!". Kennt jemand die Ursache oder weiß jemand Abhilfe?

Der Algorithmus entsprich dem von Microsoft vorgeschlagenen; das ganze sähe z.B. für ein Programm zum Quadrieren einer Zahl so aus:

Function Quadrat(Bereich As Range) As Variant
Dim temp As Variant
Dim i As Integer, j As Integer

temp = Bereich.Value

If IsArray(temp) Then
For i = 1 To UBound(temp, 1)
For j = 1 To UBound(temp, 2)
temp(i, j) = temp(i, j) ^ 2
Next j
Next i
Else
temp = temp ^ 2
End If
Quadrat = temp
End Function

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

Betreff
Datum
Anwender
Anzeige
Re: Benutzerdefinierte Array-Function
16.05.2002 09:36:18
Hans W. Herber
Hallo Jochen,

teste mal folgenden Funktionsaufruf, einige hunderttausend Elemente sollten verkraftet werden:

hans

Re: Benutzerdefinierte Array-Function
16.05.2002 10:40:04
Jochen
Hallo Hans,
vielen Dank für den Lösungsvorschlag. Mein Problem ist allerdings etwas anders gelagert, was ich aber nicht deutlich genug zum Ausdruck gebracht habe:
Über "Namen vergeben" definiere ich einen Vektor (z.B. "Eingabwerte"), der eine variable, bis etwa 8500 Elemente große Menge an Eingabewerten enthält. Diese kann ich dann im Diagramm darstellen, ohne mich um die tatsächliche Anzahl an Daten zu kümmern. (Das läuft - wie bei den kursierenden Excel-Funktionsplottern auch - über BereichVerschieben().) Aus diesen Daten werden weiterhin über eine etwas längliche (benutzerefinierte) Funktion neue Daten errechnet, die ebenfalls im Diagramm stehen sollen.
Indem ich nun die UDF über "Namen vergeben" ("NeueDaten" wird z.B. definiert als =Quadrat(Eingabedaten)) direkt in einer Variablen berechnen lasse, spare ich mir die ganzen Zellen auf dem Arbeitsblatt und kann die Ergebnisdaten direkt im Diagramm darstellen. Daneben kann man die Ergebnisdaten sehr einfach über z.B. =Max(Ergebnisdaten) etc. auswerten.
Hierfür muss die Funktion "Array-tauglich" sein, was sie mit dem von mir geposteten Code auch ist. Aber leider eben nur für knapp 5500 Elemente...

Anzeige
Re: Benutzerdefinierte Array-Function
16.05.2002 10:43:49
Hans W. Herber
Hallo Jochen,

die Größe der Arrays ist durch Arbeitsspeicher begrenzt, die Anzahl der möglichen, nicht gebundenen Datenpunkte in Diagrammen unterliegt Restriktionen, die Versionsabhängig sind.
Du kannst also mit Bezug auf einen Tabellenblattbereich in einem Diagramm zigtausende von Datenpunkten zuweisen, was Dir über die Zuweisung über ein Array nicht gelingt.

Hier vermute ich das Problem.

hans

Re: Benutzerdefinierte Array-Function
16.05.2002 11:26:05
Jochen
Ich denke mittlerweile auch, dass es eine durch Excel vorgegene Elementbegrenzung ist. Was die Datenpunkte im Diagramm betrifft, so kann man schon weit über 5000 Punkte durch ein Array übergeben. Allerdings ist die Zahl der durch VBA an ein Worksheet-Array übergebenen Elemente limitiert. Näheres dazu habe ich mittlerweile gefunden unter:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q177991

Vielen Dank nochmal. Ich werde den Gesamtbereich jetzt in zwei Einzelarrays aufteilen müssen...

Jochen

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige