Clever-Excel-Forum

Normale Version: Variierender Speicherplatz
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Moin,

meine Exceldatei beansprucht auf SSD 6,6 MB Speicherplatz und ohne dass ich irgendetwas getan hätte plötzlich 11,2 MB.
Nach erneutem Speichern waren es wieder 6,6 MB. Was könnte die Ursache sein?

Gruß
Dieter
Manchmal werden eigentlich gelöschte Bereiche mitgespeichert, manchmal auch wieder nicht.
Manchmal werden aus Versehen oder auch gewollt zwei unterschiedliche Datei-Versionen gespeichert.
Im Hauptspeicher reserviert eine Datei grundsätzlich mehr, damit Excel schneller rechnet (dateiabhängig).
Wenn Du Deine Datei per Erstellungsmakro baust (also ohne "Rückgängig" zu verwenden), hast Du die exakte und richtige (Abspeicher-)Dateigröße.
Die kannst Du noch verringern, indem Du nur Daten speicherst und die Formeln per Erstellungsmakro nach dem Öffnen dranhängst (und vor dem Speichern löschst).
Hallo LCohen,

"Manchmal"? Also ohne ersichtlichen Grund? Es wurde nur im xlsx-Format gespeichert.
Mich wundert, dass sich der Speicherplatz anscheinend willkürlich und dann auch nur 1 x erhöhte.
Mit "Erstellungsmakro" kann ich leider nichts anfangen. Ist ja auch egal.
Die Datei ist so klein, dass man sie problemlos per E-Mail versenden kann.

Dieter
"Erstellungsmakro" ist eine Wortschöpfung von mir.

Das folgende Makro baut eine neue Tabelle mit Testdaten und vergleicht 4 Alternativen von Auswertungsformeln. Benötigt eine knappe Minute.

Sub PerformanceArrayMax()
Workbooks.Add xlWorksheet: d = [A1:G1]: e = Split("0 0 0 0 0 0 1 1")
[C1] = "Formel": [C2] = "Zeit"
a = "RC1:R[999999]C1": b = Replace(a, "C1", "C2"): c = a & "-" & b
[A:B].Formula = "=TRUNC(RAND()*6)": [A:B].Value = [A:B].Value
d(1, 4) = "=SUMPRODUCT(--SUBSTITUTE(" & c & ",""-""&ABS(" & c & "),0))"
d(1, 5) = "=SUMPRODUCT((" & a & ">" & b & ")*(" & c & "))"
d(1, 6) = "=SUM(IFERROR(--SUBSTITUTE(" & c & ",""-"",""#""),0))"
d(1, 7) = "=SUM(IFERROR(EXP(LN(" & c & ")),0))"
For j = 4 To 7
Cells(1, j) = IIf(e(j), "{", "'") & d(1, j) & IIf(e(j), "}", "")
a = Timer
With Cells(3, j)
If e(j) Then .FormulaArray = d(1, j) Else .FormulaR1C1 = d(1, j)
.Resize(30, 1).FillDown
End With
Cells(2, j) = Timer - a
With Range(Cells(4, j), Cells(32, j)): .Value = .Value: End With
Next
End Sub