Hallo,
Anbei ein JMP-Datensatz mit Verbrauchsdaten für ein Teil.Ich habe ein Anfängerverständnis für Spaltenformeln, aber nicht genug, um mit diesem Datensatz das gewünschte Endergebnis zu erzielen.Ich möchte in der Lage sein, einen Anfangsbestand, einen Nachbestellpunkt, eine Vorlaufzeit und eine Bestellmenge in eine Formel oder ein Skript einzugeben, das anhand dieser Eingaben ausgibt, wie viele Teile noch im Lagerbestand verbleiben.Im folgenden Beispiel beginne ich mit einem Lagerbestand von 3637 Stücken.Mein Bestellbestand liegt bei 1510 Stück.Meine Bestellmenge (die Menge, die ich bestelle, wenn ich den Bestellpunkt erreiche) beträgt 600 Stück.In Zeile 11 liegt mein Gesamtbestand unter 1510, nachdem ich 572 Stück verbraucht habe, also gebe ich eine Bestellung über 600 Stück auf.Es dauert zwei Wochen, bis die Bestellung eintrifft, sodass meine Gesamtsumme weiter sinkt, bis die Bestellungen in Zeile 13 eingehen (jede Zeile entspricht einer Woche).Ich habe versucht, Funktionen wie Verzögerung zu verwenden, um eine ähnliche Ausgabe in JMP zu erstellen, aber ich bin ratlos.
| Woche | Aktueller Bestand | Verbrauch | Gesamt | Bestellung aufgeben? | Bestellung kommt an |
| 1 | 3637 | 234 | 3403 | NEIN | N |
| 2 | 3403 | 256 | 3147 | NEIN | N |
| 3 | 3147 | 272 | 2875 | NEIN | N |
| 4 | 2875 | 140 | 2735 | NEIN | N |
| 5 | 2735 | 204 | 2531 | NEIN | N |
| 6 | 2531 | 178 | 2353 | NEIN | N |
| 7 | 2353 | 112 | 2241 | NEIN | N |
| 8 | 2241 | 108 | 2133 | NEIN | N |
| 9 | 2133 | 380 | 1753 | NEIN | N |
| 10 | 1753 | 240 | 1513 | NEIN | N |
| 11 | 1513 | 572 | 941 | Ja | N |
| 12 | 941 | 370 | 571 | Ja | N |
| 13 | 571 | 586 | 585 | Ja | Y |
| 14 | 585 | 436 | 749 | Ja | Y |
| 15 | 749 | 449 | 900 | Ja | Y |
| 16 | 900 | 432 | 1068 | Ja | Y |
| 17 | 1068 | 252 | 1416 | Ja | Y |
| 18 | 1416 | 182 | 1834 | NEIN | Y |
| 19 | 1834 | 327 | 2107 | NEIN | Y |
| 20 | 2107 | 176 | 1931 | NEIN | N |
| 21 | 1931 | 367 | 1564 | NEIN | N |
| 22 | 1564 | 498 | 1066 | Ja | N |
| 23 | 1066 | 225 | 1441 | Ja | Y |
| 24 | 1441 | 496 | 1545 | NEIN | Y |
| 25 | 1545 | 1203 | 942 | Ja | Y |
| 26 | 942 | 1011 | 531 | Ja | Y |
| 27 | 531 | 525 | 606 | Ja | Y |
| 28 | 606 | 933 | 273 | Ja | Y |
| 29 | 273 | 541 | 332 | Ja | Y |
| 30 | 332 | 670 | 262 | Ja | Y |
| 31 | 262 | 146 | 716 | Ja | Y |
| 32 | 716 | 124 | 1192 | Ja | Y |
| 33 | 1192 | 107 | 1685 | NEIN | Y |
| 34 | 1685 | 187 | 2098 | NEIN | Y |
Hier ist ein Skript, das die gewünschte neue Datentabelle erstellt.
Names Default To Here( 1 );
dt = Data Table( "Part A Inventory Data" );
dtRpt = New Table( "Output Report",
Add Rows( N Rows( dt ) ),
New Column( "Week", set each value( Row() ) ),
New Column( "Inventory on Hand" ),
New Column( "Consumption", set each value( dt:Number of pieces consumed[Row()] ) ),
New Column( "Total" ),
New Column( "Place Order", character ),
New Column( "Order Arrives", character )
);
Current Data Table( dtRpt );
StartingIOH = 3637;
For( i = 1, i <= N Rows( dtRpt ), i++,
If( i == 1,
:"Inventory On Hand"n[i] = StartingIOH,
:"Inventory On Hand"n[i] = :Total[i - 1]
);
If( :"Order Arrives"n[i] == "",
:"Order Arrives"n[i] = "N"
);
:Total[i] = :"Inventory On Hand"n[i] - :Consumption[i];
If( :"Order Arrives"n[i] == "Y",
:Total[i] += 600
);
If( :Total[i] < 1510,
:"Place Order"n[i] = "Yes";
:"Order Arrives"n[i + 2] = "Y";
,
:"Place Order"n[i] = "No"
);
);

In Ihrer Berichtstabelle scheint es in Zeile 22 eine Diskrepanz zu geben.Sie geben an, neue Teile zu bestellen, melden jedoch, dass diese innerhalb einer Woche und nicht erst nach zwei Wochen eingetroffen sind.Mein Skript legt die Ankunftswoche basierend auf Ihrer Angabe einer zweiwöchigen Bestellverzögerung fest.
Vielen Dank, Sir, das ist großartig!