Clever-Excel-Forum

Normale Version: Lösungsansatz für VBA
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Moin Leute,

ich brauche mal wieder eure Hilfe in Bezug auf die Berechnung der Zielerreichungsgrade [img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]
Kurz vllt. zur Vorgehensweise:
In einer Eingabemaske kann man einen minimalen und einen maximalen Zielerreichungswert eingeben.
Beispiel: min. Zielerreichungsgrad von 50% = 200 und max. ZEG von 150% = 600.
Klickt man nun auf ok, wird zwei Zellen weiter links ein Wert entnommen (kann €, %, kg, etc. sein), der mit in die Berechnung mit einbezogen wird, um den Zielerreichungsgrad für diesen Wert auszugeben.
Am besten ich zeige kurz die Berechnung.


Code:
Code:
Application.EnableEvents = True
If Target.Column = 14 Then
Target.Offset(0, 2).NumberFormat = "General"
    Dim numericCheck As Boolean
    numericCheck = IsNumeric(Target.Value)
   
    If Target.NumberFormat = "0.00%" Then
        currentValue = CDbl(Target.Value) * 100
    Else
        currentValue = Target.Value
    End If
    lowBorder = Target.Offset(0, 12) 'immer das 50% feld'
    highBorder = Target.Offset(0, 13) 'immer das 150 % feld'
   
       
'wenn der minimale Erreichungsgrad die größere Zahl ist'
If lowBorder > highBorder Then
    If currentValue <= highBorder Then
         Target.Offset(0, 2) = "150 %"
    ElseIf currentValue >= lowBorder Then
         Target.Offset(0, 2) = "50 %"
    Else
         Target.Offset(0, 2) = Round(50 + 100 * ((lowBorder - currentValue) / (lowBorder - highBorder)), 2)
    End If
   
End If
'wenn der maximale Erreichunggrad die größere zahl ist'
If lowBorder < highBorder Then
    If currentValue >= highBorder Then
         Target.Offset(0, 2) = "150 %"
    ElseIf currentValue <= lowBorder Then
         Target.Offset(0, 2) = "50 %"
    Else
         Target.Offset(0, 2) = Round(50 + 100 * ((lowBorder - currentValue) / (lowBorder - highBorder)), 2)
    End If
   
End If

End If
End Sub


Die Funktion wird also auf Spalte 14 angewendet und in Spalte 12 werden Werte eingegeben, die sich auch ändern. Der Zielerreichungsgrad soll sich demnach immer anpassen.
Prinzipiell funktioniert die Formel, aber zwei Probleme bekomme ich nicht in den Griff. Hoffe, ich bekomme das halbwegs verständlich rüber [img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]
1. Ich möchte meinen Zielerreichungsgrad mit zwei Nachkommastellen angeben. Kommt jedoch ein rundes Ergebnis heraus, hängt er nicht ",00" an.
2. Jetzt zu dem größeren Problem... Sobald es sich um Prozentwerte handelt, haut er mir teilweise komplett falsche Werte raus. Bin mir nicht sicher, wie ich da weiter vorgehen soll. Irgendwie funktioniert es auch nicht, die Prozentwerte als General auszugeben. Das wäre auch nicht unbedingt meine Musterlösung. Am liebsten wäre mir, wenn ich egal in welchem Format, alle Berechnungen durchführen kann.

Für jeden Lösungsvorschlag bin ich sehr dankbar.

Beste Grüße
Hallöchen,

wenn ich eine Zelle als Zahl mit zwei Nachkommastellen formatiere, werden selbige auch unabhängig von ,00 ausgegeben.

Du verrechnest also mal absolute Werte und mal Prozente? Was soll denn da rauskommen? 184 können 100% sein, aber wann Du aus 1 eine 100 machst, hat das dann doch nichts mit dem Absolutwert zu tun. Müsstest Du nicht erst mal feststellen, wieviel 100% sind und diese Zahl als Faktor nehmen? Das müsste bei meiner 184 dann auch selbige Zahl sein und nicht 100.. Wie sieht denn so eine falsche Zahlenreihe aus?