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

"virtuelle" Bereichsnamen ?

"virtuelle" Bereichsnamen ?
30.04.2009 10:35:15
t4z
Hallo zusammen,
ich habe eine bereits jetzt sehr große Excel-Datei. Darin ist ein Quellsheet enthalten, welches Wertentwicklungen diverser Indices oder Einzeltitel (Aktien, Fonds, etc.) enthält. Daraus errechne ich die jeweiligen Renditen in einem separaten Sheet. Diese bisher vorgehaltenen Informationen reichen prinzipiell aus, um daraus jede erdenkliche grafische Auswertung (Wertentwicklung absolut, relativ, relativ indiziert, logarithmisch, ..., Renditeverteilung, Korrelation zweier Titel, Drawdown, etc) zu erstellen. Dazu wäre es jedoch an einigen Stellen notwendig, Nebenrechnungen innerhalb von Zellen bzw. ganzen Bereichen zu erstellen, die selbst dann die Quelle der gewünschten Diagramme sind.
Meine Frage:
Da eigentlich bereits die Renditereihen alle nötigen Informationen für all die gewünschten Diagramme innehaben, wünschte ich mir, könnte ich die benötigten Ergebnisse für Diagramme nicht "real" im Sheet sondern irgendwie "virtuell" errechnen, um das Sheet nicht mit eigentlich überflüssigen Nebenrechnungsformeln weiter auszubremsen. Z.b. dürften doch Matrixoperationen (Array-Functions) perfomanter sein, als die einzelnen Schritte mit normalen Funktionen zu erstellen. Stelle ich mir nun vor, dass ich Bereiche definieren könnte ala
Einfügen-Namen-Definieren: = "{=gewünschterRenditeBereichsName + 1}"
Dies wäre bspw eine komponentenweise addition eines "realen Bereichs" mit der 1. Das Resultat wäre ein "virtueller Bereich" oder Vektor der nun nicht mehr auf einen "realen Bereich" zeigt, sondern nur Ergebnisse bereithält, welche aus "realen Bereichen" errechnet wurden. Dieser "virtuelle Bereich" sollte sich als Diagrammquelle einsetzen lassen.
Ich hoffe, dass Ihr meinen Wunsch versteht und mir in erster Linie sagt, ob soetwas überhaupt umsetzbar ist und wenn ja, wie. Über Teillösungen oder andere Ansätze, die dabei helfen große Arbeitsmappen sinnvoll zu erweitern ohne sie immer weiter auszubremsen, bin ich natürlich ebenfalls dankbar.
Vielen dank, euer t4z

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

Betreff
Datum
Anwender
Anzeige
AW: "virtuelle" Bereichsnamen ?
30.04.2009 11:10:31
Raist10
Um virtuelle Ergebnisse zur Weiterverarbeitung zu erhalten eignet sich VBA am ehesten. Da Du als Level VBA gut angegeben hast, weisst Du das selber, von daher verstehe ich jetzt gerade die Problematik nicht. ;)
Um ein Sheet nicht überquellen zu lassen besteht die Möglichkeit bei z.B. großen Datenmengen die Daten in einem anderen Workbook zu speichern und dieses dann per VBA-Makros bei Bedarf zu öffnen und nur benötigten Daten auszulesen. Hier kann im Prinzip dann zwischen auslesen der Datensätze und Bereitstellung für die kommende Aktion Zwischenschritte (also Nebenrechnungen ) bereits abgearbeitet werden.
Also in Deinem Fall ein Workbook das nur die Indices enthält, dann eines nur für Aktien und dann wiederum eines nur für Fonds. Und in dem vierten Workbook hälst Du dann die ganzen Möglichkeiten der Auswertung für die Daten zur Verfügung. Im Prinzip kannst Du dann noch ein fünftes Workbook einrichten, dass bei Wunsch des Anwenders (oder automatisiert) nur die Ergebnisse der Operationen in grafischer Aufbereitung vorhält.
Dadurch bleibt jedes Workbook für sich alleine gesehen relativ schlank und auch übersichtlich.
Sollte ich mit meinen Ausführungen an Deiner Problemstellung vorbei geschossen sein, dann solltest Du Dein Problem mal genauer an Hand von einem exakten Beispiel erläutern.
Gruß
Rainer
Anzeige
AW: "virtuelle" Bereichsnamen ?
30.04.2009 11:23:35
t4z
danke für die flinke antwort.
VBA möchte ich möglichst vermeiden und zunächst das nutzen, was mir allein durch Excel gegeben ist. Meine bisherige Erfahrung zeigt, dass vom Benutzer erstellte Funktionen oder Code die Arbeitsmappe noch schneller ausbremsen, als es die optimierten, also performanten Lösungsmglkeiten, die Excel von Haus aus zur Verfügung stehen, tun.
Programmierte ich bspw eine komponentenweise Matrixaddition in VBA, so ist ein simples {=A1:B2+1} oder {=A1:B2+C8:D9} in Excel um Längen performanter.
Lösungsgedanken in VBA usw habe ich genügend, jedoch bin ich mittlerweile mehr und mehr auf der Suche nach den performantesten.
Könnte das Thema weiter diskutiert werden, so wäre ich sehr dankbar.
Anzeige
AW: "virtuelle" Bereichsnamen ?
30.04.2009 11:47:50
Raist10
Es kommt immer drauf an was Schneller ist. Reine Rechenoperationen kann Excel selber schneller ausführen dann ist soweit richtig da VBA Macros noch den Zwischenschritt des Compilers benötigen was sich bei großen zu verarbeiten Datenmengen bemerkbar macht.
Aber spätestens ab langwierigen Wenn Dann und Wenn nicht Dann das vergleichen wird ein Makro in VBA um Längen schneller sein als Excel ... zumindest wenn es richtig programmiert ist.
Um maximale Performance zu erreichen wird Dir wohl nix anderes übrig bleiben als Excel + VBA Makros zu kombinieren. Und die Makros auf Performance zu schreiben, also wo möglich API Funktionen, Ausschlußkriterien nach der Wahrscheinlichkeit des Eintrittes abfragen lassen und auch so programmieren das bei Abfrage von Ausschlußkriterien immer nur das Kriterium geprüft wird und wenn nicht wahr dann raus.
Makros werden langsam wenn zuviel unnötige Arbeitsschritte durchgeführt werden müssen und da liegt meiner Meinung nach der Perfomancegewinn gegenüber Excel, da man mit Makros einfacher und schneller Ausschlußkriterien rausfiltern kann und damit unnötige Arbeitszeit sich erspart.
Du wirst z.B. drauf angewiesen sein, dass möglichst schnell die benötigten Daten aus einer riesen Menge an Datensätzen rausgefiltert werden, also z.B. aus den über 8000 Möglichkeiten (oder sind es schon wieder mehr geworden?) nur alle Fonds die in Europa in Growth-Werte anlegen rausfinden und deren Kennzahlen miteinander vergleichen.
Bei solchen Vergleichsoperationen gehen die von Excel geboten Möglichkeiten sofort in die Knie und die Performance in den Keller, kannst Du mit einem guten VBA Makro schneller lösen:
Erst die Fonds nach Namen sortieren, dann bis zum ersten auftreten des Strings "Fidelity" (oder alle anderen relevanten Möglichkeiten) durchlaufen und die dann auftretenden Datensätze nach "Europa durchsuchen und wenn True dann auswerten, aber sofort abbrechen wenn im Namenszug kein Fidelity beinhaltet ist. Somit stellst Du sicher das tatsächlich nur Fonds von Fidelity abgearbeitet werden und der riesen Satz der an Daten hinterher kommt wird völlig unberücksichtigt gelassen.
Wirst Du mit Excel selber nicht schaffen das so schnell hinzubekommen, da Excel jeden Datensatz nach Fidelity durchsuchen wird/muss und damit die Operation auf die komplette Anzahl an Fonds ausgeführt wird. Der Geschwindigkeitsvorteile dürfte da in etwa bei 6000 Operationen weniger liegen für das VBA-Makro. ;)
Gruß
Rainer
Anzeige
AW: "virtuelle" Bereichsnamen ?
30.04.2009 12:18:22
Raist10
Oops im Beispiel einen Fehler gehabt ... meinte natürlich:
Alle Fonds von Fidelity die in Europa und in Growth Werte anlegen rausfiltern, ansonsten würde die Suche nachdem String Fidelity ja keinen Sinn machen. ;)
Gruß
Rainer
AW: "virtuelle" Bereichsnamen ?
30.04.2009 12:24:32
t4z
ok, vielen dank rainer. ich habe deine ausführungen verstanden und habe durch dich wieder etwas neues gelernt, nur möchte ich die frage weiterhin offen lassen, um auch andere gedanken kennzulernen.
bisher habe ich keine antwort darauf, ob mein gedanke "virtuelle Bereichsnamen" zu definieren, umsetzbar ist oder nicht. die nötigen nebenrechnungen also in der für den bereichsnamen hinterlegten formel zu erledigen.
Anzeige
AW: "virtuelle" Bereichsnamen ?
30.04.2009 15:15:12
Raist10
Ich muss ehrlich gestehen, dass ich keine Ahnung habe was Du mit "virtuellen Bereichsnamen" meinst, bzw. was Du Dir darunter vorstellst.
Du kannst natürlich schon Bereiche definieren, aber die haben realen Bezug zu einem Bereich auf einem Tabellenblatt.
Wenn Du mit virtuellem Bereich meinst, dass bedingt Datensätze verarbeitet werden sollen damit sie ein Ergebnis für ein Diagramm liefern. Wäre es eh am praktischsten die Datensätze zu auszulesen, dann in einem VBA-Makro die gewünschte Berechnungsoperation durchzuführen und das Ergebnis dann für das Diagramm zur Verfügung zu stellen.
Aber wenn es das ist, erschliesst sich mir gerade nicht was Du in so einem Vorgang mit einem virtuellen Bereich willst.
Gruß
Rainer
Anzeige
AW: "virtuelle" Bereichsnamen ?
30.04.2009 12:36:30
Rudi
Hallo,

Z.b. dürften doch Matrixoperationen (Array-Functions) perfomanter sein, als die einzelnen Schritte mit normalen Funktionen zu erstellen. 


da liegst du falsch. Besser über Hilfsspalten als mit Matrixformeln über große Bereiche.
Gruß
Rudi

Matrixoperation inperformant?
30.04.2009 14:18:07
t4z
das ist ja komisch. worin liegt der grund dafür? dachte bisher, dass alles was excel ständig automatisch aktualisieren muss langsamer sein müsste, als ließe man alle nebenrechnungen weg und ermittelt über matrix- oder array-fcts das ergebnis direkt!?
AW: Matrixoperation inperformant?
04.05.2009 08:56:14
t4z
meine letzte frage ...
das ist ja komisch. worin liegt der grund dafür? dachte bisher, dass alles was excel ständig automatisch aktualisieren muss langsamer sein müsste, als ließe man alle nebenrechnungen weg und ermittelt über matrix- oder array-fcts das ergebnis direkt!?
... wurde durch boris nicht beantwortet, deshalb stelle ich sie hiermit wieder auf "Frage noch offen"
Anzeige
AW: Matrixoperation inperformant?
04.05.2009 12:37:23
{Boris}
Hi,
...wurde durch boris nicht beantwortet...
Genau so wenig bist Du aber auf meinen Hinweis eingegangen. Frage noch offen.
Grüße Boris
AW: "virtuelle" Bereichsnamen ?
30.04.2009 15:02:21
{Boris}
Hi,
so ganz kapiert hab ich das noch nicht. Aber Du kannst doch den Bereichsnamen dynamisch gestalten - am besten mit BEREICH.VERSCHIEBEN.
Die Versatz- bzw. Ausmaßparameter Zeilen;Spalten;Höhe;Breite kannst Du ja in 4 Zellen hinterlegen und damit dynamisch halten.
Grüße Boris

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige