Anzeige
Archiv - Navigation
1068to1072
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 - Array

UDF - Array
28.04.2009 20:53:44
Martin
Hallo zusammen,
ich habe unter http://newtonexcelbach.wordpress.com/2009/04/25/moving-averages-and-user-defined-array-functions/ einen interessanten Artikel gefunden, den ich allerdings nicht wirklich verstehe (so gut ist mein Englisch und mein VBA leider nicht), würds aber gerne verstehen.
Wie funktioniert das genau und was ist der große Vorteil dabei? Könnte man so etwas z.B. dazu nutzen, aus einer großen Matrix eine bestimmte Datenreihe zurückzuliefern? Denn genau so etwas suche ich schon ne gewisse Zeit, weil meine bisherige Umgehungslösung mit Indirekt recht langsam ist. Beispiel: Aus einem Bereich B10:AB20000 soll beginnend von der Ausgangsposition Zeile Nr. 2 des Bereichs (also Zeile "C" in der Tabelle) und der Spalte Nr. 35 des Bereichs (also Spalte 45 in der Tabelle) insgesamt die 12 davon rechts liegenden Zellinhalte zurückliefern.
Viele Grüße
Martin

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

Betreff
Datum
Anwender
Anzeige
AW: UDF - Array
28.04.2009 21:30:54
Rudi
Hallo,
verwechselst du nicht Zeilen und Spalten?
Suchzeile in A1; Spalten-Nr in B1
in A3: =INDEX(Tabelle1!$B$10:$AB$20000;$A$1+1;$B$1+SPALTE(A1)-1)
und nach rechts kopieren.
Gruß
Rudi
AW: UDF - Array
28.04.2009 21:42:33
Martin
Hallo Rudi,
danke für die Antwort. Ja, Spalten Zeilen hätten es sein sollen, leider zu spät gemerkt und keinen Editieren-Button gefunden. :(
Der Index ist mir schon klar, doch ich möchte im Endeffekt keinen Index, sondern im Prinzip eine Rückgabe ala {1.2.3.4.5.6.7.8.9.10.11.12}. Aber ich denke da vermutlich auch zu kompliziert. Mit Bereich.Verschieben kann ich das auch erreichen, doch das ist bei einer ausgedehnten Verwendung recht langsam. Deshalb dachte ich, dass das mit VBA schneller geht.
Die erste Frage kannst Du aber auch nicht beantworten, oder?
Gruß
Martin
Anzeige
AW: UDF - Array
28.04.2009 23:34:04
Rudi
Hallo,

Deshalb dachte ich, dass das mit VBA schneller geht.


mit Sicherheit nicht. VBA ist gegenüber Tabellenfunktionen grottenlahm.
Gruß
Rudi

AW: UDF - Array
29.04.2009 21:07:52
MartinKai
Hi,
das würde ich so nicht stehen lassen wollen.
Es gibt genug Szenarien, die zeigen, dass UDF sehr wohl schneller sein können. V.a. in Excel 2007 ist der Unterschied gravierend. VBA ist langsamer, wenn ein übergebener Bereich z.B. Zelle für Zelle verarbeitet wird (For Each rngZelle In ActiveSelection.Range...).
Gruß
Martin
AW: UDF - Array
01.05.2009 13:01:50
Fred
Hi,
vorausgesetzt, die Aufgabe ist identisch, sind Excelformeln/Funktionen
immer deutlich schneller als VBA.
mfg Fred
Anzeige
AW: UDF - Array
01.05.2009 14:46:33
MartinKai
Das bestreite ich ja auch gar nicht, ich sagte ja nicht, dass VBA-Funktionen schneller sind als die von Excel... ;o)
AW: UDF - Array
01.05.2009 19:19:57
Fred
Hi,
"...Es gibt genug Szenarien, die zeigen, dass UDF sehr wohl schneller sein können...."
Das sieht aber bei diesem Satz anders aus und ist einfach nicht zutreffend.
mfg Fred
AW: UDF - Array
03.05.2009 13:46:02
MartinKai
Hi,
wenn du nur den fett markierten Teil liest, mag das zutreffen, aber der Gesamtzusammenhang ist entscheidend und da schaut es anders aus.
VBA-Funktionen selbst sind immer langsamer, da magst Du recht haben, aber UDFs können sehr wohl schneller sein, als Excelfunktionen, wenn bestimmte Aufgaben zu erledigen sind, die nur durch eine komplexe Kombination von einzelnen Excelformeln oder gar über Umwege und Hilfsspalten möglich sind (ich spreche also nicht von Problemen, für die es keine Excelformellösungen gibt).
Sobald man z.B. Volatile-Funktionen mehrfach einsetzen muss, liegt Excel gegenüber UDF weit abgeschlagen zurück. D.h. übrigens nicht, dass man mit UDF nicht einfach eine Excelfunktion nutzen kann, genau deshalb ja mein Hinweis, klar, ain Äquivalent in reinem VBA zur Excelfunktion ist immer langsamer, aber man kann in UDFs auch auf Excelfunktionen zugreifen. So kann man durch eine geschickte Programmierung auch Volatile-Funktionen wie "Bereich.Verschieben" geschickt bändigen und sich die Performace je nach Situation um bis zu einem Vielfachen steigern.
Aber ist auch egal, ich will nicht Erbsen zählen, meine Urprungsfrage wurde leider nicht beantwortet, also kann der Thread geclosed werden.
Gruß
M.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige