Rechengeschwindigkeit VBA-Programm Excel

Diskutiere und helfe bei Rechengeschwindigkeit VBA-Programm Excel im Bereich Microsoft Office im Windows Info bei einer Lösung; Hallo, ich habe ein VBA-Makro geschrieben, um Daten zusammenzufassen und aufzusummieren, die aus mehreren Eingangsdateien stammen. Da das Programm... Dieses Thema im Forum "Microsoft Office" wurde erstellt von Inter-nett166, 8. September 2018.

  1. Rechengeschwindigkeit VBA-Programm Excel


    Hallo,

    ich habe ein VBA-Makro geschrieben, um Daten zusammenzufassen und aufzusummieren, die aus mehreren Eingangsdateien stammen. Da das Programm relativ lange läuft, habe ich einzelne Funktionen herausgenommen, um mit Testprogrammen Möglichkeiten zur Geschwindigkeitsoptimierung zu prüfen.


    In einem dieser Testprogramme werden folgende Funktionen ausgeführt:

    1. Eine externe Daten mit den zu bearbeitenden Daten wird im Programm geöffnet. Die externe Datei enthält ein Arbeitsblatt mit einer Tabelle (ListObject) mit ca. 115.000 Zeilen und 36 Spalten.
    2. Bei dem ersten Test werden alle Daten in ein Array gelesen, zwei Zellen in einer Schleife über alle Zeilen zu einer Zelle für einen SVERWEIS zusammengefasst und der zusammengefasste Wert in die Excel-Tabelle zurückgeschrieben.
    3. In einem zweiten Test wird die unter 2. beschriebene Funktion mit Excel-Formeln für das ListObject ausgeführt.

    Eine Messung der Zeiten ergibt für das Programm eine Gesamtdurchlaufzeit von ca. 42 sec, die Array-Zusammenfassung unter 2. benötigte ca. 12 sec, die Excel-Formeln unter 3. benötigten ca. 28 sec; Programmierung über Array also eindeutig schneller.


    Da ich festgestellt hatte, dass die Laufzeiten beim Testen mit Breakpoints andere Werte brachten, habe ich einen Stop-Befehl eingefügt. Dieser Stop-Befehl steht nach dem Öffnen der externen Datei und vor der ersten Test-Funktion. In diesem Fall wurde die Laufzeit für die Array-Zusammenfassung auf ca. 3 sec und die Berechnung über Excel-Formeln auf ca. 2 sec reduziert! Die Gesamtlaufzeit war natürlich in diesem Fall von der Reaktionsgeschwindigkeit abhängig, mit der nach dem Stop-Befehl das Programm fortgesetzt wurde.

    Meine Vermutung ist, dass nach dem Stop-Befehl der Interpreter den Rest des Programmes besser optimieren kann?

    Da ich einem Anwender nicht zumuten kann, ein durch einen Stop-Befehl angehaltenes Programm fortzusetzen, ist meine Frage, wie kann ich den Effekt der Zeitreduzierung per Programm steuern bzw. gibt es andere Optionen die Laufzeit zu reduzieren?

    Vielen Dank
     
  2. Inter-nett166 Win User

    Rechengeschwindigkeit VBA-Programm Excel

    Hallo Andreas,

    es ist gut möglich, dass ich mit der Vermutung daneben liege. Verstehen kann ich das Verhalten trotzdem nich.

    Du findest jetzt in der Mail an Dich eine angehängte Datei Test_PO, in der sich der Stop-Befehl befindet und den Du nach Bedarf ein- oder ausblenden kannst, um die Effekte zu beobachten. In der Datei DataTestPO findest Du die zugehörigen Test-Daten.

    Ich habe inzwischen noch weitere Prüfungen durchgeführt und ein für mich zufriedenstellendes Ergebnis gefunden. Das Programm findest Du in Test_PO_copy. Dort werden zuerst die Daten aus der Test-Datei in die Programmdatei Test_PO_copy kopiert und dann die
    vorher beschriebenen Operationen durchgeführt. In diesem Fall habe ich dann die kurzen erwünschten Laufzeiten.

    Gruß

    Inter-nett 166
  3. Andreas Killer Win User

    Rechengeschwindigkeit VBA-Programm Excel

    Meine Vermutung ist, dass nach dem Stop-Befehl der Interpreter den Rest des Programmes besser optimieren kann?
    Deine Vermutung ist völlig falsch.

    Dein Rechner hast div. Caches in denen die Daten für schnelleren Zugriff gehalten werden, das gleiche gilt für Speicher den ein Programm anfordert.

    Außerdem läuft Dein Programm in einem Multitasking-System... woher willst Du wissen das Du 100% der Leistung hast?

    Poste mal Deinen Code, bzw. besser noch eine Beispieldatei mit Daten zum Test, 12 Sekunden erscheinen mir recht lange, dann kuck ich mal ob sich da was machen läßt.

    Andreas.
  4. Inter-nett166 Win User

    Rechengeschwindigkeit VBA-Programm Excel

    Hallo Diego_B

    danke für den Hinweis, das werde ich machen. Dann kann die Anfrage aus diesem Forum entfernt werden.

    Gruß

    Inter-nett 166
  5. Diego_B Win User

    Rechengeschwindigkeit VBA-Programm Excel

    Hallo Inter-nett166,

    Danke für deine Nachricht.

    Ich würde dir empfehlen, Fragen zum Thema VBA in den Entwicklerforen zu stellen.

    Diese findest du unter diesem Link:

    https://social.msdn.microsoft.com/forums/de-de/home

    Dort sind eher Spezialisten zugegen, die sich täglich mit diesen Themen beschäftigen.

    Melde dich natürlich bei weiteren Fargen gerne wieder.

    Viele Grüße

    Diego B.
  6. BFWF Win User

    Parallelbetrieb Office 2003 und 2010

    Hallo Thomas,

    Excel und Word 2003 funktionieren bisher einwandfrei, bis auf den lästigen Windows Installer beim Start von Excel 2003,den man aber kurzerhand abbrechen kann.

    Gleiches gilt für Excel 2010.

    Da die VBA-Programme von Excel 2003 in Excel 2010 wegen unterschiedlicher VBA-Versionen nicht funktionieren, muss ich mit diesem Umstand wohl leben.

    Danke für deine Antwort

    Achim
  7. User Advert


    Hi,

    willkommen im Windows Forum!
Thema:

Rechengeschwindigkeit VBA-Programm Excel - Microsoft Office

Die Seite wird geladen...

Rechengeschwindigkeit VBA-Programm Excel - Similar Threads - Rechengeschwindigkeit VBA Programm

Forum Datum

Excel VBA

Excel VBA: Hallo zusammen,kann mir jemand mit einem Code behilflich sein,Ich habe in einer Tabelle Projektdaten eine Zeile die den Status Status_Contract eines Projektes beschreibt.Folgende Stati enthält die...
Microsoft Office 14. September 2024

Excel VBA

Excel VBA: Hallobenutze schon länger ein selbst geschriebenes Addin eine Berechnungsfunktion. Diese ist bei den AddIns Datei > Optionen > AddIn auch angezeigt und funktioniert auch über benutzerdefinierte...
Microsoft Office 9. Juni 2022

Excel - VBA

Excel - VBA: Hallo Zusammen! Kann mir jemand sagen, wie ich es einfacher gestallten kann? Ich muss dies von Zeile 2 bis 1915 machen. LG Nikola Sub WennDann If Range"G2" = "" Then Range"D2" = Range"H2"...
Microsoft Office 8. Oktober 2020

VBA in Excel

VBA in Excel: hallo, wenn ich auf entwicklertools gehe und möchte visual basic aufrufen bekomme ich nur eine grauen bildschirm bzw. kom ich nicht in den bearbeitungsmodus. wäre super wenn mir jemand...
Microsoft Office 17. Mai 2020

Excel VBA

Excel VBA: Liebe Community! Ich habe Office 365. Ich habe eine Excel Vorlage mit VBA Codes. Diese Vorlage hat jetzt 3 Jahre perfekt funktioniert. Vor 1 Woche hat es auch noch besten funktioniert. und...
Microsoft Office 5. Februar 2020

excel vba

excel vba: hi ich habe: Worksheets("test2").Range("b3").Copy Destination:=Worksheets("Mdax").Range("b20") was schön und gut funktioniert nur kann ich damit auch die Zielzelle definieren? In meinem...
Microsoft Office 24. Juli 2019

EXCEL-VBA.

EXCEL-VBA.: Wie splittet man den Bildschirm bei Programmtests in 1. Code-Fenster, 2. EXCEL-Arbeitsblatt. Ich weiß, dass es geht aber nicht wie. Heißen Dank!
Microsoft Office 10. Dezember 2018
Rechengeschwindigkeit VBA-Programm Excel solved
  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.