ist die Formelberechnung in einem Excelblatt schneller als vba? Ich brauche das zur Nullstellenbestimmung einer Funktion, die als Formel in einer Zelle vorliegt und nicht in vba programmiert werden soll.
Diese Frage stellt sich, wenn ich einen Zellenwert auslesen will, nachdem in einer anderen Zelle ein Wert eingegeben wurde. Wartet das Makro auf die Berechnung? Oder kann es sein, dass das Makro das Ergebnis früher abfrägt, als es berechnet wird? Wie das Ergebnis mit der Eingabe zusammenhängt, soll dem Makro nicht bekannt bzw. egal sein. Das ist rein Sache des Anwenders.
Hier ein Beispiel, das zeigt, dass das Makro im nächsten Schritt das Formelergebnis bereits vorfindet. Nur, ist das prinzipiell immer so oder gibt es Formeln, die etwas länger dauern?
Das Makro in einem leeren Blatt starten. Erst wird eine Formel eingetragen, dann eine Wertetabelle mit 100 Werten angelegt, dann wird die Bezugszelle der Formel mit diesen Werten gefüttert und im nächsten Makroschritt bereits das Formelergebnis ausgelesen. Es funktioniert. Alle 100 Berechnungen sind richtig.
Sub Geschwindigkeit()
Dim i As Long
Dim Wertetabelle()
'Vorbereitung Leeres Tabellenblatt
Range("b3").Formula2 = "=SIN(B2)+53" 'In Zelle b3 steht eine Formel, die von b2 abhängig ist.
ReDim Wertetabelle(1 To 100, 1 To 2) 'Eine Wertetabelle mit Werten in der ersten Spalte wird erstellt.
For i = 1 To 100
Wertetabelle(i, 1) = 0.2 + i / 100
Next i
'Und jetzt der Test
For i = 1 To 100
Range("b2") = Wertetabelle(i, 1) 'Argument in Zelle eintragen
Wertetabelle(i, 2) = Range("b3") 'Formelergebnis auslesen, das in der Formel in b3 errechnet wurde.
Debug.Assert Sin(Wertetabelle(i, 1)) + 53 = Wertetabelle(i, 2) 'Ergebnis prüfen
Next i
'Ergebnistabelle ins Blatt schreiben, nur so als Nachweis
Range("e2").Resize(100, 2) = Wertetabelle
End Sub
LG, Florian