Excel langsam trotz gutem PC

Gast #5531380
Lesenswert?

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
#5531744
Lesenswert?

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?
Gast #5533282
Lesenswert?

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?
Gast #5533344
Lesenswert?

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 :(
Gast #5533346
Lesenswert?

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.
Gast #5533349
Lesenswert?

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.
Gast #5533645
Lesenswert?

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.
#5533662
Lesenswert?

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.
#5533672
Lesenswert?

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.
#5533713
Lesenswert?

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.
Gast #5533778
Lesenswert?

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.
#5533794
Lesenswert?

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?
Gast #5534248
Lesenswert?

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...
#5534270
Lesenswert?

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 von einem Moderator gelöscht.
Gast #5534346
Lesenswert?

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 ( ^^ )
#5534352
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren