Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA - Alle Möglichkeiten der Verteilung prüfen
#1
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.

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.


Angehängte Dateien
.xlsm   Simulation_Test.xlsm (Größe: 22,9 KB / Downloads: 4)
Antworten Top
#2
Hallo M...,

zu
Zitat: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€
Ich habe noch nicht verstanden, was zu optimieren ist.
Hier einige Fragen:
1. Für welchen Zeitraum ist die Bezahlung zu berücksichtigen?
2. Kann ich nicht für verschiedene Maschinen den gleichen Teilespeicher nutzen?
3. Wenn der TSP einen Tageswert hat, muss er auch für andere Anwendungen genutzt werden können. Wäre es da nicht sinnvoll, den TSP in der Zeit, in der er nicht für meine Anwendung benötigt wird freizugeben?
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste