Anzeige
Archiv - Navigation
1560to1564
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

Hunderte von Formeln = langsam -> Bessere Lösung?

Hunderte von Formeln = langsam -> Bessere Lösung?
31.05.2017 10:24:08
Formeln
Hallo zusammen,
ich habe eine Excel Datei mit ca. 8000 befüllten Zeilen und in den Spalten sind neben standardmäßgen Werten diverse SVerweise, Wenn-Formeln und Verkettungen.
Diese ganzen Formeln machen die Excel sehr sehr träge, sodass ein Arbeiten damit keinen Spaße macht. Außerdem blasen die Formeln die Dateigröße total auf.
Hat hier jemand Tipps wie ich (ggf. über VBA), die Datei wieder handlebar bekomme?
Ich habe schon überlegt, ob eine Lösung wäre sämtliche Formeln bei Bedarf "per Knopfdruck" auszuführen und als Werte einzufügen um dann damit weiterzuarbeiten.
Danke und Grüße

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
SVerweise optimieren
31.05.2017 10:48:56
Daniel
Hi
das wäre eine Mögliche Lösung.
Formeln per VBA einfügen, dann Kopieren und als Wert einfügen.
Ist dann sinnvoll, wenn die Werte nur zu bestimmten Zeitpunkten aktualisiert werden müssen.
Allerdings sollte man auch mal genauer auf das Formelwerk schauen.
SVerweise werden beispielsweise deutlich schneller ausgeführt, wenn man die Suchmatrix (2. Parameter) aufsteigend sortiert und man den SVerweis mit 4. Parameter = Wahr verwenden kann.
Verwendet man viele SVerweise mit gleichem Suchbegriff und gleicher Suchmatrix, kann es sinnvoll sein in einer Hilfsspalte die Zeilennummer der Fundstelle in einer Hilfsspalte zu berechnen und dann die SVerweise durch Index und die Referenz auf die Zeilennummer zu ersetzen.
das ist auch sinnvoll, wenn man mit VBA arbeitet und die Formeln durch Werte ersetzt.
Schließlich ist es ja gut, wenn das Makro nur Bruchteile von Sekunden rechnet.
Außerdem kann man dann die Hilfsspalten wieder löschen und die Sortierungen wieder rückgängig machen, falls diese in den Quelldaten nicht dauerhaft vorhanden sein sollen.
Gruß Daniel
Anzeige
AW: SVerweise optimieren
31.05.2017 11:42:45
Hendrik
Servus,
wenn du die Formeln nicht immer aktualisieren willst könntest Du auch auf die automatische Berechnung der Formeln verzichten. Du könntest die Berechnung dann zum Beispiel über einen ActivX-Steuerelement aktivieren oder deaktivieren.
Sub DeinCode()
Application.ScreenUpdating = False 'Bildschirmaktualisierung ausschalten
Application.Calculation = xlCalculationManual 'automat.Berechnung ausschalten
'***Deine Anweisungen***
Application.Calculation = xlCalculationAutomatic 'automat.Berechnung einschalten
Application.ScreenUpdating = True 'Bildschirmaktualisierung einschalten
End Sub
LG
Hendrik
Anzeige
AW: SVerweise optimieren
31.05.2017 11:42:45
Hendrik
Servus,
wenn du die Formeln nicht immer aktualisieren willst könntest Du auch auf die automatische Berechnung der Formeln verzichten. Du könntest die Berechnung dann zum Beispiel über einen ActivX-Steuerelement aktivieren oder deaktivieren.
Sub DeinCode()
Application.ScreenUpdating = False 'Bildschirmaktualisierung ausschalten
Application.Calculation = xlCalculationManual 'automat.Berechnung ausschalten
'***Deine Anweisungen***
Application.Calculation = xlCalculationAutomatic 'automat.Berechnung einschalten
Application.ScreenUpdating = True 'Bildschirmaktualisierung einschalten
End Sub
LG
Hendrik
Anzeige
AW: Hunderte von Formeln = langsam -> Bessere Lösung?
31.05.2017 13:30:35
Formeln
Hallo zusammen,
ich habe folgenden Code für SVWERWEISE gefunden und bräuchte noch etwas Hilfe:
Sub vba_sverweis()
[D2:D10] = WorksheetFunction.VLookup([A3:A10], Sheets("Tabelle2").[A2:B18], 2, False)
' nachfolgender Code ersetzt #NV mit leer
'On Error Resume Next 'falls mal keine Fehler sind
'[D2:D10].SpecialCells(xlCellTypeConstants, 16).ClearContents
' On Error GoTo 0
End Sub
Wie kann ich den Code dahingehend anpassen, dass der erste Parameter in Spalte A2-A? nur den SVERWEIS in den Zellen macht, die nicht leer sind und dann auch nur in den sichtbaren (gefilterten) Zellen?
Wenn ich nun mehrere, bspw. 5, SVERWEISE habe, muss ich dann einfach das Makro 5x kopieren und entsprechend anpassen?
Danke und Grüße
Marcel
Anzeige
AW: Hunderte von Formeln = langsam -> Bessere Lösung?
31.05.2017 15:26:27
Formeln
Hi Marcel
Range("A2:A" & Rows.Count).SpecialCells(xlVisible).SpecialCells(xlCellTypeConstants) = ...
cu
Chris
AW: Hunderte von Formeln = langsam -> Bessere Lösung?
31.05.2017 16:48:53
Formeln
Hi Chris,
ich bin mir nicht sicher aber müsste nicht der zweite Teil nach VLookup angepasst werden?
Im Prinzip soll der SVerweis folgendes machen:
Ergebnis des Sverweises soll ab D2 bis dorthin stehen, wo in Spalte A (dem Parameter) noch was drin steht.
Parameter 1 (Suche): Spalte A2 bis A8000
Parameter 2 (Suchmatrix): A:B
Parameter 3 (auszuwerfender Wert): 2
Parameter 4: Falsch
Das mit den in den nur sichtbaren Zellen war Blödsinn von mir. Der SVerweis soll komplett von D2 bis D? durchlaufen.
Wenn ich den Code von dir wie folgt einfüge erhalte ich eine Fehlermeldung: "Das Element mit dem angegebenen Namen wurde nicht gefunden".
Sub vba_sverweis()
Range("D2:D8000" & Rows.Count).SpecialCells(xlVisible).SpecialCells(xlCellTypeConstants) =  _
WorksheetFunction.VLookup([A2:A8000], Sheets("Tabelle2").[A:B], 2, False)
End Sub
Danke schon mal und Grüße
Marcel
Anzeige
AW: Hunderte von Formeln = langsam -> Bessere Lösung?
31.05.2017 17:15:57
Formeln
Hi Marcel
Ich hoffe das war eine rhetorische Frage? :)
Probier mal...
Range("D2:D8000").SpecialCells(xlCellTypeConstants) = ...
cu
Chris
AW: Hunderte von Formeln = langsam -> Bessere Lösung?
01.06.2017 08:56:09
Formeln
Hi Chris,
natürlich war das nur ´ne rhetorische Frage... ;)
Makro sieht jetzt so aus:
Sub vba_sverweis()
Range("D2:D8000").SpecialCells(xlCellTypeConstants) = WorksheetFunction.VLookup([A2:A8000],  _
Sheets("Tabelle2").[A:B], 2, False)
End Sub

(Dieser komische Unterstrich ist natürlich nicht drin - den macht´s hier automatischrein.)
Trotzdem immer:
Laufzeitfehler 1004
Keine Zellen gefunden.
Kannst Du bitte nochmal drauf schauen?
Danke und Grüße
Marcel
Anzeige
AW: Hunderte von Formeln = langsam -> Bessere Lösung?
01.06.2017 10:10:51
Formeln
Hi Marcel
Wenn es keine Konstanten gibt (= deine Vorgabe), dann brauchst du auch keinen Sverweis.
https://www.herber.de/bbs/user/113944.xlsm
Solange die Liste nicht gefiltert ist, läuft es. Sofern auch ausgeblendete Zellen bearbeitet werden müssen, bräuchte es vermutlich eine Schleife. Aber eine solche Schleife wäre m.E. kontraproduktiv d.h. die Performance würde wahrscheinlich noch schlechter werden wie vorher.
cu
Chris
AW: Hunderte von Formeln = langsam -> Bessere Lösung?
01.06.2017 14:02:42
Formeln
Hi Chris,
ich glaube, ich habe herausgefunden, woran es liegt: Das Makro fügt ja nur in Spalte D etwas ein, wenn da ein Wert drin steht. Kann das sein?
Es sollte aber auch dann laufen, wenn die Zellen leer sind. Die Abhängigkeit sollte von A sein (also wenn A leer dann kein SVerweis).
Kannst Du da nochmal helfen?
Danke für Deine Geduld!
Grüße
Marcel
Anzeige
AW: Hunderte von Formeln = langsam -> Bessere Lösung?
01.06.2017 14:08:43
Formeln
Hi Marcel
ja ich dachte das wolltest du. Aber OK, dann so..
Range("A2:A8000").SpecialCells(xlCellTypeConstants).Offset(0, 3) =
cu
Chris
Danke!
01.06.2017 16:42:02
Marcel
Perfekt! So funktioniert es!
Vielen Dank für Deine Unterstützung!!!
Danke für die Rückmeldung owT
01.06.2017 16:44:52
ChrisL
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige