4.4k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Leute,

habe das Problem bei Office-Lösung.de gepostet, aber noch keine Antwort erhalten.

Haben in der Fachoberschule eine Aufgabe zu Excel oder VBA bekommen, und ich bin da noch nicht soooo fit drin. Wenn mir einer helfen könnte, Ansätze wären auch großartig...das wäre supi!!!!

Aufgabe:

Konditorei "Meier-Schulze" hat 7 gleiche Öfen. An einem Tag (betrachtete Periode) werden 10 Artikel gebacken (10 Verschiedene Kuchen). Die Backzeiten für die Artikel sind:

Artikel 1: 40 min.
Artikel 2: 40 min.
Artikel 3: 40 min.
Artikel 4: 50 min.
Artikel 5: 50 min.
Artikel 6: 60 min.
Artikel 7: 60 min.
Artikel 8: 60 min.
Artikel 9: 100 min.
Artikel 10: 100 min.

Die Öfen sollen möglichst gleichmäßig und "automatisch" mit den Artikeln belegt werden (Die 7 Öfen in einem Diagramm und die Zeiten als Balken darstellen)! Maximale Kapazitätsauslastung ist erwünscht.

Habe es mit Excel versucht...komme auf keinen grünen Zweig...in VBA sind meine Fähigkeiten nicht ausreichend...muss da eventuell eine Schleife rein???

Danke im Voraus!!!!!

21 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Julie,

habe das Problem bei Office-Lösung.de gepostet, aber noch
keine Antwort erhalten.


... das mag daran liegen, dass ein Forum keine Institution zur Lösung
von Hausaufgaben ist.

Man hilft Dir bestimmt gerne bei Excelfragen, aber Deine Frage ist zu
allererst mathematischer Natur.

Du solltest das Problem deshalb erst mal mathematisch aufbereiten
und dann kannst Du die gezielte Excelfragen stellen bei denen Du nicht
mehr weiter kommst.

Gruß
Rainer
0 Punkte
Beantwortet von
Hi Rainer,

das sehe ich ein...mit wäre mit Tipps schon sehr geholfen, es soll ja niemand meine Hausaufgaben machen...würde es gern weitesgehend selbst lösen..nur komme ich nicht auf die zündende Idee?! Wie kann ich das mathematisch angehen?!

Danke!
0 Punkte
Beantwortet von
Hallo,

das ist eine Optimierungsaufgabe. Google mal nach Operations Research. Dort solltest du auf alle Fälle fündig werden.
Optimal wäre hierfür "Branch and Bound" allerdings sollte dich das "Simplex Verfahren" auch ans Ziel bringen und ist nicht ganz so komplex.

Gruß
LittleT
0 Punkte
Beantwortet von
Hi Little T,

Danke für den Tipp...werde es mir gleich anschauen...
0 Punkte
Beantwortet von
Hallo,

hätte da mal einen VBA Code geschrieben der das macht was du willst
In die ersten beiden Spalten kommt Artikelnummer und Anzahl

Also Spalte A:
Artikel 1:
Artikel 2:
usw.

In Spalte B:
100
100
60
60
usw

Hab mir dann einen Button gemacht der die Berechnung startet und dahinter folgenden Code gelegt.

Private Sub CommandButton1_Click()

'Hauptsache das ganze ist mal sortiert
Columns("A:B").Select
Selection.Sort Key1:=Range("B1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

'Anzahl der Öfen: 7
anzahl_ofen = 7
Dim ofen(7) As Variant

ersteStelle = 1


For j = 0 To anzahl_ofen - 1
wert = Worksheets("Tabelle1").Cells(ersteStelle, 2).Value
ofen(j) = wert
ersteStelle = ersteStelle + 1
Next j

For k = anzahl_ofen - 1 To 0 Step -1
wert = Worksheets("Tabelle1").Cells(ersteStelle, 2).Value
ofen(k) = ofen(k) + wert
ersteStelle = ersteStelle + 1
Next k


For i = 1 To 7
Worksheets("Tabelle1").Cells(i, 4) = ofen(i - 1)
Next i

End Sub
0 Punkte
Beantwortet von
Hallo nochmal,

habe gerade festgestellt, dass mein Progrämmchen verbesserungswürdig ist, da es kein wirklicher Optimierungsalgorithmus ist.

Sollten es mehr Werte in Spalte B werden (Beispiel noch 3x 20 Minuten) So würden die letzten 20 Minuten auf den ofen mit bereits 100 Minuten gebucht, obwohl noch ein ofen mit 80 Minuten frei wäre.

Ergebnis wäre dann folgendes:
Ofen1= 100
Ofen2 =120
Ofen3= 80
Ofen4= 80
Ofen5=100
Ofen6=90
Ofen7=90

In Prinzip könntest du dir eine Funktion schreiben welche dir jetzt nach jedem mal addieren im Array das Array umsortiert. Dann hättest du immer den niedrigsten Wert im Array und zu dem Wert die nächste Stelle addiert. Das wäre denke ich das Optimum.

Viel Spass beim tüfteln.

Solche Aufgaben können das Hirn ganz schön zum Rauchen bringen ;-)

Gruß
LittleT
0 Punkte
Beantwortet von
Prima...Herzlichen Dank Little T.....werde das sofort ausprobieren.....
0 Punkte
Beantwortet von
In Prinzip könntest du dir eine Funktion schreiben welche dir jetzt nach jedem mal addieren im Array das Array umsortiert. Dann hättest du immer den niedrigsten Wert im Array und zu dem Wert die nächste Stelle addiert. Das wäre denke ich das Optimum.


...genau das ist der Knackpunkt...werde es versuchen!!! Lieben Dank nochmal!!!
0 Punkte
Beantwortet von
Hey Little T....dein Werk funktioniert!!!

Eine Frage habe ich noch an den Meister....

For i = 1 To 7
Worksheets("Tabelle1").Cells(i, 4) = ofen(i - 1)
Next i


Wie bekomme ich das hin, dass die Artikelzeiten so (siehe Darstellung unten) nacheinander in der ersten Spalte absteigend, in der 2ten aufsteigend, in der 3ten absteigend u.s.w aufgelistet werden.....???

Artikel Zeit
1 100
2 100
3 60
4 60
5 50
6 50
7 40
8 40
9 40
10 20
11 20
12 15


Spalte 1 Spalte 2 Spalte 3
Ofen1 100
Ofen2 100
Ofen3 60 u.s.w
Ofen4 60 15
Ofen5 50 20
Ofen6 50 40
Ofen7 40 40


Danke für die Mühen!!!
0 Punkte
Beantwortet von
Hallo,

am einfachsten kannst du das machen indem du dir ein Makro aufzeichnest.
Dazu gehst du folgendermaßen vor:

Unter Extra --> Makro --> Aufzeichnen
Da erscheint dann so ein Fenster

Jetzt kannst du die gewünschte Aktion durchführen; also die 3 Spalten Markieren und dann auf Daten-->Sortieren.
Hier die Sortierreihenfolge festlegen

Danach in dem Fenster das durch die Aufzeichnung erschienen ist auf stopp drücken. Wenn du im VB Editor bist hast du nun im Projektexplorer ein Modul.
Sollte es nicht sichtbar sein, so kannst du es unter Ansicht-->Projekt Explorer anzeigen.
In dem Modul steht nun der Quellcode der Aufgezeichnet wurde.

Diesen Quellcode kannst du dann verwenden.

Gruß
LittleT
...