Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Preisberechnung via Makro





Frage

Servus zusammen! Ich habe gerade den absoluten Brainblock und meine limitierten Makrokenntnisse sind gerade gesperrt... :( (gestern konnte ich noch einen Wert auslesen und zumindest als msgbox wiedergeben. dann wollte ich neu anfangen und jetzt bekomme ich noch nicht mal mehr das hin).... Anyway... Folgendes Problem: In Zelle J13 steht ein Gewicht, für das ein Preis in Zelle J32 berechnet werden soll. In I18 bis O18 stehen Raten. I18= eine Minimum Rate (z.B. 50) J18 = eine Rate bis 45kg (z.B. 1,50) K18= eine Rate über 45kg (z.B. 1,45) L18 = eine Rate über 100kg (z.B. 1,40) M18 = eine Rate über 250kg (z.B. 1,35) N18 = eine Rate über 500kg (z.B. 1,30) O18 = eine Rate über 1000kg (z.B. 1,25) Abgeprüft werden muss das ganze wie folgt: Gewicht unter 45kg muss geprüft werden, ob es Minimum (Gewicht * 1,50 < 50), dann wird der Minimum Preis ausgegeben. Wenn nicht Minimum, dann soll geprüft werden, ob 45*1,45 evtl. günstiger ist als das Gewicht * 1,50. Wenn 45 * 1,45 günstiger ist, ist das Preis, wenn nicht, dann ist der Preis Gewicht * 1,50. Das gleiche Prinzip gilt dann auch für alles über 45kg (wenn Gewicht*1,30 günstiger als Gewicht*1,35, dann Gewicht*1,30, sonst Gewicht*1,35). Meine Idee war eine Case Select Lösung, aber da bin ich an der Weiter- und Rückgabe von Werten gescheitert. Hat jemand eine Idee?? Danke im voraus & hoffentlich schöneres Wetter als hier! Birdy76

Antwort 1 von Birdy76

Servus nochmal!

Genial wäre es, wenn der Preis jedesmal berechnet wird, wenn sich das Gewicht ändert. Ohne, dass ich erst das Makro ausführen muss....

Gruss,
Birdy76

Antwort 2 von Helfershelfer

In groben Zügen ist das Problem erkannt - jedoch noch ein paar Nachfragen:

o Minimum-Rate = Minimum Preis = 50 ????

o es wäre hilfreich, wenn du ein paar Beispiele mit reinbringen würdest, um sein gecodetes mal zu überprüfen, ob es deinen Vorstellungen entspricht.

o richtig verstanden, dass generell der günstigste Preis gezogen werden soll?

o dient das ganze einer Frachtkostenberechnung? (eigenes Interesse)

Gruß,
Helfershelfer

Antwort 3 von Birdy76

Hi Helfershelfer,

Ja, Minimum Rate = Minimum Preis = 50. Sorry, da habe ich die Begriffe durcheinander geworfen....

Die Tabelle soll bei der Luftfrachtkostenberechnung von a nach b helfen; darf ich fragen warum eigenes Interesse? ;-)))

Die Berechnung geht nach folgendem Prinzip vor (als Gundlage die Preise von meiner Frage oben):
20kg * 1,50=30 - kleiner als Minimum 50 also 50
44kg*1,50=66, aber 45*1,45=65,25 also 65,25
300*1,35=400, 500*1,3=650, also kommt die 250kg Rate(1,35) zur Anwendung...


Generell ist es so, dass ich schauen muss in welcher Gewichtskategorie ich bin. Dann diese Kategorie * Gewicht und bei der nächsten Kategorie das unterste Gewicht * den entsprechenden Preis. Das kleinere wird genommen.

Hoffe, es ist ein bisschen verständlicher!

Danke schon mal & Gruss,
Birdy76

Antwort 4 von Helfershelfer

Hi Birdy76,

sorry - war geschäftlich unterwegs - deshalb jetzt erst meine Antwort:

anbei der Code, den du in ein Modul einfach einfügst. Hast du Probleme dabei, dann melde dich einfach nochmal - helfe dir dann.
Desweiteren habe ich die Gewichtsgruppen variabel unterhalb der Gewichtsfaktoren angelegt (also in J19 bis O19). Die Angabe muss einfach als Untergrenze des Gewichts angegeben werden - sprich: die erste Gruppe beginnt bei 0kg, die zweite bei 45kg, die dritte bei 100kg, usw.

Gruß,

Andreas

****************************************
Option Explicit
Const Msg001 As String = "Ermittelter Preis liegt unter angegebenen Minimumpreis!"
Const Msg002 As String = "Ermittelter Preis liegt über Minimumpreis der " & _
"nächsten Gewichtsgruppenstufe! Preis deshalb angepasst."

Function Frachtkosten(Gewicht As Single) As Single
Dim Minimum As Single
Dim GGF(6) As Single ´Gewichtsgruppenfaktoren
Dim GGM(6) As Single ´Gewichtsgruppenminimum
Dim i As Integer
´Daten einlesen
Minimum = Cells(18, 9)
For i = 1 To 6
GGF(i) = Cells(18, 9 + i)
Next i
For i = 1 To 6
GGM(i) = Cells(19, 9 + i)
Next i

´ Frachtkostenberechnung
If Gewicht <= GGM(2) And Gewicht * GGF(1) < Minimum Then
Frachtkosten = Minimum
MsgBox Msg001, vbOKOnly, "Minimalpreis unterschritten..."
ElseIf Gewicht <= GGM(2) And Gewicht * GGF(1) > GGM(2) * GGF(2) Then
Frachtkosten = GGM(2) * GGF(2)
MsgBox Msg002, vbOKOnly, "Es geht auch günstiger..."
ElseIf Gewicht <= GGM(2) And Gewicht * GGF(1) > Minimum Then
Frachtkosten = Gewicht * GGF(1)

ElseIf Gewicht <= GGM(3) And Gewicht * GGF(2) > GGM(3) * GGF(3) Then
Frachtkosten = GGM(3) * GGF(3)
MsgBox Msg002, vbOKOnly, "Es geht auch günstiger..."
ElseIf Gewicht <= GGM(3) Then
Frachtkosten = Gewicht * GGF(2)

ElseIf Gewicht <= GGM(4) And Gewicht * GGF(3) > GGM(4) * GGF(4) Then
MsgBox Msg002, vbOKOnly, "Es geht auch günstiger..."
Frachtkosten = GGM(4) * GGF(4)
ElseIf Gewicht <= GGM(4) Then
Frachtkosten = Gewicht * GGF(3)

ElseIf Gewicht <= GGM(5) And Gewicht * GGF(4) > GGM(5) * GGF(5) Then
MsgBox Msg002, vbOKOnly, "Es geht auch günstiger..."
Frachtkosten = GGM(5) * GGF(5)
ElseIf Gewicht <= GGM(5) Then
Frachtkosten = Gewicht * GGF(4)

ElseIf Gewicht <= GGM(6) And Gewicht * GGF(5) > GGM(6) * GGF(6) Then
MsgBox Msg002, vbOKOnly, "Es geht auch günstiger..."
Frachtkosten = GGM(6) * GGF(6)
ElseIf Gewicht <= GGM(6) Then
Frachtkosten = Gewicht * GGF(5)

ElseIf Gewicht > GGM(6) Then
Frachtkosten = Gewicht * GGF(6)
End If

End Function

Antwort 5 von Birdy76

Hi Andreas,
vielen vielen Dank!

Ich bekomme das nicht hin :( bei den beiden Zeilen mit

Zitat:
Dim GGF(6) As Single ´Gewichtsgruppenfaktoren
Dim GGM(6) As Single ´Gewichtsgruppenminimum


erscheint der Quelltext rot...

Ein Ergebnis erscheint leider nicht...

Kann ich Dir die Datei evtl. irgendwohin schicken und Du schaust mal?

Danke & Gruss,
Sten

Antwort 6 von Helfershelfer

Hi,

Das Problem liegt darin, dass Supportnet aus meinem Hochkomma ein anderes Zeichen gemacht hat. Du kannst allerdings einfach das "´Gewichtsgruppenfaktoren" und das "´Gewichtsgruppenminimum" weglöschen (ist nur Kommentar). Dann müsste es klappen!

Gruß,
Andreas

Antwort 7 von Birdy76

Hi nochmal!

Sorry, war auch unterwegs...

Vielen Dank für die Mühe!

Ich habe jetzt im VB Editor beim Projekt ein Modul und darin Deinen Quelltext eingefügt und die Kommentare entfernt. Die Untergrenzen habe ich in die Tabelle geschrieben.

Aber irgendwie passiert immer noch nix. Kann es sein, dass mir noch etwas fehlt, was die Frachtkosten in die Tabelle zurückschreibt?

Die Messageboxen erscheinen auch nicht.

Ich glaube, ich mache da noch was falsch... Kannst Du mir nochmal helfen?

Danke und Gruss,
sten

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: