26.10.2018, 12:02
Hallo Zusammen,
in meiner Arbeitsmappe habe ich zwei Tabellen:
Die erste Tabelle (A1:D10) zeigt alle geplanten Maschinen mit dem Start Datum (AGA Start) an dem angefangen werden soll die Maschine zu bauen.
Die zweite Tabelle (F1:I10) zeigt alle Teilespeicher (TSP), die ab dem Datum (POS End) zur Verfügung stehen.
Mein Wunsch ist es nun, dass das Makro die TSP an die Maschinen verteilt damit am Ende die günstigste Option heraus kommt. Der TSP kostet am Tag 5€
Der folgende Code zeigt mir leider nur die Kosten an wenn TSP1 für Maschine1 / TSP2 für Maschine2 / ... / TSP10 für Maschine10 verwendet wird.
Was muss ich ändern, damit wirklich alle Möglichkeiten der Verteilung probiert werden und am Schluss die günstigste Variante angezeigt wird?
Ich hoffe jemand kann mir dabei helfen. Ich weiß, dass der Code wahrscheinlich sehr viel länger wird und das ein großes Makro wird. Wäre euch sehr dankbar wenn mir jemand bei diesem Mamutprojekt behilflich sein kann.
Durch klick auf den Button startet die Simulation, wenn ihr erneut testen wollt müsst ihr die Spalten "C" / "H" / "J" wieder löschen.
in meiner Arbeitsmappe habe ich zwei Tabellen:
Die erste Tabelle (A1:D10) zeigt alle geplanten Maschinen mit dem Start Datum (AGA Start) an dem angefangen werden soll die Maschine zu bauen.
Die zweite Tabelle (F1:I10) zeigt alle Teilespeicher (TSP), die ab dem Datum (POS End) zur Verfügung stehen.
Mein Wunsch ist es nun, dass das Makro die TSP an die Maschinen verteilt damit am Ende die günstigste Option heraus kommt. Der TSP kostet am Tag 5€
Der folgende Code zeigt mir leider nur die Kosten an wenn TSP1 für Maschine1 / TSP2 für Maschine2 / ... / TSP10 für Maschine10 verwendet wird.
Code:
Sub TSP_Simulation()
Dim TSP_Lastrow As Long, Machine_Lastrow As Long
Dim Day_min() As Long, tsp_nr() As Long, machine_nr() As Long _
, Costs() As Long
Dim tsp() As String, machine() As String
Dim size_tsp As Integer, size_machine As Integer, TSP_Costs As Integer, Not_available As Integer
Dim TSP_Range As Range, machine_Range As Range
size_tsp = WorksheetFunction.CountA(Worksheets(1).Columns(6))
size_machine = WorksheetFunction.CountA(Worksheets(1).Columns(1))
TSP_Lastrow = ActiveSheet.Cells(Rows.Count, "I").End(xlUp).Row
Machine_Lastrow = ActiveSheet.Cells(Rows.Count, "D").End(xlUp).Row
ReDim tsp(size_tsp), machine(size_machine) _
, tsp_nr(size_tsp), machine_nr(size_machine) _
, Day_min(size_tsp), Costs(size_machine)
' Zeitspanne zwischen POS Ende & AGA Start berechnen:
' MsgBox DateDiff("D", Cells(2, 9).Value, Cells(2, 4).Value) & vbCr & _
DateDiff("D", Cells(2, 9).Value, Cells(3, 4).Value)
b = 2
For a = 2 To TSP_Lastrow
c = 0
' Choose first TSP:
Set TSP_Range = Cells(a, 8)
tsp(a) = Cells(a, 6).Value
tsp_nr(a) = Cells(a, 7).Value
' Check if Machine has no TSP:
For b = 2 To Machine_Lastrow
If IsEmpty(Cells(b, 3)) Then
DayDiff = DateDiff("D", Cells(a, 9).Value, Cells(b, 4).Value)
If DayDiff < 0 Then
c = c + 1
GoTo Line1
End If
TSP_Costs = DayDiff * 5
Costs(c) = TSP_Costs
machine(c) = Cells(b, 1)
machine_nr(c) = Cells(b, 2)
Else: GoTo Line1
End If
c = c + 1
Line1: Next b
y = Application.Min(Costs)
Range("J" & a) = Costs(y)
Range("C" & a) = tsp_nr(a)
TSP_Range.Value = machine_nr(y)
Next a
End Sub
Was muss ich ändern, damit wirklich alle Möglichkeiten der Verteilung probiert werden und am Schluss die günstigste Variante angezeigt wird?
Ich hoffe jemand kann mir dabei helfen. Ich weiß, dass der Code wahrscheinlich sehr viel länger wird und das ein großes Makro wird. Wäre euch sehr dankbar wenn mir jemand bei diesem Mamutprojekt behilflich sein kann.
Durch klick auf den Button startet die Simulation, wenn ihr erneut testen wollt müsst ihr die Spalten "C" / "H" / "J" wieder löschen.