Office: For Schleife, schlechte Performance

Helfe beim Thema For Schleife, schlechte Performance in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich habe eine Tabelle mit 22.000 Ids, welche ich in einer 55.000 Zeilen großen Bestandstabelle Suche und bei Treffer einen Wert in... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von bydo, 9. Mai 2017.

  1. For Schleife, schlechte Performance


    Hallo zusammen,

    ich habe eine Tabelle mit 22.000 Ids, welche ich in einer 55.000 Zeilen großen Bestandstabelle Suche und bei Treffer einen Wert in einer Nachbarspalte überprüfe. Je nach Zusammenstellung wird etwas in eine dritte Tabelle ausgespeichert.

    Mein Problem: Dieser Vorgang dauer 20 Minuten+ (ich habe den Prozess an dieser Stelle beendet). Wieso braucht der Rechner so lange und wie kann ich die Arbeit zügiger erledigen lassen?

    Beispieltabelle mit Code liegt anbei, vorab vielen Dank und viele Grüße

    Bydo

    Ebenfalls gefragt auf
    http://www.clever-excel-forum.de/Thr...rmanceprobleme
    http://www.herber.de/forum/messages/1557784.html

    :)
     
    bydo, 9. Mai 2017
    #1
  2. Das liegt daran, weil Du ständig auf die Arbeitsblätter zugreifst.
    Vielleicht reicht es ja schon, die Neuberechnung, Bildschirmaktualisierung, ...abzuschalten.
    Code:
     
    Storax, 11. Mai 2017
    #2
  3. Nein, die Abschaltung der Funktionen hat leider keine Verbesserung gebracht.
     
  4. For Schleife, schlechte Performance

    Hallo,

    jeder Zugriff auf eine Zelle beim Lesen oder Schreiben dauert in Excel vergleichsweise lang.

    Besser wäre es stattdessen, wenn du am Anfang die Tabellen "Inventar" und "Prüfliste" in einem Array speicherst. Und außerdem auch die Ausgaben zunächst in einem Array sammelst, und erst am Ende in die Tabelle "Ausgabe" schreibst.

    Dadurch greifst du nur noch an 3 Stellen auf die Zellen zu und nicht mehr mehrere Millionen mal.

    VG
    Santa
     
    Mc Santa, 11. Mai 2017
    #4
  5. Hallo McSanta, ich bin bislang noch nicht mit Arrays in berührung gekommen, könntest du anführen wie ich die Prüfliste in ein Array schreibe und in diesem suche?
     
  6. Wegen CP gelöscht.
     
    EarlFred, 11. Mai 2017
    #6
  7. \@alle:

    die Frage wurde außerdem bei Clever-Exel und Herber gestellt. Dort gibt es auch schon Antworten incl. VBA-Code.

    mfg
     
    Fennek11, 11. Mai 2017
    #7
  8. For Schleife, schlechte Performance

    Finde ich einfach nur unverschämt, weil es jetzt eine Weile gedauert hat den Code umzuprogrammieren und aber die Lösung vermutlich nicht mehr gebraucht wird.

    Weil ich aber eh schon fertig bin:
    Code:
    Mit einem Dictionary würde es noch einmal (50.000x) schneller gehen, aber das spare ich mir nun.

    VG
    Santa
     
    Zuletzt von einem Moderator bearbeitet: 12. Januar 2021
    Mc Santa, 11. Mai 2017
    #8
  9. Hallo McSanta, ich wusste nicht, dass dies so gehandhabt wird und habe dies nach dem ersten Hinweis auch direkt umgesetzt, siehe eröffnungspost. Bitte unterstellt mir keine bösen Absichten.

    Außerdem habe ich in keinen der beiden anderen Foren eine Hilfestellung zu Arrays erhalten, ja es wurde versucht die bestehende Programmierung zu verbessern aber bislang ohne Erfolg.

    Desshalb an dieser Stelle zunächst ein unbeschreiblich großes DANKE an dich, denn deine Code funktioniert sehr gut und wird mir sehr helfen einen Einstieg in die Arrays zu erhalten.

    Ich habe den Testbereich auf 22.000 Zeilen Inventar und 22.000 Prüfzeilen ausgeweitet und hier braucht der code gute 5 Minuten.
     
  10. Hallo,

    danke, dass du unsere Auffassung berücksichtigst und die Kritik aufnimmst.

    Kurz zum Hintergrund: Rückmeldungen auf eine gegebene Antwort sind sehr wichtig, denn sie zeigen allen zukünftigen Lesern was funktioniert und was nicht. Und außerdem sind sie für uns im Prinzip der einzige Lohn *Smilie
    Die Erfahrung zeigt leider einfach, dass diese Rückmeldungen fast immer ausbleiben, wenn jemand anfängt gleichzeitig an mehreren Stellen zu fragen. Insbesondere sieht man häufig den Fall, dass in Forum A eine Lösung präsentiert wird, diese aber nicht an alle anderen Foren B, C und D weitergegeben wird. Dabei wird dann vergessen, dass jemand vielleicht in Zukunft Forum B findet und aber keine Lösung zu seinem Problem, obwohl es eine geben könnte.
    Du bist nun ein gutes Beispiel dafür, dass es auch anders gehen kann, allerdings bist du damit in der Minderheit. Daher ist das gleichzeitige Fragen an verschiedenen Stellen fast nirgendwo gern gesehen.

    Nach dem langen Text jetzt noch meine neue Lösung:
    Code:
    Bitte teste sie an deiner Tabelle und gib kurz Rückmeldung, ob alles funktioniert und wie lange der Code zum Durchlaufen braucht.

    VG
    Santa
     
    Mc Santa, 11. Mai 2017
    #10
Thema:

For Schleife, schlechte Performance

Die Seite wird geladen...
  1. For Schleife, schlechte Performance - Similar Threads - For Schleife schlechte

  2. For Next Schleife

    in Microsoft Excel Hilfe
    For Next Schleife: Hallo zusammen, da bin ich wieder und wie kann es anders sein mit einem Problem. Ich habe eine Tabelle (im Anhang) dort soll die Werte in Zellen a/b/f kopiert werden und in die erste frei Zeile...
  3. Access For next Schleife

    in Microsoft Access Hilfe
    Access For next Schleife: Ich habe in einer Tabelle meine Spieler mit einer Spielernummer enthalten. Jeder Spieler hat als Bericht ein "Stammblatt", welches mit der Spielernummer aufgerufen wird. Ich möchte jetzt gerne...
  4. For Each Schleife Anstatt ActiveSheet festen Tabellenblattnamen benutzen

    in Microsoft Excel Hilfe
    For Each Schleife Anstatt ActiveSheet festen Tabellenblattnamen benutzen: Hallo , habe folgende Schleife geschrieben : Dim rngBereich As Range Dim rngZelle As Range Sub Test() Set rngBereich = ActiveSheet.Range(ActiveSheet.Cells(1, 1), _...
  5. For-Next-Schleife für Textfeldübertragung

    in Microsoft Access Hilfe
    For-Next-Schleife für Textfeldübertragung: Hallo zusammen, ich habe 20 Textfelder (txt1 bis txt20) und muss die in 20 andere Textfelder (txt1S bis txt20S) übertragen. Nun habe ich mir gedacht, dass ich das mit einer For-Next-Zähler machen...
  6. For Schleife nicht initialisiert

    in Microsoft Access Hilfe
    For Schleife nicht initialisiert: Hi, bräuchte dringend Hilfe. Ich sende per folgenden Befehl Emails raus.(per cdo) Blos jetzt auf einmal bringt er mir den Laufzeitfehler 92 mit For Schleife nicht initalisiert. Code: Option...
  7. Glücksrad mit VBA und For-Schleifen

    in Microsoft Excel Hilfe
    Glücksrad mit VBA und For-Schleifen: Hallo zusammen! Da ich hier immer Hilfe finde wende ich mich mal wieder mit folgendem Problem an euch: Ich möchte in Excel etwas auslosen. Das ansich ist auch kein Problem. Damit es etwas...
  8. "find and replace" mit "for-Schleife" kombinieren

    in Microsoft Word Hilfe
    "find and replace" mit "for-Schleife" kombinieren: Guten Tag miteinander, Ich bin grade dabei ein kleines Programm zu erstellen, dass alphabetisch durchgearbeitet wird und jedesmal eine Ersetzung durchführt. Hier ist der Code: Sub...
  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