VBA: Zielwertsuche (Goal Seek)

goalseek2 1

Die Zielwertsuche (Goal Seek) ist ein sehr nützliches Instrument in Excel, um die Argumente einer Formel so zu gestalten, dass am Ende ein gewünschtes Ergebnis erreicht wird.

In einem früheren Beitrag habe ich Dir die Zielwertsuche in Excel bereits vorgestellt. In diesem Beitrag geht es nun darum, die Zielwertsuche mit einem VBA-Makro umzusetzen. In VBA heißt die Zielwertsuche „Goal Seek“.

e390d57a1ada4bb3a3022270a0184eb1

1. Die durchschnittliche Fehlerquote sichern

In einem ersten Beispiel wurde die Fehlerquote eines Mitarbeiters über fast zwei Wochen (9 Arbeitstage) in einer Liste erfasst.

Der Durchschnitt über die 9 Arbeitstage beträgt 9,444%.

Ziel ist es, den Durchschnitt nicht über 9,5% wachsen zu lassen.

Es bleibt nun noch der 10. Arbeitstag. Die Frage ist, wie hoch die Fehlerquote an diesem Tag maximal sein darf, um das Ziel zu erreichen?

GoalSeek1

Schreibe dazu dieses Makro in ein Modul im VBA-Editor:

Eröffne z.B. mit

Sub GoalSeek1()

Die Zielzelle soll C14 sein, dort willst Du am Ende einen Wert <=9,5% sehen. Schreibe also

Range(„C14“).GoalSeek

GoalSeek ist die angewandte Methode.

Definiere nun die Zielgröße. Schreibe nicht „9.5%“, sondern „0.095“. Ergänze dazu die letzte Zeile mit

Range(„C14“).GoalSeek Goal:=0.095

Im letzten Schritt musst Du noch die veränderbare Zelle benennen. Das geschieht mit „ChangingCell“. Im Beispiel soll das C13 sein, denn dort fehlt noch die Fehlerquote.

Range(„C14“).GoalSeek Goal:=0.095, ChangingCell:=Range(„C13“)

Beende die Prozedur mit

End Sub

Das Makro ist nun fertig und kann in Aktion treten:

Sub GoalSeek1()

Range(„C14“).GoalSeek Goal:=0.095, ChangingCell:=Range(„C13“)

End Sub

Starte es z.B. aus dem Modul heraus mit Ausführen / Sub/UserForm ausführen.

GoalSeek2

Das Makro ermittelt nun den Wert der veränderbaren Zelle C13, der Zielwert in C14 ist 9,5%.

GoalSeek3

Was bedeutet das nun?

Der Mitarbeiter darf am 10. Arbeitstag eine Fehlerquote von 10% erreichen, besser wäre natürlich weniger.

2. Einen möglichen Rabatt bestimmen

Stell Dir vor, Du bist Einkäufer in einem Metallbetrieb.

Du befindest Dich in Preisverhandlungen mit potentiellen Lieferanten. Darin möchtest Du herausfinden, wieviel Rabatt Dir ein Lieferant auf den Gesamtpreis i. H. v. 17.300 Euro gewähren muss, damit der gewünschte Einkaufspreis i. H. v. 15.700 Euro erzielt wird.

Für die Zielwertsuche benötigst Du diese drei Kennzahlen:

  • Gesamtpreis
  • Rabatt
  • Einkaufspreis

Der Einkaufspreis ergibt sich durch Subtraktion des Rabatts vom Gesamtpreis.

Die Rabatthöhe ergibt sich aus Multiplikation des Rabattsatzes mit dem Gesamtpreis.

Erstelle Dir dazu eine kleine Tabelle.

GoalSeek4

Gehe nun wieder in den VBA-Editor und eröffne ein Makro z.B. mit

Sub GoalSeek2()

Die Zielzelle soll D6 sein, dort willst Du am Ende den Wert 15.700 sehen. Schreibe also

Range(„D6“).GoalSeek

Definiere nun die Zielgröße. Schreibe in D6 den Wert 15.700. Ergänze dazu die letzte Zeile mit

Range(„D6“).GoalSeek Goal:=15,700

Im letzten Schritt musst Du noch die veränderbare Zelle benennen. Das geschieht mit „ChangingCell“. Im Beispiel soll das C5 sein, denn dort fehlt noch der Rabattsatz.

Range(„D6“).GoalSeek Goal:=15700, ChangingCell:=Range(„C5“)

Beende die Prozedur mit

End Sub

Das Makro ist nun fertig und kann in Aktion treten:

Sub GoalSeek2()

Range(„D6“).GoalSeek Goal:=15700, ChangingCell:=Range(„C5“)

End Sub

Starte nun das Makro.

Die Prozedur wird wie gewünscht ausgeführt und der Zielwert 15.700 erreicht.

In der veränderbaren Zelle C5 siehst Du den errechneten Rabattsatz i. H. v. 9,25%. Damit errechnet sich in D5 der Rabatt, den Dir ein Lieferant gewähren muss.

GoalSeek5

Sicher ist Dir bewusst, dass Du dieses Makro nur für den einen ausgewählten Fall nutzen kannst, denn Du hast im Code „Goal:=15700“ definiert.

Schreibe deshalb in eine beliebige Zelle die Zielgröße, die Du beliebig verändern kannst, und lasse das Makro darauf zurückgreifen. Diese Möglichkeit hast Du übrigens bei der Zielwertsuche mit Excel nicht.

Das Makro sieht hierbei so aus:

Sub GoalSeek3()

Range(„D6“).GoalSeek Goal:=Range(„C2“).Value, ChangingCell:=Range(„C5“)

End Sub

Lege Dir für das Makro noch eine Schaltfläche an.

GoalSeek6

Trage nun Deinen Zielwert in C2 ein, diesmal soll es 15.500 sein. Ein Klick auf die Schaltfläche und die Berechnung wird ausgeführt.

Der Lieferant muss Dir einen Rabatt von 10,40% gewähren, damit Du Dein Einkaufsziel erreichen kannst.


Entdecke mehr von Clevercalcul

Subscribe to get the latest posts sent to your email.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

WordPress Cookie Plugin von Real Cookie Banner