DatenbankManufaktur

Anwendungen so individuell wie Ihr Unternehmen   –   Office- und VBA-Erfahrung seit 1995

Excel-Funktion Ausrechnen()

Diese benutzerdefinierte Funktion berechnet das Ergebnis einer als Text eingegebenen Formel.

Anforderung:

Um den Rechenweg zu dokumentieren, soll für eine Flächenberechnung die Formel als Text dargestellt werden und in der Zelle daneben das Ergebnis angezeigt werden.

Lösung:

Es gibt in Excel dafür keine Tabellenfunktion, die das kann. Aber aus VBA kenne ich die Funktion Evaluate(), die genau das macht. Also erstelle ich damit eine kleine benutzerdefinierte Funktion. Damit die Darstellung etwas hübscher wird (die Anforderung stammte von einer Architektin ;-), wird das "x" als Multiplikationszeichen akzeptiert.

Die Funktion Ausrechnen() einsetzenZum Vergrößern auf das Bild klicken

Deshalb wird ein "x" von der Funktion in ein "*" umgewandelt. Da VBA mit Zahlen im US-Format (1.2 statt 1,2) rechnet, wird auch noch das 1000er-Trennzeichen gelöscht und das "," gegen den "." getauscht. Dann kann die Formel ausgerechnet werden.

So sieht die fertige Funktion aus:

Function Ausrechnen(Zelle As Range) As Double
'===================================================================================
' Eine benutzerdefinierte Funktion aus Raphael Heins Da|ten|bank|Ma|nu|fak|tur
'
' Benutzung:    Eingabe im Tabellenblatt "=Ausrechnen(A1)
' Funktion:     Berechnet eine mathematisch korrekt eingegebene Formel in der Zelle A1
' Besonderheit: Ein "x" in der Formel wird in ein "*" umgewandelt
'
' Autor:        Raphael Hein
' Datum:        01.05.2014
'===================================================================================
   Dim strText As String
   
   ' Funktion immer neu berechnen, wenn sich etwas im Tabellenblatt ändert
   Application.Volatile
   
   strText = Zelle.Text
   
   If strText <> "" Then
      ' 1000er-Trennzeichen löschen
      strText = Replace(strText, ".", "")
      ' Dezimaltrennzeichen von US auf D ändern
      strText = Replace(strText, ",", ".")
      ' x in * umwandeln
      strText = Replace(strText, "x", "*")
      ' Formel ausrechnen
      Ausrechnen = Evaluate(strText)
   End If
End Function

Diese Funktion arbeitet natürlich auch in Excel:mac. Eine Arbeitmappe mit der Funktion, Beispielen und Erklärungen gibt es für Sie zum Download.

Sie wissen nicht, was eine benutzerdefinierte Funktion ist und wie man sie erstellt? Dann erkläre ich es Ihnen hier kurz.

[ Download ]  [ nach oben ]