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

Calculation-Performance

Calculation-Performance
Lorenz
Hallo Excelianer
Nach untenstehenden Codebrocken werden einige Formeln durch Werte ersetzt (.value = .value).
Jetzt zu meiner Frage: Ist es der Performance dienlich so nach dem Motto (If HasFormula(Target.Row) Then .Value=.Value) oder ist es besser so zu belassen.
Erläuterung zum Code (NR = Target.Row) z.B.: "=Zeig_Art_ND" sind im Tabellenblatt benannte Formeln.
With .Cells(NR, 4)
'.Calculate
.Value = .Value
If .Value = 0 Then .Value = ""
End With
With .Cells(NR, 2)
.Value = "=ND"
.Value = .Value
If .Value = 0 Then .Value = ""
End With
With .Cells(NR, 3)
.Value = "=Zeig_Art_ND"
.Value = .Value
If .Value = 0 Then .Value = ""
End With
With .Cells(NR, 44)
.Value = "=Zul_240"
.Value = .Value
If .Value = 0 Then .Value = ""
End With
vND = .Cells(111, 240).FormulaR1C1
.Cells(Target.Row, 240) = vND
With .Cells(Target.Row, 240)
.Value = .Value
End With
vND = .Cells(111, 241).FormulaR1C1
.Cells(Target.Row, 241) = vND
With .Cells(Target.Row, 241)
.Value = .Value
End With
vV8NextTxt = .Cells(111, 113).FormulaR1C1
.Cells(Target.Row, 113) = vV8NextTxt
With .Cells(NR, 113)
.Calculate
.Value = .Value
If .Value = 0 Then .Value = ""
End With
Call StatistikNext
Call KalkulationNext
.Cells(NR, 172) = ValuNext
Call TagesstundenNext
End With
Kann mir jemand berichten welche Variante die sichere und schnellere ist?
Danke im Voraus & Grüße
Lorenz

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Calculation-Performance
10.03.2012 15:21:37
Hajo_Zi
Hallo Lorenz,
wo Du Werte in die Zelle schreibst, brauchst Du nicht Value=Value.
Was bringt es Dir wenn Du eine Formel als Text in eine zelle schreibst?

AW: Calculation-Performance
11.03.2012 09:10:47
Lorenz
Hallo Hajo
zu: Was bringt es Dir wenn Du eine Formel als Text in eine zelle schreibst?
Großteils ist der Text eine im Tabellenblatt "benannte Formel". Ich wählte benannte Formeln, da ich irgendwo las "die benannten" werden schneller als "Zellformeln" verarbeitet.
Zu 99% schreibe ich keine Werte in die Zelle, sondern Formeln, die in diesem Fall im betroffenen Blatt in der Zeile 111 stehen. Das habe ich aus dem Grund so gestaltet, weil die Formeln in 31 gleich gestalteten Blättern verwendet werden (die ganze Mappe war dann gleich um ganze 4,5 MB kleiner). Obendrein werden die Formeln vom User nicht zerstört und es werden nicht alle Formeln in allen Spalten gleich benötigt.
Der Code steht daher auch im "Private Sub Workbook_SheetChange".
Grüße Lorenz
Anzeige
AW: Calculation-Performance
11.03.2012 09:16:23
Hajo_Zi
Hallo Lorenz,
99% ist eigentlich eindeutig.
in diese Zeilen
With .Cells(NR, 2)
.Value = "=ND"
.Value = .Value
If .Value = 0 Then .Value = ""
End With
With .Cells(NR, 3)
.Value = "=Zeig_Art_ND"
.Value = .Value
If .Value = 0 Then .Value = ""
End With
With .Cells(NR, 44)
.Value = "=Zul_240"
.Value = .Value
If .Value = 0 Then .Value = ""
End With
vND = .Cells(111, 240).FormulaR1C1
.Cells(Target.Row, 240) = vND
With .Cells(Target.Row, 240)
.Value = .Value
End With
schreibst Du werte in diev Zelle das sind 20 Zeilen, 100% sind dann 20.000 Zeilen. Die habe ich leider in Deinem Beitrag nicht gefunden und kann Dir dann auch nicht weiter helfen.
Gruß Hajo
Anzeige
AW: Calculation-Performance
11.03.2012 09:31:40
Lorenz
Hallo Hajo
Da ich im Erklären relativ blöd bin, hier ein anderer Codebrocken wie ich die "Berechnungen" durch Eingabe in verschiedenen Spalten mache
hier ein anderer Codebrocken (originalcode leider schon über 1100 Zeilen:
Select Case Target.Column
Case 2, 3, 7, 10, 13, 15
Cells(Target.Row, 44) = ""
With Target.Offset(0, -2)
.Value = "=ND"
.Value = .Value
If .Value = 0 Then .Value = ""
End With
With Target.Offset(0, -1)
.Value = "=Zeig_Art_ND"
.Value = .Value
If .Value = 0 Then .Value = ""
End With
Call TextND
vV8NextTxt = Cells(111, 113).FormulaR1C1
Cells(Target.Row, 113) = vV8NextTxt
With Cells(NR, 113)
.Calculate
.Value = .Value
If .Value = 0 Then .Value = ""
End With
vND = .Cells(111, 240).FormulaR1C1
.Cells(Target.Row, 240) = vND
With .Cells(Target.Row, 240)
.Value = .Value
End With
Call Tagesstunden
'nächster Case
...
end select
grüße Lorenz
Anzeige
AW: Calculation-Performance
11.03.2012 09:20:10
Lorenz
Hallo Hajo
Hab noch vergessen zu sagen (schreiben) in weiterer Folge verwendete ich statt "Value" , ".FormulaLocal" für die benannten Formeln (irgendwo gesehen und dann ausprobiert).
Grüße Lorenz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige