Hallo, ich nutze Windows 10 64bit, einen i7-7700, 16GB Arbeitsspeicher und Excel 64 Bit. Da ich momentan mit größeren Dateien [~100MB] arbeite habe ich festgestellt, dass Excel ständig hängt und langsam is, obwohl im Taskmanager nur 20% CPU und 2GB Arbeitsspeicher-Auslastung angezeigt wird. Zu den Datein: Hauptsächlich If-Else mit verschiedenen VBA-Skripten, welche aber nicht der Auslöser sind. Sollte in der 64-Bit variante nicht deutlich mehr Arbeitsspeicher verwendet werden können? Hat jemand eine Idee wo das Problem liegen kann? MfG Siebert
siebert schrieb: > Hat jemand eine Idee wo das Problem liegen kann? Zu gross? ;-) Mit 100MB bist du jenseits der Wohlfühlgenze von Excel. Es gibt natürlich ein paar Tuning-Möglichkeiten (=> Web), aber in dieser Dimension solltest du über eine Datenbank nachdenken.
Kann es sein, dass Excel nach wie vor nur GB verwalten kann und den Rest auslagern muss?
A. K. schrieb: > Mit 100MB bist du jenseits der Wohlfühlgenze von Excel. Was ist denn die Wohlfühlgrenze?
siebert schrieb: > A. K. schrieb: >> Mit 100MB bist du jenseits der Wohlfühlgenze von Excel. > > Was ist denn die Wohlfühlgrenze? 53x7 oder 12x31 Felder. Wenn Excel die Blätter neu berechnen muss, was auch passieren kann, wenn du mit VBA eine Zelle neu beschreibst, dann dauert es etwas.
siebert schrieb: > Hat jemand eine Idee wo das Problem liegen kann? An der falschen Anwendung für dein Problem. Sprich mal laut die Funktion von Excel aus: TABELLENKALKULATION Was steht da nicht drin? Dateiverarbeitung!
A. K. schrieb: > Es gibt > natürlich ein paar Tuning-Möglichkeiten Pandas (mit matplotlib, wenn gewünscht.)
Hallo siebert, siebert schrieb: > Hallo, > > ich nutze Windows 10 64bit, einen i7-7700, 16GB Arbeitsspeicher und > Excel 64 Bit. > > Da ich momentan mit größeren Dateien [~100MB] arbeite habe ich > festgestellt, dass Excel ständig hängt und langsam is, obwohl im Wobei ist es denn langsam? > Taskmanager nur 20% CPU und 2GB Arbeitsspeicher-Auslastung angezeigt > wird. > Zu den Datein: Hauptsächlich If-Else mit verschiedenen VBA-Skripten, > welche aber nicht der Auslöser sind. Warum bist Du Dir da so sicher? Wie werden Deine VBA-Skripte denn aufgerufen? > Sollte in der 64-Bit variante nicht deutlich mehr Arbeitsspeicher > verwendet werden können? > Hat jemand eine Idee wo das Problem liegen kann? Berechnungsmodus: Manuell oder automatisch?
Max M. schrieb: > siebert schrieb: >> nur 20% CPU > > Wieviele Cores verwendet Excel? Welche Excelversion nutzt Du? Parallele Tabellenberechnung mit mehreren Kernen wurde nämlich erst später mal drangefrickelt.
Peter M. schrieb: > Max M. schrieb: >> siebert schrieb: >>> nur 20% CPU >> >> Wieviele Cores verwendet Excel? > > Welche Excelversion nutzt Du? > Parallele Tabellenberechnung mit mehreren Kernen wurde nämlich erst > später mal drangefrickelt. Ich habe Excel 2016 64 Bit version. Aufgerufen werden die Funktionen über einen Button, der die Funktion über Call aufruft.Berechnungen stehen auf Manuell, sollen aber später auf automatisch laufen! Das Größte Problem ist, dass die Datei so riesig ist, weil ich viele WENN-Dann Funktionen benutze in einem 1000x1000 Feld. Diese brauche ich aber auf jeden Fall, da ich einen Wert in die Zelle schreiben muss, wenn der Wert größer als X ist und einen anderen, wenn der Zellwert kleiner ist. Oder gibt es dafür eine andere Möglichkeit? Würde es helfen, die Wenn dann funktion in VBA zu schreiben und nicht direkt als Formel in jede Zelle?
Achja, und mein Prozessor hat 8 Kerne, die ich in den Excel Optionen auch aktiviert habe.
siebert schrieb: > Das Größte Problem ist, dass die Datei so riesig ist, weil ich viele > WENN-Dann Funktionen benutze in einem 1000x1000 Feld. Diese brauche ich > aber auf jeden Fall, da ich einen Wert in die Zelle schreiben muss, wenn > der Wert größer als X ist und einen anderen, wenn der Zellwert kleiner > ist. Was ist ein "1000x1000 Feld"? Soll das eine Tabelle sein? Dann schreibe bitte auch Tabelle. In ein Feld (damit ist eine ZELLE gemeint) kann man mit WENN-Dann Funktionen keinen Wert reinschreiben. Denn es steht ja schon einer drin. Nämlich der, mit dem über "WENN-Dann Funktionen" verglichen wird. Ich verstehe jedenfalls nicht, was du da tust :(
nehmen wir an ich habe in A1:B2 werte stehen, die mit x verglichen werden sollen dann schreibe ich in A5:B6 Wenn(A1>X;1;"") also A1 > X, dann schreibe eine 1 in A5, sonst lasse A5 leer das selbe dann für B5, A6 und B6. und das eben in einer "Tabelle" mit 1000 Zeilen und Spalten.
Für 1000000 Formeln wird der von Excel allokierbare Arbeitsspeicher nicht reichen. Lass die Formeln halt weg und trag die Werte per VBA ein. Länger als ein paar Sekunden dauert das nicht, und braucht so gut wie keinen Speicher.
Übermäßig viel verlinktes Zeug, was erst in den RAM geholt werden muß, kostet auch Zeit.
Meine Erfahrung ist, daß viele Anwendungen von einem schnellen Datenträger am meisten profitieren, also einer SSD. Die Nachrüstung von RAM ist dagegen meistens enttäuschend, ein Geschwindigkeitszuwachs bestenfalls homöopatisch.
Peter D. schrieb: > Meine Erfahrung ist, daß viele Anwendungen von einem schnellen > Datenträger am meisten profitieren, also einer SSD. Früher (tm) hat man für solche Fälle eine RAM-Disk eingerichtet.
siebert schrieb: > Achja, und mein Prozessor hat 8 Kerne, die ich in den Excel > Optionen auch aktiviert habe. Ein I7 7700 hat meines Wissens nach 4 Kerne + Hyperthreating. 100Mibyte Exceltabellen sind aus meiner Sicht etwas extrem. Denke da sollte man darüber nachdenken, ob es wirklich Sinn macht, sowas noch in Excel zu handhaben.
Ich Nicht schrieb: > 100Mibyte Exceltabellen sind aus meiner Sicht etwas extrem. Denke da > sollte man darüber nachdenken, ob es wirklich Sinn macht, sowas noch in > Excel zu handhaben. ich vermute das der TO halt nur excel kennt, datenbanken/sql aber nicht. da wird das zeug halt in excel gemacht. ob er gewillt ist oder es sich lohnt sich in etwas anderes einzuarbeiten… ist halt aufwändig.
Christobal M. schrieb: > ich vermute das der TO halt nur excel kennt, datenbanken/sql aber nicht. Ich sehe den Mehrwert von Datenbanken an dieser Stelle nicht. Für Matrizenoperationen sind die von Yalu genannten Software-Pakete leistungsfähiger. Bei Matlab beispielsweise weiß ich, dass z.B. Matrizen komplett in das RAM passen müssen, weil Matlab da "in-memory" operiert. Ein Teil der schnellen Matrizenoperationen rührt auch daher. Über SAP habe ich gelesen, dass die für "in-memory" so ein Extraprodukt "Hana"? oder so ähnlich anbieten. > da wird das zeug halt in excel gemacht. > > ob er gewillt ist oder es sich lohnt sich in etwas anderes > einzuarbeiten… ist halt aufwändig.
siebert schrieb: > Hat jemand eine Idee wo das Problem liegen kann? Wie Du siehst, hast Du bisher Null Hinweise zur Diagnose Deines Problems innerhalb Deines Rahmens "Excel" bekommen. Selbst der Dir gelieferte VBA-Code beantwortet Deine Frage nicht.
:
Bearbeitet durch User
Kann gut sein, dass in seinem Fall eine Datenbank keinen Sinn ergibt. Lösungen hängen schon ein wenig vom konkreten Problem ab, und wenn davon zu wenig bekannt ist... Peter M. schrieb: > Über SAP habe ich gelesen, dass die für "in-memory" so ein Extraprodukt > "Hana"? oder so ähnlich anbieten. SAP S/4 basiert auf HANA, einem in-memory Datenbanksystem. Das ältere R3 verwendet klassische Datenbanksysteme. Beide Ansätze haben ihre eigenen Probleme.
:
Bearbeitet durch User
Peter M. schrieb: > siebert schrieb: >> Hat jemand eine Idee wo das Problem liegen kann? > > Wie Du siehst, hast Du bisher Null Hinweise zur Diagnose Deines Problems > innerhalb Deines Rahmens "Excel" bekommen. > > Selbst der Dir gelieferte VBA-Code beantwortet Deine Frage nicht. Doch: Probleme mit dem Speicher > Mein Excel ist auch in die Knie gegangen Beitrag "Re: Excel: If-Else Alternativen" Da der Thread mit dem VBA-Skript mittlerweile gesperrt ist (super"tolle" Leistung der Moderation, so macht Hilfe "Spaß") - hier nochmal:
1 | Sub Analyselauf() |
2 | Dim rngErgebnisTabelle As Range |
3 | Dim rngLeseTabelle As Range |
4 | Dim iCalcMerker As Long |
5 | Dim iColumn As Long |
6 | Dim iRow As Long |
7 | |
8 | 'Das muss von Hand angepasst werden |
9 | Const cBereich_LeseTabelle = "A1:B2" |
10 | Const cBereich_ErgebnisTabelle = "A5:B6" |
11 | Const cVergleichswert = 5 |
12 | |
13 | 'Das Script bezieht sich auf das aktuell geöffnete Sheet |
14 | With ActiveSheet |
15 | |
16 | 'Autoberechnung aus |
17 | iCalcMerker = Application.Calculation |
18 | Application.Calculation = xlCalculationManual |
19 | |
20 | 'Initialisieren |
21 | Set rngLeseTabelle = .Range(cBereich_LeseTabelle) |
22 | Set rngErgebnisTabelle = .Range(cBereich_ErgebnisTabelle) |
23 | |
24 | 'Müllfilter |
25 | If (rngLeseTabelle.Columns.Count <> rngErgebnisTabelle.Columns.Count) _ |
26 | Or (rngLeseTabelle.Rows.Count <> rngErgebnisTabelle.Rows.Count) Then |
27 | MsgBox "Beide Tabellen müssen gleich groß sein", vbCritical |
28 | Stop |
29 | End If |
30 | |
31 | 'ErgebnisTabelle löschen |
32 | rngErgebnisTabelle.Cells = "" |
33 | |
34 | 'ErgebnisTabelle neu bestücken |
35 | For iRow = 1 To rngLeseTabelle.Rows.Count |
36 | |
37 | 'Nur fürs Auge: Zeilenwechsel anzeigen |
38 | rngErgebnisTabelle.Cells(iRow, 1).Select |
39 | DoEvents |
40 | |
41 | 'Zelle in Lesetabelle analysieren und Ergebnis in ErgebnisTabelle schreiben |
42 | For iColumn = 1 To rngLeseTabelle.Columns.Count |
43 | If rngLeseTabelle.Cells(iRow, iColumn) > cVergleichswert Then |
44 | rngErgebnisTabelle.Cells(iRow, iColumn) = 1 |
45 | Else |
46 | rngErgebnisTabelle.Cells(iRow, iColumn) = "" |
47 | End If |
48 | Next iColumn |
49 | Next iRow |
50 | End With |
51 | |
52 | 'Autoberechnung wiederherstellen |
53 | Application.Calculation = iCalcMerker |
54 | End Sub |
***** Numpy (ebenfalls im gesperrten Threadt) sieht aber auch gut aus. Sehr gut sogar. Das kannte ich noch gar nicht. Wer über "Kerne" und Cores reden will, hat im übrigen nie verstanden, was Excel wirklich ist: Ein nettes und meist brauchbares Spielzeug, aber ein sehr kleines.
Hallo Fäzes und siebert, Fäzes, der Heilige Stuhl schrieb: > Da der Thread mit dem VBA-Skript mittlerweile gesperrt ist (super"tolle" > Leistung der Moderation, so macht Hilfe "Spaß") ich finde das gut! Warum auch fächert siebert das Thema auf zwei Fäden auf?! siebert schrieb: > Da ich momentan mit größeren Dateien [~100MB] arbeite habe ich > festgestellt, dass Excel ständig hängt und langsam is, obwohl im > Taskmanager nur 20% CPU und 2GB Arbeitsspeicher-Auslastung angezeigt > wird. Wie benimmt sich die Neuberechnungs-Fortschrittsanzeige (zeigt die Neuberechnung in Prozent an)? Wird die Tabelle auch im manuellen Modus ständig neu berechnet?
:
Bearbeitet durch User
Peter M. schrieb: > ich finde das gut! Klar findest du das gut ( ^^ ) Peter M. schrieb am 24.08.2018 10:33 Beitrag "Re: Excel: If-Else Alternativen" 24.08.2018 11:38: Verschoben durch Moderator keine Fragen mehr
siebert schrieb: > ich nutze Windows 10 64bit, einen i7-7700, 16GB Arbeitsspeicher und > Excel 64 Bit. So what... Der neueste MS-Shice, ist aber immerhin nicht viel schlechter als der alte... > Da ich momentan mit größeren Dateien [~100MB] arbeite habe ich > festgestellt, dass Excel ständig hängt und langsam is, obwohl im > Taskmanager nur 20% CPU und 2GB Arbeitsspeicher-Auslastung angezeigt > wird. > Zu den Datein: Hauptsächlich If-Else mit verschiedenen VBA-Skripten, > welche aber nicht der Auslöser sind. > > > Sollte in der 64-Bit variante nicht deutlich mehr Arbeitsspeicher > verwendet werden können? Klar, kann es und tut es auch. Aber wieso sollte es in deinem Fall? Wenn die verschissene Datei ~100MB groß ist, wird deren Repräsentation im Speicher wahrscheinlich sogar viel kleiner sein, nur bei sehr dicht besetzten Tabellen konnte sie eventuell größer werden. Warum sollte also Excel unwahrscheinliche Mengen von noch mehr Speicher belegen, wenn es mit ~100MB zur Ablage der Daten im Speicher auskommt? Und was sollte das bringen? > Hat jemand eine Idee wo das Problem liegen kann? Das Problem kann nur sein: Du hast keine Ahnung. Nicht von Windows, nicht von Excel und auch sonst von nix. Das Problem werden wohl die VBA-Scripte sein. Egal ob von dir selber verbrochen oder von dir selber bloß nicht verstanden. Warum? Ganz klar: mit einem hinreichend dämlich programmierten Script kann man Excel jederzeit komplett unbenutzbar machen. Nur unter Benutzung der Excel-Oberfläche muß man hingegen schon Fachmann sein, um selbiges zu erreichen. Und du hörst dich irgendwie nicht wie ein Fachmann an...
Hallo c-hater, c-hater schrieb: > Das Problem werden wohl die > VBA-Scripte sein. Nein. siebert hat erklärt, dass er den VBA-Code schaltflächengesteuert aufruft. Damit entfällt der per Schaltfläche aufgerufene Code als Ursache. Um ganz sicher zu sein, könnte er noch einen breakpoint auf den Code-Anfang setzen oder den Befehl "Beep" einfügen. c-hater schrieb: > Wenn > die verschissene Datei ~100MB groß ist, wird deren Repräsentation im > Speicher wahrscheinlich sogar viel kleiner sein, nur bei sehr dicht > besetzten Tabellen konnte sie eventuell größer werden. Hier bin ich im Zweifel. Die 100MB sind bei Verwendung des xlsx-Formats gepacktes XML, die entpackte Binär-Darstellung im Speicher könnte mehr Platz benötigen. Ich kann das aber im Moment nicht prüfen, weil ich nur ein Uralt-Excel zu hause in Betrieb habe. c-hater schrieb: >> Hat jemand eine Idee wo das Problem liegen kann? > > Das Problem kann nur sein: Du hast keine Ahnung. Nicht von Windows, Das ist jetzt nicht so zielführend. Die Aussage ist banal und gilt immer. Jeder der fragt, hat per Definition keine Ahnung, ich auch. Wer fragt, erhofft sich Erleuchtung. Bist Du eigentlich der, der mit dem Rasenmäher über die Artikelsammlung gefahren ist?
Beitrag #5534281 wurde vom Autor gelöscht.
c-hater schrieb: > Das Problem kann nur sein: Du hast keine Ahnung. Nicht von Windows, > nicht von Excel und auch sonst von nix. Das Problem werden wohl die > VBA-Scripte sein. Egal ob von dir selber verbrochen oder von dir selber > bloß nicht verstanden. > > Warum? Ganz klar: mit einem hinreichend dämlich programmierten Script > kann man Excel jederzeit komplett unbenutzbar machen. Nur unter > Benutzung der Excel-Oberfläche muß man hingegen schon Fachmann sein, um > selbiges zu erreichen. Ich habe oben geschrieben, dass mein Excel auch in die Knie gegangen ist. Du kannst gerne mal selbst ausprobieren, großer Meister (...im Bäume und Sträucher ausreißen), wie "dein" Excel zu 1000x1000 (1000.000, in Worten: eine Million) Zellen Calculation reagiert. Aber nicht wundern, wenn's Mäulchen plötzlich nicht mehr zugeht ( ^^ )
Fäzes, > Ich habe oben geschrieben, dass mein Excel auch in die Knie gegangen > ist. Du kannst gerne mal selbst ausprobieren, großer Meister (...im > Bäume und Sträucher ausreißen), wie "dein" Excel zu 1000x1000 (1000.000, > in Worten: eine Million) Zellen Calculation reagiert. Aber nicht > wundern, wenn's Mäulchen plötzlich nicht mehr zugeht ( ^^ ) ich hatte mal eine ziemlich lange Messreihe, die als einzelne Spalte nicht in mein Office 2000 hereinpasste. In der damaligen Version von LibreOffice reagierte Calc apathisch. Bau einer Formel in einer weiteren Spalte und Kopieren über die ganze neue Spalte hinweg ließ dann LibreOffice crashen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.