Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sortieren nach Werte-Vergleich

Sortieren nach Werte-Vergleich
24.03.2021 11:56:26
Marcel
Hallo Zusammen,
ich versuche meine Tabelle nach folgenden Kriterien zu sortieren:
1. Sortieren nach Zell Farbe oder Text (Material vorhanden ja/nein)
2. Ergebnisse von 1. Sortieren nach Datum (Lieferdatum)
3. Auslastung in %
a. Betrachte nur Ergebnisse von 1. und 2.
b. Fenster für Auslastung vom aktuellen/letzten Auftrag
c. Suche Folgeauftrag der zu einer möglichst hohen Auslastung führt
d. Wenn mehrere Ergebnisse möglich/gleich oder in einer Toleranz (>90% Auslastung) früheres Lieferdatum wählen
Die Spalte „Auslastung“ gibt Auskunft über die benötigten Geräte zur Vorbereitung und Produktion. Dazu soll der Prozentwert von zwei aufeinanderfolgenden nicht über 100%, aber möglichst nah an 100% sein. Sortiert werden sollen aber nur die Werte für die Material vorhanden ist.
Meine Beispiel Datei hab ich dazu hochgeladen:
https://www.herber.de/bbs/user/145069.xlsm
Mein Code arbeitet nur Schritt 1. und 2. ab für 3. habe ich angefangen ein Array mit den zu _ betrachteten Werten zu füllen, weiß aber nicht wie ich hier weiter vorgehen kann.

Sub Sort()
' Sort Makro
Dim auslastung()
Dim size As Integer
Dim i As Integer
ActiveWorkbook.Worksheets("Reihenfolge").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Reihenfolge").Sort.SortFields.Add(Range("A:A"), _
xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(112, _
173, 71)
ActiveWorkbook.Worksheets("Reihenfolge").Sort.SortFields.Add2 Key:=Range( _
"B:B"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"Mo,Di,Mi,Do,Fr,Sa,So", DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Reihenfolge").Sort
.SetRange Range("A:E")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
size = WorksheetFunction.CountIf(Range("A:A"), "Ja")
ReDim auslastung(size)
For i = 0 To size
auslastung(i) = Cells(i + 1, 3).Value
Next i
End Sub
Der Aufbau der Tabelle ist beispielhaft:
MaterialLieferterminAuslastungStunden VorbereitungStunden Produktion
Ja01.09.202080,00%164
Ja03.09.202050,00%912
Ja06.09.20205,00%15
Ja08.09.202030,00%710
Ja09.09.202045,00%93
Ja11.09.202019,00%46
Ja12.09.202021,00%416
Ja13.09.202070,00%157
Nein02.09.202060,00%148
Nein04.09.202060,00%1412
Nein05.09.202060,00%149
Nein07.09.202015,00%313
Nein10.09.202023,00%48
Erstellt mit dem HTML Tabellen Generator von Züssi
Danke schonmal für jede Hilfe!
Viele Grüße
Marcel

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sortieren nach Werte-Vergleich
24.03.2021 17:59:30
Piet
Hallo
der Fehler lag offenbar in der Schreibweise beim Original Sortieren. Man kann den Code eleganter schreiben. Ich weiss nicht ob bei der Datum Spalte der Text "Mo,Di," usw. unbedingt erforderlich ist. Wenn ja bitte wieder einfügen.
mfg Piet
Sub Sort()
Dim auslastung()
Dim size As Integer
Dim i As Integer
With ActiveWorkbook.Worksheets("Reihenfolge")
.Sort.SortFields.Clear
.Sort.SortFields.Add(Range("A:A"), xlSortOnCellColor, xlAscending, , _
xlSortNormal).SortOnValue.Color = RGB(112, 173, 71)
.Sort.SortFields.Add Key:=Range("B:B"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=Range("C:C"), SortOn:=xlSortOnValues, _
Order:=xlDescending, DataOption:=xlSortNormal
With .Sort
.SetRange Range("A:E")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
size = WorksheetFunction.CountIf(Range("A:A"), "Ja")
ReDim auslastung(size)
For i = 0 To size
auslastung(i) = Cells(i + 1, 3).Value
Next i
End Sub


Anzeige
AW: Sortieren nach Werte-Vergleich
24.03.2021 18:22:05
Marcel
Hallo Piet,
vielen Dank für deine Antwort. Die Änderung soweit ich sie verstehe sortiert die Spalte C nach absteigender Größe. Dies berücksichtigt aber leider nicht die Kriterien b,c und d für 3.(Fehlen auch komplett im Code).Die Notwendigkeit des CustomOrder Befehls (Mo,Di,...) ist nicht gegeben. Ich habe die Sortierung für 1. und 2. über die Funktion "Makro aufzeichnen" erstellt und die Range im nachhinnein angepasst. Daher stammt dieser Befehl. Auf welchen Fehler du dich beim "Orginal sortieren" beziehst kann ich leider nicht nachvollziehen der Code so wie ich ihn gepostet habe funktioniert für mich Fehlerfrei.
Viele Grüße
Marcel

Anzeige
AW: Sortieren nach Werte-Vergleich
24.03.2021 19:21:47
Yal
Hallo Marcel,
Die Farbe sollte das Ergbenis eine Information sein. Nicht umgekehrt. Ja und Nein kann man mit 0 und 1 speichern. Wenn es unbedingt "Ja"/"Nein" angezeigt werden muss, dann benutzerdefinierte Zahlenformat
"Ja";-;"Nein";-
verwenden. Mit Gültigkeitsprüfung sicherst Du zusätzlich, dass nur 0 und 1 eingegeben werden.
Die Mo;Di;Mi; sind mit der Formel WOCHENTAG auf das Datum in 1 bis 7 zu haben. Warum diese Wochentag als Sortierungsschlüssel verwendet werden soll, ist mir nicht schlüssig (Wöchentlich wiederkehrende Aufträge?)
Das Sortieren vom Feld "Auslastung" macht nur Sinn, wenn mehrere Aufträge am selben Tag zu liefern sind. In dein Beispiel leider nicht drin.
Die Auslastung ist allgemein nicht prozentuell auf 100 zu vervollständigen, sondern in Stunden: der Mensch bis 8 Std, die Maschine 24 Std (wenn sie allein arbeiten kann), und daher 20% nicht gleich wie 20% Maschine. Die Auslastung in Prozent ist ein Ausgangs- und nicht Eingangsgrösse .
Die Aussage "der Prozentwert von zwei aufeinanderfolgenden nicht über 100%" ist auch nicht direkt nachvollziehbar: was ist, wenn ich 100% in 3 Aufträge in 30-30-40 in einem Tag reinpacken könnte?
Warum kann ein Auftrag, der 8 Std braucht, nicht heute 3 Std und der Rest morgen gefertigt werden?
Der Dozent, der diese Excel-Beschäftigung verteilt hat, hat null Ahnung von Produktionsteuerung. Man fertigt nicht etwas, was erst in 10 Tage geliefert werden soll, nur weil es schön "auf 100%" heute auslastet. Die -teueren, weil viel Arbeit drin steckt- fertigen Erzeugnisse müssen auch sicher gelagert werden.
Aber ich hoffe, die ersten Hinweis können Dir hilfreich sein ;-)
VG
Yal

Anzeige
AW: Sortieren nach Werte-Vergleich
24.03.2021 20:31:34
Marcel
Hallo Yal,
danke für deine Hinweise. Die Farbe ist nur als Visualisierungshilfe gedacht. Es soll nur angegeben werden ob das Material vorhanden ist oder nicht also wäre auch mit True oder False, 1 oder 0, X oder Leer möglich.Funktioniert aber so wie es jetzt ist auch.
Die Auflistung nach Mo,Di,Mi ist mit deiner Erklärung dann falsch in dem Code.
Die Auslastung bezieht sich nicht auf die Maschine sondern auf Materialbereitstellungshilfen(Feeder) die zum Vorrüsten und zum Produzieren notwendig sind deswegen immer nur die Betrachtung von zwei Aufträgen.
Über die Auslastung soll vorallem das paralelle Arbeiten ermöglicht werden also das Vorrüsten und Fertigen.
Das betrachten bzw einbeziehen der Stunden Anzahl ist praktisch natürlich Sinnvoll, würde die Aufgabe aber wesentlich komplizierter machen und ist nicht gefordert.
Viele Grüße
Marcel
Anzeige

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige