Office: MATRIX-Formel über VBA -> zu langsam

Helfe beim Thema MATRIX-Formel über VBA -> zu langsam in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo und guten Abend, konnte bis jetzt noch nicht testen *bawling … die Arbeit hat mich voll im Griff. *smashing Melde mich so bald wie möglich ...... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von mücke, 2. August 2010.

  1. MATRIX-Formel über VBA -> zu langsam


    Hallo und guten Abend,

    konnte bis jetzt noch nicht testen *bawling … die Arbeit hat mich voll im Griff. *smashing
    Melde mich so bald wie möglich ... und sorry an alle Helfer ... das war so nicht geplant! *nene

    Danke für Eure Geduld!
     
  2. Hallo IHR freundlichen Helfer,

    da bin ich wieder *Smilie … und kann jetzt endlich (m)einen Report abliefern.

    Aber vorher gibt es erst mal ein freudiges DANKESCHÖN an Euch! Die unterschiedlichen Lösungen funktionieren alle prima und die Erläuterungen respektive Beschreibungen sind echt *top

    Ab zum Report:
    Habe alle Varianten (mit Testdaten > 20.000) getestet. Die Ergebnisse sind überall gleich, Unterschiede gibt es nur in der Verarbeitungszeit.
    _EarlFred < 1 Sekunde (Variante aus # 5)
    _Eberhard 3-4 Sekunden
    _Ingolf 4-5 Sekunden

    @Eberhard
    Deine SQL-Variante ist sehr ausführlich Dokumentiert (Danke dafür) und hilft somit den VBA´lern sicher weiter. Für mich ist SQL absolutes Neuland und sehr schwer zu verstehen. Wie hast du es nett formuliert

    Nur leider habe ich diese Zeit momentan nicht, sorry.
    Trotzdem DANKE für deine Hilfestellung.

    @Ingolf
    Auch diese Variante ist für mich nur schwer nachvollziehbar.
    Da hab ich das gleiche Problem wie schon bei Eberhard beschrieben.
    Mein Dank sei Dir aber sicher!

    @EarlFred
    Deine Variante kann ich so einigermaßen nachvollziehen (ist auch mit Abstand die Schnellste *wink.gif* ).
    Hierauf aufbauend habe ich den CODE an meine Datei angepasst bzw. erweitert.
    Wie schon in #11 beiläufig erwähnt, gibt es mehr als 1.-TB zum auslesen. Daher sieht (m)eine jetzige Lösung wie folgt aus. Die Laufzeit beträgt produktiv < 3 Sekunden.
    Code:
    Pro & Contra sind immer willkommen! Wenn es was zu verbessern gibt, nur keine Scheu, ich lerne gerne dazu!

    Mit diesem Report verabschiede ich mich in den Feierabend und wünsche allen ein *Sun Wochenende
     
  3. \@Dirk: Da bin ich aber traurig, dass meine Variante nicht zur Auserwählten wurde und zudem einen Geschwindigkeitsnachteil von über 300% zum Spitzenreiter hat. Wenigstens konnte sie die Ausgangsaufgabenstellung - Laufzeit < 3/4 Tag - erfüllen.

    Dazu aber noch zwei Bemerkungen:
    - Der SVerweis auf zwei Felder ist noch recht simpel als Aufgabenstellung. Wenn in den auszuwertenden Sheets z.B. die Kombination PersNr und Datum mehrfach auftreten würde, also zusammengefasst werden müsste und überdies vielleicht nur Mindestwerte übertragen oder nur bestimmte Maximalwerte anerkannt werden müssten, wäre der Aufwand bei SQL ein vergleichbarer.
    - In den Exceltabellen ist eine Indexierung, so wie sie im Dictionary angewandt wird, nicht nutzbar. In einer Jet-Tabelle (Access) sind demgegenüber bis zu 30 Indizes pro Tabelle möglich. Dass die Verwendung eines Index (Inhaltsverzeichnis) gegenüber dem jedesmaligen Scan der ganzen Tabelle vorteilhaft ist, ist sicher unzweifelhaft.
    Insofern sind meine Versuche in Excel auch als Testballon zu verstehen, um eine Vergleichbarkeit gegenüber Gewohntem herstellen zu können.

    Zum Code: Objektreferenzen wie ActiveWorkbook, ThisWorkbook u.ä. werden bei mir i.d.R. bei mehr als einfacher Verwendung in einer Objektvariablen abgelegt, die dann nachfolgend genutzt wird.
    - Dies ist zu einem geringfügig schneller, zumindest bewirkt in Access die Verwendung von CurrentDb eine jedesmalige Neuinstanzierung des DB-Objektes (die Zeit benötigt), während die Objektvariable die Referenz auf die verwendete Speicheradresse enthält. (Oftmalige Wiederholungen können geringfügige Zeitdifferenzen auf spürbare Werte summieren.)
    - Die Objektvariable erhöht Zugriffssicherheit. Bei der gleichzeitigen Verwendung von mehreren Arbeitsmappen und Mehrnutzerbetrieb (ich denke da auch an einen Fernzugriff aus anderen Anwendungen heraus) könnte im Moment ActiveWorkbook etwas anderes sein als was man sich eigentlich vorstellte.
     
  4. MATRIX-Formel über VBA -> zu langsam

    Hallo Eberhard,

    bitte nicht traurig sein!
    So wie es momentan (Stand heute Morgen) aussieht, soll ich die “Auswertungen“ nicht nur für 2010, sondern rückwirkend ab 2008 erstellen.
    Dann werden es definitiv mehr als 100.000 Zeilen sein ... mal schauen, wie sich die verschiedenen Varianten dann verhalten.
    Werde dieses Thema jetzt schießen, denn die nächste Herausforderung wartet schon auf mich *bye
     
  5. Hallo Eberhard,

    die Einfachheit des Problems ist sicher gegeben, aber Lösungen unter Zuhilfenahme von Dictionarys können schon noch etwas bis deutlich mehr an Komplexität bewerkstelligen.

    Für mich stehen neben den paar Sekunden des Codedurchlaufs vor allem auch folgende Fragen im Vordergrund: Wie einfach kann ein Code erstellt werden? Wie einfach gestaltet sich seine Wartung bei geänderten Anforderungen / Tabellenaufbau?
    Das große Kapital eines Dictionarys ist in meinen Augen seine Geschwindigkeit und seine Flexibilität. Diese erfordert mitunter jedoch einen recht hohen Programmieraufwand, wodurch bei zunehmender Komplexität auch die Überschaubarkeit des Codes leidet. Steigt da nach ein paar Jahren noch einer durch (Kommentierungen hin oder her)?

    SQL erscheint mir da auf alle Fälle übersichtlicher (bei gleicher Komplexität der Aufgabe), so dass es in vielen Fällen eine ernsthafte Alternative darstellen könnte (ich vermute bisher, dass es so ist). Ich werde das auf alle Fälle vertiefen und danke nochmals für die tollen Erläuterungen und Deine und Ingolfs Beispiellösungen, die in einigen Details doch interessante Unterschiede aufweisen.

    Mit der Frage der vorausgesetzten Datensortierung werde ich sicher anfangen...

    Grüße
    EarlFred
     
    EarlFred, 9. August 2010
    #20
  6. \@EarlFred: Dieser Zusammenfassung kann ich mich vorbehaltlos anschließen.

    Ergänzen bzgl. SQL möchte ich der Vollständigkeit halber noch, dass man damit auch prächtig Gruppieren und Aggregieren (Zählen, Summieren, Mittelwerte, ...) kann, dabei im gleichen Schritt die Ausgangsdaten vorher und die Ergebnisdaten danach filtern kann, und das gerne auch im Kombination mit der oben verwendeten Verknüpfung mehrerer Tabellen.
     
Thema:

MATRIX-Formel über VBA -> zu langsam

Die Seite wird geladen...
  1. MATRIX-Formel über VBA -> zu langsam - Similar Threads - MATRIX Formel VBA

  2. Formel bei Veränderung von dynamischem Array "mitziehen"?

    in Microsoft Excel Hilfe
    Formel bei Veränderung von dynamischem Array "mitziehen"?: Hallo liebes Forum, ich komme bei folgendem Problem nicht weiter und habe mir hier etwas Hilfe erhofft: Ich habe eine Tabelle mit Feedbacks zu Lehrgängen/Kursen. Diese will ich nach Dozent erst...
  3. Matrix Formel = "Falsch"

    in Microsoft Excel Hilfe
    Matrix Formel = "Falsch": Hallo, ich habe folgende Tabelle siehe Muster, bei der hinterlegten Formel in B51 {=WENNFEHLER(WENN(@PRabatt[Nettopreis]=0;WENN(SVERWEIS("Rabatt 1";MRabatt;2;0)=0;"";"Mengenrabatt ab...
  4. Matrix-Bezug von MTRANS-Formel dynamisch verändern?

    in Microsoft Excel Hilfe
    Matrix-Bezug von MTRANS-Formel dynamisch verändern?: Guten Abend zusammen, ich heiß Sarah und freue mich wieder ein gutes Excel-Forum gefunden zu haben, nachdem Office-Lösung.de ja leider weiterhin (?) offline ist. Folgendes Anliegen habe ich: Ich...
  5. Excel Matrix: Search Value and provide value next to it

    in Microsoft Excel Hilfe
    Excel Matrix: Search Value and provide value next to it: I have an Excel table that is a bit messy with different dates below each other. User Date0 property0 Date1 property1 User1 28/10/21 1000 27/10/21 3000 User2 27/10/21 2000 26/10/21 300 User1...
  6. Beim Einfügen von Spalten läst sich die Matrix Formel nicht ändern

    in Microsoft Excel Hilfe
    Beim Einfügen von Spalten läst sich die Matrix Formel nicht ändern: Hallo Ich habe ein Einbefeld von A-d20 In einer Matrixformel ab E1 wird ein Wert verglichen und dann in der Spalte-E als Doppelwerte übertragen, diese werden dann als vergleich für Markierung der...
  7. Matrix - Formel kombrimierbar?

    in Microsoft Excel Hilfe
    Matrix - Formel kombrimierbar?: Hallo zusammen, aktuell versuche ich den zeitlichen Ablauf von einem Produktionsprozess abzubilden. Die (Rüst)Zeiten ergeben sich durch die Umrüstung von der Merkmalskombination (vertikal) der...
  8. Formel für Datumssuche in generierter Matrix

    in Microsoft Excel Hilfe
    Formel für Datumssuche in generierter Matrix: Hallo zusammen, ich habe eine Herausfordung, deren Lösung sich mir einfach nicht erschließen will. Ich hoffe, jemand kann mir helfen :). Ich habe eine Tabelle, in der im Kopf zwei Zeilen...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden