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

Rechnen - Excel oder VBA?

Rechnen - Excel oder VBA?
Stefan
Hallo,
ich habe eine Excel Datei in welcher die Umsätze von ca 6000 Materialien aus zwei verschiedenen Systemen abgeglichen werden müssen.
Die einzelnen Materialien müssen auf 16 verschiedene Kriterien hin abgeglichen werden (Umsätze in Lokaler Währung, Umsätze in EUR, Umsätze vergangenes Jahr, Budget etc...)
Ich habe hierfür eine Tabelle1 erstellt in welcher ich für jede Spalte eine Formel definiert habe, wo ich mittels Sverweis mir die Werte aus System 1 und System 2 ziehe und die Differenz berechne. Es werden dann die Materialien aus System1 in die Tabelle1 kopiert und Excel beginnt für jede Zeile nun 16 Berechnungen
D.H. wir kommen hier bei ca 6000 Materialien und 16 Berechnungen / Material auf ca 100.000 Berechnungen die von Excel durchgeführt werden müssen
Diese dauern zumindest auf meinem Rechner gut 10 min und ich sehe in der Statusleiste von EXCEL immer "Berechnung wird ausgeführt: (4 Prozessor(en)): X%"
Meine Frage:
Gibt es eine Möglichkeit die Berechnungen schneller durchführen zu lassen? Kann man mit VBA schneller rechnen als mit Excel selber?
Habe ich Alternativen? Access? Da wäre dann die Frage wie ich die Daten aus Excel ins Access bekomme, denn die Daten werden über ein Excel addin vom softwarehersteller direkt aus den Systemen gezogen
Vielen Dank für eure hilfe
Beste Grüße
Stefan

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Rechnen - Excel oder VBA?
08.08.2012 14:56:55
Rudi
Hallo,
Kann man mit VBA schneller rechnen als mit Excel selber?
Normalerweise sind Formeln schneller als VBA.
Die Formeln/ Beispielmappe wären interessant. Da gibt es oft Optimierungspotenzial.
Gruß
Rudi
AW: Rechnen - Excel oder VBA?
08.08.2012 16:37:40
Stefan
Hallo Rudi,
ich hab mal eine Datei als Beispiel hochgeladen.
https://www.herber.de/bbs/user/81332.xlsm
Damit das ganze "ins Rollen" kommt, musst du den Button auf dem ersten Tabellenblatt einmal betätigen
In der Beispieldatei geht das ganze ziemlich fix, das liegt aber daran das ich hier nur 1000 Zeilen habe (musste ich machen wegen der 300KB Begrenzung)
die Original Datei hat wie gesagt über 6000 Zeilen und da dauert es bis zu 10 min teilweise
Beste Grüße
Stefan
Anzeige
AW: Rechnen - Excel oder VBA?
08.08.2012 16:51:07
Stefan
für den Fall, dass dir das mit dem Makro zu unsicher ist hier mal beispielhaft die formel die ich verwende
=WENN(ODER(UND(ISTLEER(SVERWEIS([@[Verification Key]];'SAP Sales'!$A$3:$U$1048576;13;FALSCH)); ISTFEHLER(SVERWEIS([@[Verification Key]];'CONS - Sales'!$A$5:$S$1048576;1;FALSCH))); UND(SVERWEIS([@[Verification Key]];'SAP Sales'!$A$3:$U$1048576;13;FALSCH)=0; ISTFEHLER(SVERWEIS([@[Verification Key]];'CONS - Sales'!$A$5:$S$1048576;1;FALSCH))));0; SVERWEIS([@[Verification Key]];'SAP Sales'!$A$3:$U$1048576;13;FALSCH)-SVERWEIS([@[Verification Key]]; 'CONS - Sales'!$A$5:$S$1048576;7;FALSCH))
kurz zu den erklärungen: ich muss zwei dinge abfangen, damit der sverweis nicht auf einen fehler läuft. Das ist leider dadurch begründet das wir mit zwei systemen arbeiten die jeweils ein etwas anderes handling haben
ich muss prüfen ob im Tabellenblatt "SAP Sales" die ermittelte Zelle leer ist und der Sverweis im Tabellenblatt CONS - Sales auf einen Fehler läuft oder ob die ermittelte Zelle in SAP Sales "0" ist und der SVERWEIS im Tabellenblatt CONS - Sales auf einen Fehler läuft.
Wenn eine dieser beiden Bedingungen zutrifft, dann soll er in die zelle eine "0" Schreiben und sonst soll er die Differenz der beiden ermittelten Zahlen berechnen
ich weiß aktuell nicht, wie ich die Formel verschlanken könnte. Die oder(und())Abfragen kann ich leider nicht entfernen und der sverweis ist relativ simpel gehalten
Beste Grüße
Anzeige
AW: Rechnen - Excel oder VBA?
09.08.2012 10:17:55
Rudi
Hallo,
IstFehler(SVerweis()) solltest du nur 1x prüfen.
Außerdem musst du Istleer(sverweis()) nicht prüfen, da auch der Sverweis() auf eine leere Zelle 0 ergibt.
Die Prüfung auf 0 reicht also.
Und lass den SVERWEIS() über ganze Spalten laufen. Ist nicht schädlich und erhöht die Übersichtlichkeit.
Ändere deine Formeln entsprechend.
=WENN(ODER(SVERWEIS([@[Verification Key]];'SAP Sales'!$A:$U;13;FALSCH)=0; ISTFEHLER(SVERWEIS([@[Verification Key]];'CONS - Sales'!$A:$S;1;FALSCH)));0; SVERWEIS([@[Verification Key]];'SAP Sales'!$A:$U;13;FALSCH)-SVERWEIS([@[Verification Key]]; 'CONS - Sales'!$A:$S;7;FALSCH))
Sollte schon was bringen.
Außerdem könntest du Istfehler(SVerweis)) in eine Hilfsspalte (Z) einbauen, dann prüfst du das nur 1x und nicht wie jetzt 28x in jeder Zeile.
Z6: =ISTFEHLER(SVERWEIS(A6;'CONS - Sales'!A:A;1;))
D6 =WENN(ODER(Z6;SVERWEIS(A6;'SAP Sales'!$A:$U;13;FALSCH)=0);0;SVERWEIS(A6;'SAP Sales'!$A:$U;13;FALSCH)-SVERWEIS(A6;'CONS - Sales'!$A:$S;7;FALSCH))
Den Rest entsprechend.
Gruß
Rudi
Anzeige
AW: Rechnen - Excel oder VBA?
08.08.2012 16:21:38
fcs
Hallo Stefan,
das Problem dürfte sein, dass du in die einzelnen Formeln sich wiederholende SVERWEIS-Formeln eingebaut hast, so dass Excel meherfach die gleichen Werte berechnen muss.
Es dürfte besser funktionieren, wenn du für System1 alle benötigten Daten in ein Blatt kopierst und nicht nur die Materialien. Daneben legst du dann Formeln um zu den Materialien per SVERWEIS die Daten aus System2 zu holen. Daneben dann oder auf einem separaten Tabellenblatt die 16 Spalten mit den Berechnungen. Dadurch sollte die Formelstruktur einfacher werden und in der Berechnung schneller funktionieren.
Wie von Rudi bereits angemerkt sind die Excel-Tabellenfunktionen im allgemeinen schneller als entsprechende VBA-Funktionen.
Gruß
Franz
Anzeige
Ich weiß ja nicht, ob das wirklich so ist mit ...
09.08.2012 04:18:35
Luc:-?
…den Wiederholungen, Franz,
in der xlHilfe steht, dass Fmln intern optimiert wdn (d.m. wohl umgestellt wdn können). Das könnte auch das betreffen. Die ersatzweise Verwendung von benannten FmlTeilen (b.Wdholung) dürfte dann eher der Kürzung der FmlLänge als der Rechengeschwindigkeit zugute kommen.*
* Übrigens kann man für so etwas anstelle von Namen auch eine „Erinnerungs“-udFkt verwenden!
Gruß Luc :-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige