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 :)
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:
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 :)
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
Hallo,
(27.07.2016, 08:59)Luffffy schrieb: 1. Ich möchte meinen Zielerreichungsgrad mit zwei Nachkommastellen angeben. Kommt jedoch ein rundes Ergebnis heraus, hängt er nicht ",00" an.

Da ich nicht weiß, in welcher Codezeile der Zielerreichungsgrad steht nur als Beispiel

Code:
Target.Offset(0, 2) = Format(........, "0.00")
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • Luffffy
Antworten Top
#3
Hey Stefan, danke für deine Antwort. Ich habe das Thema erstmal abgehakt und ein neues Thema aufgemacht.
Antworten Top


Gehe zu:


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