Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1752to1756
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Betrag aufspliiten mit aufrunden

Betrag aufspliiten mit aufrunden
28.04.2020 17:51:20
Robert
Ein Hallo in die frohe Runde!
Ich habe mir eine Aufgabe gestellt, deren Lösung irgendwie durch die Finger flutscht...
So richtig komme ich mit den Suchergebnissen auch in diesem Forum leider nicht auf die Reihe, darum wage ich es nach Stunden der Suche mich doch an euch zu wenden:
Ich habe einen gewissen Wert an Müllaufkommen in Litern ermittelt (ganz lecker, ich weiß...).
Um den abholen zu lassen, gibt's Mülltonnen mit
- 1100 l
- 660 l
- 240 l
- 120 l
Wie kann ich diese x Liter so optimal auf die möglichen Tonnengrößen verteilen, dass nur ein Minimum hinterher überschritten wird und ich nicht zu viele Tonnen aufstellen muss? (Das Ganze geht dann nämlich für Restmüll, Bio, Papier, Wertstoffe, Speiseabfälle, Glas...)
Die Beispiele mit Geldaufsplitten in Scheine und Münzen sind immer ganz nett, aber hier kann man bis zum letzten Cent aufteilen. -- Bei mir muss eine gewisse Menge überschritten werden. Reicht daher zum Schluss einfach ein "Aufrunden"? -- Ich will jedoch auch die Anzahl der Tonnen irgendwie optimieren.
Also, sollte einem Formelprofi langweilig sein ;-) ---- mein Dank ist ihm gewiss!!
Viele Grüße vom Chiemsee
Robert

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Betrag aufspliiten mit aufrunden
28.04.2020 17:59:51
EtoPHG
Hallo Robert,
Die 'Geldaufsplittung' ist doch genau der richtige Ansatz (Von gross nach klein mit möglichst wenig Einzelwerten). Du brauchst doch nur noch eine 1 Liter dazuzufügen, dort sammelt sich dann dein 'Überhang'.
Gruess Hansueli
AW: Betrag aufspliiten mit aufrunden
28.04.2020 18:08:23
Robert
Hallo!
Danke für die rasche Antwort - das geht ja fix hier!
Die Idee ist schon gut, aber ich habe leider keine 1-Liter-Tonne. Das kleinste Maß sind 120 Liter. Daher komme ich mit dem "Überhang" leider nicht so klar...
Ich wollte schon statt mit GANZZAHL oder ABRUNDEN mit AUFRUNDEN arbeiten, aber da kommt in der Kontrolle auch nur Murks raus :-(.
Trotzdem schon mal Danke.
Robert
Anzeige
Mann, mann, mann ...
30.04.2020 06:18:58
lupo1
Du sollst Deinen Müll um 1 Liter erhöhen. Nicht eine 1-Liter-Tonne erfinden.
AW: Mann, mann, mann, mann ...
30.04.2020 08:34:55
Daniel
Du meinst, man solle, wenn man 1234 L Müll hat, stattdessen mit 1235 L rechnen?
AW: Betrag aufspliiten mit aufrunden
28.04.2020 18:56:33
Daniel
Hi
Müsste man eigentlich nicht auch die Kosten berücksichtigen?
Denn wie willst du sonst Leermenge gegen Anzahl Tonnen abwägen?
Beispiele, welche Variante ist besser?
1200L gesamt: 5x240 Leer 0 oder 1x1100+1x120 Leer 20
600L gesamt: 2x240+1x120 Leer 0 oder 1x660 Leer 60
Bei dem Ansatz wirds aber schwierig, diesen "smart" per Formel zu berechnen.
Wenn VBA eine Option ist, könnte man eine kleine Funktion schreiben, welche alle Varianten durchrechnet und dann die günstigste ausgibt.
Gruß Daniel
Anzeige
AW: Betrag aufspliiten mit aufrunden
28.04.2020 19:35:27
Sigi
Hallo,
ich muss Daniel beipflichten, nicht die Stückelung ist interessant, sondern die Kostenoptimierung. Welche Tonnen muss ich aufstellen bei geringsten Kosten.
(Stückelung s. Mappe)
Sigi
https://www.herber.de/bbs/user/137097.xlsx
AW: Betrag aufspliiten mit aufrunden
28.04.2020 21:50:29
Daniel
naja, das Ergebnis ist aber, wenn es um die Restmenge geht, nicht gut.
da kommst du mit 1100+660 aber dichter an die 1730 ran und hast nur 2 Tonnen
wobei das alles Theoríe ist. Hängt ja auch davon ab, wie Veränderlich die Müllmenge ist.
3 240er können günstiger sein als 1 660er, wenn die Menge auch mal unter 480 sinkt und man dann die dritte Tonne nicht entsorgen muss.
Anzeige
Mülltonnen optimieren
28.04.2020 22:17:30
Daniel
hi
interessante Aufgabe, aber wie ich schon schrieb, das interessante sind die Kosten und da wird man mit Formeln keine Lösung erhalten.
da VBA gut angegeben ist, habe ich eine Funktion geschrieben, die alle Varianten durchrechnet und die beste in Bezug auf Kosten ausgibt.
damit das ganze funktioniert, muss man das ganze so aufbauen:
1. den unten gezeigten Code in ein allgemeines Modul
2. die Volumen der Tonnen müssen in einer Spalte untereinander stehen
3. die Kosten pro Tonne müssen in der Spalte daneben stehen
4. Müllvolumen und die maximale Anzahl an Tonnen die verwendet werden darf können in zwei weiteren Zellen angegeben werden oder auch direkt in der Formel.
um die Formel einzugeben, markiert man die Zellen neben der PreisSpalte, gibt die Formel in der Form ein:
C2:C5: =Tonnenoptimierung(B1;C1;A2:B5)
die Eingabe muss mit STRG+SHIFT+ENTER abgeschlossen werden.
B1: Müllvolumen
C1: Maximale Anzahl an Tonne
A2:B5: Liste mit Tonnenvolumen und Preis
hier der Code, die Berechnung erfolgt mit Rekursion, daher ist die Anzahl der verwendbaren Tonnen flexibel.
Option Explicit
Dim Tonne, Preis, Kosten, Volumen, Anzahl, Ergebnis
Dim KostenMin As Double
Dim AnzahlMin As Double
Dim AnzT As Long
Dim MaxAnz As Long
Dim MüllVol As Double
Function Tonnenoptimierung(MüllVolumen As Double, MaxAnzahl As Long, LiterPreisListe) As  _
Variant
Dim x As Long
Dim i As Long
x = UBound(LiterPreisListe.Value, 1)
AnzT = x
MaxAnz = MaxAnzahl
MüllVol = MüllVolumen
ReDim Tonne(1 To x)
ReDim Preis(1 To x)
ReDim Kosten(1 To x)
ReDim Volumen(1 To x)
ReDim Anzahl(1 To x) As Long
For i = 1 To x
Tonne(i) = LiterPreisListe(i, 1)
Preis(i) = LiterPreisListe(i, 2)
Next
KostenMin = 9 ^ 9
AnzahlMin = 9 ^ 9
Call Rechnen(1)
Tonnenoptimierung = WorksheetFunction.Transpose(Ergebnis)
End Function
Private Sub Rechnen(pos As Long)
Dim Kst   As Double, Vol As Double, Anz As Long
Dim z As Long
For z = 0 To MaxAnz
Anzahl(pos) = z
Kosten(pos) = z * Preis(pos)
Volumen(pos) = z * Tonne(pos)
If pos = MüllVol Then
If Kst 

wer nur auf restvolumen optimieren will, gibt als Preis Werte ein, die proportional zum Tonnenvolumen sind.
Gruß Daniel
Anzeige
Mülltonnen optimieren
28.04.2020 22:17:31
Daniel
hi
interessante Aufgabe, aber wie ich schon schrieb, das interessante sind die Kosten und da wird man mit Formeln keine Lösung erhalten.
da VBA gut angegeben ist, habe ich eine Funktion geschrieben, die alle Varianten durchrechnet und die beste in Bezug auf Kosten ausgibt.
damit das ganze funktioniert, muss man das ganze so aufbauen:
1. den unten gezeigten Code in ein allgemeines Modul
2. die Volumen der Tonnen müssen in einer Spalte untereinander stehen
3. die Kosten pro Tonne müssen in der Spalte daneben stehen
4. Müllvolumen und die maximale Anzahl an Tonnen die verwendet werden darf können in zwei weiteren Zellen angegeben werden oder auch direkt in der Formel.
um die Formel einzugeben, markiert man die Zellen neben der PreisSpalte, gibt die Formel in der Form ein:
C2:C5: =Tonnenoptimierung(B1;C1;A2:B5)
die Eingabe muss mit STRG+SHIFT+ENTER abgeschlossen werden.
B1: Müllvolumen
C1: Maximale Anzahl an Tonne
A2:B5: Liste mit Tonnenvolumen und Preis
hier der Code, die Berechnung erfolgt mit Rekursion, daher ist die Anzahl der verwendbaren Tonnen flexibel.
Option Explicit
Dim Tonne, Preis, Kosten, Volumen, Anzahl, Ergebnis
Dim KostenMin As Double
Dim AnzahlMin As Double
Dim AnzT As Long
Dim MaxAnz As Long
Dim MüllVol As Double
Function Tonnenoptimierung(MüllVolumen As Double, MaxAnzahl As Long, LiterPreisListe) As  _
Variant
Dim x As Long
Dim i As Long
x = UBound(LiterPreisListe.Value, 1)
AnzT = x
MaxAnz = MaxAnzahl
MüllVol = MüllVolumen
ReDim Tonne(1 To x)
ReDim Preis(1 To x)
ReDim Kosten(1 To x)
ReDim Volumen(1 To x)
ReDim Anzahl(1 To x) As Long
For i = 1 To x
Tonne(i) = LiterPreisListe(i, 1)
Preis(i) = LiterPreisListe(i, 2)
Next
KostenMin = 9 ^ 9
AnzahlMin = 9 ^ 9
Call Rechnen(1)
Tonnenoptimierung = WorksheetFunction.Transpose(Ergebnis)
End Function
Private Sub Rechnen(pos As Long)
Dim Kst   As Double, Vol As Double, Anz As Long
Dim z As Long
For z = 0 To MaxAnz
Anzahl(pos) = z
Kosten(pos) = z * Preis(pos)
Volumen(pos) = z * Tonne(pos)
If pos = MüllVol Then
If Kst 

wer nur auf restvolumen optimieren will, gibt als Preis Werte ein, die proportional zum Tonnenvolumen sind.
Gruß Daniel
Anzeige
AW: Mülltonnen optimieren
29.04.2020 07:50:10
Robert
Hallo Daniel - hallo an alle anderen!
Erst einmal 1000 Dank, das ist ja der Wahnsinn, wie euch mein Müllproblem beschäftigt!
Ich hätte nicht gedacht, dass das so akribisch angegangen wird... :-)
Solange ich Daniels Funktionen noch nicht zum Laufen bekomme, werde ich erst einmal die einfache Formel verwenden...
@Daniel: So ganz will's bei mir nicht, den Ansatz finde ich aber spannend! Mich interessiert zwar der Preis für die Tonnen nicht so sehr, mehr die benötigte Aufstellfläche, aber die kann ich ja auch statt den Euros ansetzen und optimieren lassen!
Also: Ich habe die Tabelle aufgebaut wie beschrieben und in C2:C5 diese Matrix-Formel mit den geschweiften Klammern eingetragen
(Frage hierzu: Muss es nicht in jeder Zelle heißen {=Tonnenoptimierung(B$1;C$1;A$2:B$5)}, um die Zellbezüge zu fixieren?)
Dann habe ich den tollen Code ins VBA reinkopiert unter "Diese Arbeitsmappe" - "(Allgemein)"
Leider findet die Tabelle wohl die Funktion "Tonnenoptimierung" nicht ("#NAME?"). ? Wo ist mein Fehler - sorry, steh vorm Baum. (Makros kann ich langsam, Funktionen lern ich wohl grad ;-))
Nochmals DANKE!
Robert
Anzeige
AW: Mülltonnen optimieren
29.04.2020 08:52:36
Daniel
Hi
Der Code muss in ein allgemeines Modul "Modul1", welches FU über "Einfügen" erst erstellen musst.
Bei dieser Funktion handelt es sich um eine Matrix-Funktion, dh es ist eine Funktion, die nicht einen, sondern mehrere Werte als Ergebnis ausgibt.
Daher muss man, wenn man die Formel eingibt, alle Zellen die zur Ausgabe benötigt werden markieren und die Formeleingabe mit STRG +SHIFT+Enter abschließen.
Gruß Daniel
AW: Mülltonnen optimieren
29.04.2020 09:41:48
Robert
Ahhh - DANKE!!
Es geht doch nichts über eine gute Anleitung für Betriebsblinde...
Super, wie das läuft! Spitze!
Viele Grüße
Robert
AW: Betrag aufspliiten mit aufrunden
29.04.2020 09:44:15
Robert
Hallo in die Runde!
Nochmals ein ganz liebes Danke an alle, die sich reingefuchst haben!
Nachdem Daniel das ganze für Dumme nochmals erklärt hat, ist seine Wahnsinns-Funktion der absolute Hammer und DIE Lösung schlechthin! Danke!
Fazit:
Beitrag gelöst und geschlossen! :-)
Viele Grüße
Robert
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige