Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Lösungsansatz für VBA
#1
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
Antworten Top
#2
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?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste