Ich habe einen VBA-Code bei TheSpreadsheetGuru entdeckt, den ich allerdings etwas modifizieren musste, damit er einwandfrei läuft. Der Code funktioniert bei mir hervorragend und ist sehr überschaubar. Eingegeben habe ich ihn in einem Modul und das Makro habe ich in meiner Schnellzugriffszeile per Direktaufruf verlinkt. Wie das geht, können Sie in diesem Beitrag nachlesen.
Sub LoadLambdas()
'PURPOSE: Load your favorite LAMBDA functions into the ActiveWorkbook
'SOURCE: www.thespreadsheetguru.com
'UEBERARBEITET und angepasst: Axel Tüting - www.time4mambo.de
'ProzentRechnung() Function
'Lambda Info
LambdaName = "ProzentRechnung"
LambdaFormula = "=LAMBDA(Summe,Prozent,Summe*Prozent)"
LambdaComments = "Welche Summe bei wieviel Prozent (Summe*Prozent)"
'Create Named Range + Formula
ActiveWorkbook.Names.Add Name:=LambdaName, RefersToR1C1:="=0"
'Add Comments for the LAMBDA function
ActiveWorkbook.Names(LambdaName).Comment = LambdaComments
ActiveWorkbook.Names.Add Name:=LambdaName, RefersToR1C1:=LambdaFormula
End Sub
Der Code führt eine lapidare Prozentrechnung per LAMBDA durch. Wenn Sie selber den Code bearbeiten möchten, dann bedenken Sie, dass der Code die englischen Zuweisungen benutzt. Also statt eines Kommas für Dezimalzahlen benutzen die Engländer den Punkt und statt des Semikolons für die Datentrennung ein Komma. Auf der deutschen Exceloberfläche wird das dann automatisch in unsere Schreibweise umgewandelt. Der Code weist zunächst den Namen der LAMBDA-Funktion für den Namensmanager zu, anschließend die LAMBDA-Funktion selbst und dann einen Kommentar.
ActiveWorkbook.Name
ruft den Namensmanager auf, bzw. fügt unsere LAMBDA-Funktion entsprechend ein.
Leider gibt es eine Fehlermeldung, wenn der Kommentar direkt übergeben wird. Füge ich allerdings diese Zeile vor der Kommentarzuweisung ein:
ActiveWorkbook.Names.Add Name:=LambdaName, RefersToR1C1:="=0"
funktioniert es mit dem Kommentar. Wird hingegen die Funktion direkt an den Namensmanager übergeben, gibt es eine Fehlermeldung.
Diesen Code nun können Sie beliebig oft in der Subroutine wiederholen. Hier ein Beispiel von drei verschiedenen Prozentrechnungen:
Sub LoadLambdas()
'PURPOSE: Load your favorite LAMBDA functions into the ActiveWorkbook
'SOURCE: www.thespreadsheetguru.com
'UEBERARBEITET und angepasst: Axel Tüting - www.time4mambo.de
Dim LambdaName As String
Dim LambdaFormula As String
Dim LambdaComments As String
'ProzentRechnung() Function
'Lambda Info
LambdaName = "ProzentRechnung"
LambdaFormula = "=LAMBDA(Summe,Prozent,Summe*Prozent)"
LambdaComments = "Welche Summe bei wieviel Prozent (Summe*Prozent)"
'Create Named Range + Formula
ActiveWorkbook.Names.Add Name:=LambdaName, RefersToR1C1:="=0"
'Add Comments for the LAMBDA function
ActiveWorkbook.Names(LambdaName).Comment = LambdaComments
ActiveWorkbook.Names.Add Name:=LambdaName, RefersToR1C1:=LambdaFormula
'******************************************************************************
'ProzentVonSumme() Function
'Lambda Info
LambdaName = "ProzentVonSumme"
LambdaFormula = "=LAMBDA(Summe,ProzentErgebnis,ProzentErgebnis/Summe)"
LambdaComments = "Wieviel Prozent sind es? (ProzentErgebnis/Summe)"
'Create Named Range + Formula
ActiveWorkbook.Names.Add Name:=LambdaName, RefersToR1C1:="=0"
'Add Comments for the LAMBDA function
ActiveWorkbook.Names(LambdaName).Comment = LambdaComments
ActiveWorkbook.Names.Add Name:=LambdaName, RefersToR1C1:=LambdaFormula
'******************************************************************************
'ProzentBeiSumme() Function
'Lambda Info
LambdaName = "ProzentBeiSumme"
LambdaFormula = "=LAMBDA(Prozent,ProzentTeilErgebnis,ProzentTeilErgebnis/Prozent)"
LambdaComments = "Liefert die 100%-Summe (ProzentTeilErgebnis/Prozent)"
'Create Named Range + Formula
ActiveWorkbook.Names.Add Name:=LambdaName, RefersToR1C1:="=0"
'Add Comments for the LAMBDA function
ActiveWorkbook.Names(LambdaName).Comment = LambdaComments
ActiveWorkbook.Names.Add Name:=LambdaName, RefersToR1C1:=LambdaFormula
'******************************************************************************
End Sub