
Ich möchte eine Excel-Verkettungsanweisung analysieren, um das Ergebnis des eingeschlossenen Ausdrucks zu finden. Beispiel: =CONCAT("=1-2-3+7*8")
sollte 52 zurückgeben und
=CONCAT("=AVERAGE(A1,A2)")
den Durchschnitt der beiden Felder zurückgeben. Gibt es eine Funktion oder eine andere Möglichkeit, dies in Excel zu erreichen?
Antwort1
Versuchen Sie die folgende benutzerdefinierte Funktion:
Public Function raghav(rng As Range) As Variant
Dim s As String
s = Mid(rng(1).Formula, 2)
arr = Split(s, Chr(34))
For Each a In arr
If Left(a, 1) = "=" Then
raghav = Evaluate(a)
Exit Function
End If
Next a
End Function
Benutzerdefinierte Funktionen (UDFs) sind sehr einfach zuInstallierenund verwenden Sie:
- ALT-F11 öffnet das VBE-Fenster
- ALT-I ALT-M öffnet ein neues Modul
- Füge das Material ein und schließe das VBE-Fenster
Wenn Sie die Arbeitsmappe speichern, wird die UDF mit gespeichert. Wenn Sie eine Version von Excel verwenden, die älter als 2003 ist, müssen Sie die Datei als .xlsm und nicht als .xlsx speichern.
Zuentfernendie UDF:
- Öffnen Sie das VBE-Fenster wie oben
- Löschen Sie den Code
- Schließen Sie das VBE-Fenster
Zuverwendendie UDF aus Excel:
=raghav(A1)
Weitere Informationen zu Makros im Allgemeinen finden Sie unter:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
Und
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
Einzelheiten zu UDFs finden Sie unter:
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
Damit dies funktioniert, müssen Makros aktiviert sein!