Dies ist mein erster Beitrag hier. Ich versuchte nach einer Antwort zu suchen, konnte aber keine finden.VBA ersetzen Bereich innerhalb Funktion Formel mit seinen berechneten Werten
Mein Problem ist es, Bereich in einer Formel zu seinen spezifischen Werten zu ersetzen. Zur Veranschaulichung der Ausgabe betrachtet eine Zelle:
= MITTELWERT (A1: A10)
Ich mag diese Zelle die durchschnittlichen Argumente für die Berechnung zeigen:
= MITTELWERT ({1; 2; 3; 4; 5; 6; 7; 8; 9; 10})
Dies ist parallel zum Drücken von F9, während der Bereich A1: A10 hervorgehoben ist. Ich habe versucht, etwas aus zu bauen, was ich im Netz finden konnte, aber konnte es nicht machen die Arbeit:
Sub ChangeFormulas()
Const CONST_FUNCTION As String = "AVERAGE"
Dim cell As Range
Dim tmp As String
Dim res As Variant
For Each cell In Selection
With cell
If InStr(.Formula, CONST_FUNCTION) > 0 Then
tmp = Mid(.Formula, 10, InStr(.Formula, ")") - (InStr(.Formula, CONST_FUNCTION) + 8))
cell.Formula = Replace(cell.Formula, tmp, Application.Evaluate(tmp))
End If
End With
Next cell
End Sub
Dank für Ihre Hilfe danken.
Es stellt sich die Frage nach dem „Warum zurückkehren ? ". Sobald Sie dies tun, werden die Formeln statisch sein und immer den gleichen Wert haben. Der ganze Sinn von Formeln besteht darin, dynamische Neuberechnungen zuzulassen. Willst du auch nur den Wert der Auswertung? Also wäre zum Beispiel '= AVERAGE (" ")' etwas wie '12.345', wobei ersteres die Formel ist und letzteres der Wert des Durchschnitts ist? Wenn ja, überschreiben Sie einfach den Zellenwert. –
Wenn Sie dies verfolgen möchten, müssen Sie ',' anstelle von ';' als Listentrennzeichen verwenden oder zu .FormulaLocal wechseln. – Jeeped