Scheduling Excel
Scheduling Excel
Scheduling Excel
E-mail Us:
Web Site
Production-Scheduling.com
Thank you for downloading this free tutorial, I hope it will be of use to you.
Introduction
For years spreadsheets have been used to design and prototype scheduling systems.
They have now grown up, and are being used to develop serious production scheduling
applications.
Who Should Use This Tutorial
This tutorial is aimed at spreadsheet literate people who are involved in planning and scheduling
production activities. The techniques and formulas set out in this tutorial are being used by manufacturing
companies daily; this is a practical, not an academic, exercise.
Background to Scheduling With a Spreadsheet
We have been designing, building and implementing production scheduling systems for manufacturing
companies since 1990. When PC's and spreadsheets were less capable than they are now, we used
spreadsheets to design and prototype scheduling algorithms, and to train on some of the principles of
scheduling. Prototype designs were then handed over to software developers to write in more resilient and
efficient programming languages.
Often the pressure was on to throw several thousand records of data at the prototypes and use them for
live scheduling, before handing them over to the software developers. So, in order to 'shoehorn' a big
scheduling task into a small PC, we recorded macro's that wrote a formula, copied it down, overwrote the
cells with values, then moved on to the next column, so that no memory consuming live formulas were left
behind. Typically, most of the macro code prepared downloaded data for scheduling, and generated
reports from the schedule, with only a small portion of the macro calculating the schedule itself. We ended
up with big cumbersome macro driven scheduling systems that ordinary, spreadsheet literate people were
locked out of.
Thankfully we now have powerful computers which allow us to apply formulas to large amounts of data,
and we have features such as Excel's PivotTable which will re-arrange and summarise data for
scheduling, and prepare reports without resorting to writing macros. It makes the job, of building a
scheduling system with a spreadsheet, a whole lot easier, and within the capability of the average
speadsheet user.
Build Your Own System
Our offering to our clients has now changed, and we can now give them the option of either building a
scheduling system for them, or teaching their staff to build one for themselves, and providing guidence
while they do it.
Interface to Your ERP System
Our clients include companies such as Shell, Toyota and Unilever, as well as many smaller manufacturing
concerns. They all have ERP or older MRPII systems, and have felt that the functionality of their systems
need to be extended to give them the kind of responsive scheduling they are looking for. Spreadsheet
based scheduling applications have been interfaced to SAP, Baan and many other ERP systems.
Structured and Disciplined Approach
Spreadsheets have earned themselves a bad reputation amongst software purists, because they can, and
often are, used in an unstructured way. Building a scheduling system requires a structured and disciplined
approach. Please resist the trap, that many fall into, by creating a table on a single worksheet that looks
like the report that you want to see. The approach used here is to create lists in the form of databases,
with a heading at the top of each column, and with universal formulas that can be copied and pasted
down a column, and work on every row. If all the calculations are done in a structured database, then
reports, with sub-totals and charts, can easily be created with a PivotTable.
E-mail Us:
[email protected]
Web Site
www.Production-Scheduling.com
Introduction
Capacity Planning vs Finite Scheduling - the essential difference
Time cascades downwards
Re-sequencing the schedule
A Simple Gantt Chart
Setting up a Calendar
Calculation of Job Stop Time Through the Calendar
Julian Dates
Setting up a Julian Calendar
Using the Calendar Formulas
Multiple Machines or Work Centres
Joining Text Together and Indirect References
Separate Calendars for each Work Centre
Repetitive Production and Setups
A Set-up Matrix
Applying the Set-up Matrix Formula
Gantt Chart 2 - Hours per Day
Gantt Chart 3 - Units per Day
Working Hours Between Two Dates (Calendar Formula 2)
Applying Calendar Formula 2
Jobs That Pass Through Multiple Work Centres
Repetitive Production that Passes Through Multiple Work Centres
Transfer Batches
Re-Using Parts of the Calendar Formulas
Repetitive Production Through Multiple Work Centres, With Calendars
A Pull Schedule
Push and Pull Schedule
Working Backwards Through a Calendar (Calendar Formula 3)
Applying Calendar Formula 3 to a Pull Schedule
Multiple Work Centre - Pull Schedule
Repetitive Production Through Multiple Work Centres - Pull Schedule
Repetitive Production, Multiple Work Centres, Pull Schedule, With Calendars
Push Pull Push - 3 Pass Logic
Multiple Work Centre - 3 Pass Schedule
Repetitive Production Through Multiple Work Centres - 3 Pass Schedule
3 Pass Schedule With a Calendar
3 Pass Schedule With Multiple Calendars
Repetitive Production, 3 Pass Schedule With Multiple Calendars
Project Scheduling
Critical Path Analysis
Make-to-Stock (Inventory) Schedule
Make-to-Stock Logic Explained
Make-to-Stock Schedule - Formulas Explained
Inventory Cover Calculation
To Come:
Material Requirements to Support a Schedule
327734556.xls
Contents
Hours
7
12
4
5
8
Total
36
You have work totalling an estimated 36 hours to complete in a day (24 hours). You have a problem.
Capacity planning tells you that you have a problem by saying that you are (3624) 150% loaded
for the day, and leaves you to resolve the problem by adding more resources or negotiating
alternative due dates.
Finite scheduling, on the other hand, recognises that the capacity of the resource is finite, and tells
you that some of the jobs are going to be late, and it can also tell you:
- which jobs are going to be late
- how late they are going to be
- are they important jobs, or for important customers
- what revised delivery dates can be promised
- how all these would change if the Jobs were undertaken in a different sequence
I would argue that compared with capacity planning, finite scheduling gives you richer management
information.
327734556.xls
Section 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
A
B
C
Time cascades downwards
Hours
Start
Stop
Due
On time
job A
job B
job C
job D
job E
7
12
4
5
8
0
7
19
23
28
7
19
23
28
36
24
24
24
24
24
1
1
1
0
0
327734556.xls
Section 2
Jobs
Hours
Start
Stop
Due
1
2
3
4
5
job A
job C
job D
job E
job B
7
4
5
8
12
0
7
11
16
24
7
11
16
24
36
24
24
24
24
24
On time
1
1
1
1
0
If we do job B last, four out of the five jobs will be on time. The table was sorted into a different
sequence by entering the numbers 1 5 2 3 4 down the sequence column, and with the pointer in
the sequence column, clicking on the 'sort ascending' icon.
327734556.xls
Section 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
A
B
C
D
A Simple Gantt Chart
F G H I J K L M N O P Q R S T U V W X Y Z AAABACADAEAFAGAH AI AJAKALAMANAO
The start and stop times of each job are calculated by formulas that cascade down the columns, but as a visual aid, the
information may also be displayed as a Gantt chart. This is how you set it up:
- to the right of the schedule make narrow columns and head them from hours 1 to 36
Seq Jobs Hours Start Stop
1
2
3
4
5
job A
job C
job D
job E
job B
7
4
5
8
12
0
7
11
16
24
7
11
16
24
36
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
1 1 1 1 1 1 1
1 1 1 1
1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
327734556.xls
Section 4
Setting up a Calendar
So far we have assumed that the work centre works 24 hours a day without a break, as would a continuous process such as
an oil refinery or a paper mill. However, if it is not a continuous process we need to define the working periods during which the
work centre is available. Here is an example of a calendar in hours, and decimals of an hour
(later we will examine dates and times):
Period
Number
1
2
3
4
5
6
Begin
0
8
10.25
13.5
15.75
19
End
0
10
13
15.5
18
22
Working
Hours
0
2
2.75
2
2.25
3
Working
Hours so
far (Cum)
0
2
4.75
6.75
9
12
End
10
13
15.5
16.5
Duration
1.5
2.75
2
0.75
7
With a bit of trial and error you can work out that the answer is at hour 16.5 or 4:30 pm
However, a more comprehensive calculation is set out on the next worksheet.
327734556.xls
Section 5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
A
B
C
D
E
Calculation of Job Stop Time Through the Calendar
This gets complex, so you can skip this part if you wish and just accept that the forulae work when you apply them, or you can
persevere and understand how the formulas work. The start of the job could be within a working period, or it could fall between two
working periods. Here is the calendar again:
Period
Number
1
2
3
4
5
6
Begin
End
0
8
10.25
13.5
15.75
19
Working
Working Hours so far
Hours
(Cum)
0
10
13
15.5
18
22
Starting a job at:
Work for:
0
2
2.75
2
2.25
3
0
2
4.75
6.75
9
12
8.5
7
(8:30 AM)
hours
2
1
2
8
10
8.5
1.5
2
0.5
7.5
5
9
18
1.5
16.5
=MATCH(E16,B9:B14)
=MATCH(E16,C9:C14)
=G21+(G21=G22)
=INDEX(B9:B14,G23,1)
=INDEX(C9:C14,G23,1)
=MAX(G24,E16)
=G25-G26
=INDEX(E9:E14,G23,1)
=G28-G27
=G29+E17
=MATCH(G30,E9:E14)+1
=INDEX(E9:E14,G31,1)
=INDEX(C9:C14,G31,1)
=G32-G30
=G33-G34
2
0.5
5
16.5
=MATCH(E16,B9:B14)+(MATCH(E16,B9:B14)=MATCH(E16,C9:C14))
=INDEX(E9:E14,B39,1)-(INDEX(C9:C14,B39,1)-MAX(INDEX(B9:B14,B39,1),E16))
=MATCH(B40+E17,E9:E14)+1
=INDEX(C9:C14,B41,1)-INDEX(E9:E14,B41,1)+B40+E17
327734556.xls
Section 6
Julian Dates
It was Julius Caeser who first established the calendar based on 365 days per year with leap years, hence
Julian dates. One of the reasons why spreadsheets are so good for scheduling is the way that they handle
dates and times. All spreadsheets start counting time in days, and decimals of a day, from midnight before
1st January 1900, and there are enough decimal places of a day to measure time to the nearest 3
thousanth of a second!
This is the date and time according to the system clock in this computer, using the =NOW() function:
42607.1403649099 days since 1 January 1900
Keep hitting the F9 key to recalculate, and watch the clock change. Add 1 to it and you get the same time
tomorrow. The really neat thing is that we only have one unit for measuring time, a day. We dont have to
worry about seconds, minutes, hours, weeks, fortnights, months, quarters, years, decades and centuries.
However we can display the date and time in different ways with Format Cells|Number|Date and Time.
Here are some different formats of NOW:
3:22:08
3:22:08 AM
3:22 AM
8/25
8/25/16
25-Aug
25-Aug-16
August-16
August 25, 2016
A-16
and by using =TEXT:
Thu
ThursdayThursday
Aug
A08
2016
Take a look also at the date and time functions.
The spreadsheet takes care of the days in each month, and leap years etc.
327734556.xls
Section 7
Hours
Day
2
2.75
2
2.25
3
2
2.75
2
2.25
3
2
2.75
2
2.25
3
2
2.75
2
2.25
3
2
2.75
2
2.25
2
2.75
2
2.25
3
Mon
Mon
Mon
Mon
Mon
Tue
Tue
Tue
Tue
Tue
Wed
Wed
Wed
Wed
Wed
Thu
Thu
Thu
Thu
Thu
Fri
Fri
Fri
Fri
Mon
Mon
Mon
Mon
Mon
Begin
3/13/00 8:00 AM
3/13/00 10:15 AM
3/13/00 1:30 PM
3/13/00 3:45 PM
3/13/00 7:00 PM
3/14/00 8:00 AM
3/14/00 10:15 AM
3/14/00 1:30 PM
3/14/00 3:45 PM
3/14/00 7:00 PM
3/15/00 8:00 AM
3/15/00 10:15 AM
3/15/00 1:30 PM
3/15/00 3:45 PM
3/15/00 7:00 PM
3/16/00 8:00 AM
3/16/00 10:15 AM
3/16/00 1:30 PM
3/16/00 3:45 PM
3/16/00 7:00 PM
3/17/00 8:00 AM
3/17/00 10:15 AM
3/17/00 1:30 PM
3/17/00 3:45 PM
3/20/00 8:00 AM
3/20/00 10:15 AM
3/20/00 1:30 PM
3/20/00 3:45 PM
3/20/00 7:00 PM
End
3/13/00 10:00 AM
3/13/00 1:00 PM
3/13/00 3:30 PM
3/13/00 6:00 PM
3/13/00 10:00 PM
3/14/00 10:00 AM
3/14/00 1:00 PM
3/14/00 3:30 PM
3/14/00 6:00 PM
3/14/00 10:00 PM
3/15/00 10:00 AM
3/15/00 1:00 PM
3/15/00 3:30 PM
3/15/00 6:00 PM
3/15/00 10:00 PM
3/16/00 10:00 AM
3/16/00 1:00 PM
3/16/00 3:30 PM
3/16/00 6:00 PM
3/16/00 10:00 PM
3/17/00 10:00 AM
3/17/00 1:00 PM
3/17/00 3:30 PM
3/17/00 6:00 PM
3/20/00 10:00 AM
3/20/00 1:00 PM
3/20/00 3:30 PM
3/20/00 6:00 PM
3/20/00 10:00 PM
Cum
Days
0.08333
0.19792
0.28125
0.375
0.5
0.58333
0.69792
0.78125
0.875
1
1.08333
1.19792
1.28125
1.375
1.5
1.58333
1.69792
1.78125
1.875
2
2.08333
2.19792
2.28125
2.375
2.45833
2.57292
2.65625
2.75
2.875
A calendar for a live scheduling system may be up to several thousand rows long, so you may wish to replace the formulas with
values, after you have set it up, to save on memory and calculation time. You can allow for public holidays by deleting rows, and you
can allow for overtime by inserting rows or by extending the working periods.
After deleting or inserting rows, don't forget to copy down the formula in the Cum Days column.
A quick way of copying a formula down to the bottom of the block of data, is to select the top cell, then point to the bottom
right corner of the cell, and when the solid black cross appears, like this:
double click.
327734556.xls
Section 8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
A
B
C
D
Using the Calendar Formulas
The formulas for calculating the job stop time through the calendar, that we developed in section 6, works just as well on days
as it does on hours, so it can be applied to the Julian calendar like this:
Start of first job:
Seq
1
2
3
4
5
7
4
5
8
12
3/14/00 8:30 AM
Start
0.521
0.812
0.979
1.187
1.521
Stop
10 3/14/00 4:30 PM
11 3/14/00 9:30 PM
13 3/15/00 12:45 PM
17 3/16/00 8:30 AM
22 3/17/00 8:30 AM
=C10/24
days are hours 24 - we need to convert to use the Julian calendar
=IF(I9,I9,E$6)
if there is a stop time of the previous job, start then, if not use "Start of first job" in E6
=MATCH(G10+D10,'Section 8'!$E$10:$E$39)+1 the calendar formulas have been explained in Section 6, but note how
the calendar on Section 8 is referenced from from this worksheet
Not only can you reference the calendar if it is on another worksheet, but it can also be in another workbook.
Try this experiment:
- open a new workbook (File|New|Workbook)
- make two windows (Window|Arrage|Horizontal)
- click on the tab of Section 8 and drag the worksheet into the new workbook
- now look at the calendar formulas, and see how they have "followed" the calendar to its new workbook
- save the new workbook as "Calendar" in another folder on your hard drive, or elsewhere on your network, and close it
- the formulas establish a link to the calendar, which includes the full path to the workbook
- you can confirm this with Edit|Links
This can be useful if you want several schedules to share the same calendar, but the calculation speed is quicker if the
calendar is in the same workbook.
As with the schedules in Section3 and 4, you can change the hours, or the start of the first job, or the sequence numbers
and sort to re-sequence, and see how the calculations respond.
If you try and start before the calendar begins, or you drop off the end of the calendar, the formulas will return errors.
327734556.xls
Section 9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
A
B
C
D
E
Multiple Machines or Work Centres
So far we have only considered one work centre. For multiple work centres we could create a separate schedule for each,
but here is another way of doing it:
Start of first job:
W/C
1
1
1
2
2
2
Seq
1
2
3
1
2
3
3/14/00 8:30 AM
=IF(A9=A8,J8,F$6)
Calc1
7
10
11
7
10
15
Calc2 Calc3
Stop
0.5208
10 3/14/00 4:30 PM
0.8125
11 3/14/00 9:30 PM
0.9792
13 3/15/00 12:45 PM
0.5208
10 3/14/00 5:30 PM
0.8542
15 3/15/00 5:30 PM
1.3542
18 3/16/00 10:45 AM
if the work centre is the same as the job above, then start when the previous job stops
else use the "Start of first job" in F6
In this example a job can be assigned to Work Centre 1 OR Work Centre 2, and then assigned a sequence within it.
(We shall look one job passing through multiple work centres later)
Note that the 1's and 2's in the Work Centre column are codes rather than numbers, so they have been formatted as text
Format|Cells|Number|Text.
You can now change both the work centre number and the sequence number, and sort with Data|Sort
- Sort By W/C Ascending
- Then By Seq Ascending
327734556.xls
Section 10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
A
B
C
D
Joining Text Together and Indirect References
In Section 12 we will use separate calendars for each work centre, but first we need to understand a couple of techniques:
Joining text together or concatenation
The "+" sign is used to add numbers together, but the "&" sign is used to join text together or join text with numbers, e.g.
John
Smith
JohnSmith
=B9&C9
Smith
John Smith
=B13&" "&C13
Section 11
=B17&" "&C17
11
Indirect references
999
we can add text together to make something that looks like a cell reference:
B
22
B22
=B26&C26
22
999
=INDIRECT(B30&C30)
='Section 4'!A1
#REF!
=INDIRECT("'"&B38&"'!A1")
327734556.xls
Section 11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
A
B
C
D
E
Separate Calendars for each Work Centre
The next two worksheets contain calendars, and the following table assignes a calendar to each work centre:
W/C
1
2
Calendar
Calendar 1
Calendar 2
Start of first job:
W/C
1
1
1
2
2
2
Seq
1
2
3
1
2
3
Calendar
Calendar 1
Calendar 1
Calendar 1
Calendar 2
Calendar 2
Calendar 2
Jobs
job A
job C
job D
job E
job B
job F
=VLOOKUP(A12,A$6:B$7,2)
Hours
7
4
5
8
12
6
3/14/00 8:30 AM
Days
Start
0.2917 3/14/00 8:30 AM
0.1667
#REF!
0.2083
#REF!
0.3333 3/14/00 8:30 AM
0.5
#REF!
0.25
#REF!
Calc1
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Calc2
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Calc3
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Stop
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
look up the work centre in the table above, and return the contents of the 2nd column
=MATCH(I12+F12,INDIRECT("'"&C12&"'!E5:E40"))+1
327734556.xls
Section 12
Hours
2
2.75
2
2.25
3
2
2.75
2
2.25
3
2
2.75
2
2.25
3
2
2.75
2
2.25
3
2
2.75
2
2.25
2
2.75
2
2.25
3
2
2.75
2
2.25
3
2
2.75
2
2.25
3
2
2.75
2
2.25
3
2
2.75
2
2.25
Day
Begin
End
Cum
Days
Mon
Mon
Mon
Mon
Mon
Tue
Tue
Tue
Tue
Tue
Wed
Wed
Wed
Wed
Wed
Thu
Thu
Thu
Thu
Thu
Fri
Fri
Fri
Fri
Mon
Mon
Mon
Mon
Mon
Tue
Tue
Tue
Tue
Tue
Wed
Wed
Wed
Wed
Wed
Thu
Thu
Thu
Thu
Thu
Fri
Fri
Fri
Fri
3/13/00 8:00 AM
3/13/00 10:15 AM
3/13/00 1:30 PM
3/13/00 3:45 PM
3/13/00 7:00 PM
3/14/00 8:00 AM
3/14/00 10:15 AM
3/14/00 1:30 PM
3/14/00 3:45 PM
3/14/00 7:00 PM
3/15/00 8:00 AM
3/15/00 10:15 AM
3/15/00 1:30 PM
3/15/00 3:45 PM
3/15/00 7:00 PM
3/16/00 8:00 AM
3/16/00 10:15 AM
3/16/00 1:30 PM
3/16/00 3:45 PM
3/16/00 7:00 PM
3/17/00 8:00 AM
3/17/00 10:15 AM
3/17/00 1:30 PM
3/17/00 3:45 PM
3/20/00 8:00 AM
3/20/00 10:15 AM
3/20/00 1:30 PM
3/20/00 3:45 PM
3/20/00 7:00 PM
3/21/00 8:00 AM
3/21/00 10:15 AM
3/21/00 1:30 PM
3/21/00 3:45 PM
3/21/00 7:00 PM
3/22/00 8:00 AM
3/22/00 10:15 AM
3/22/00 1:30 PM
3/22/00 3:45 PM
3/22/00 7:00 PM
3/23/00 8:00 AM
3/23/00 10:15 AM
3/23/00 1:30 PM
3/23/00 3:45 PM
3/23/00 7:00 PM
3/24/00 8:00 AM
3/24/00 10:15 AM
3/24/00 1:30 PM
3/24/00 3:45 PM
3/13/00 10:00 AM
3/13/00 1:00 PM
3/13/00 3:30 PM
3/13/00 6:00 PM
3/13/00 10:00 PM
3/14/00 10:00 AM
3/14/00 1:00 PM
3/14/00 3:30 PM
3/14/00 6:00 PM
3/14/00 10:00 PM
3/15/00 10:00 AM
3/15/00 1:00 PM
3/15/00 3:30 PM
3/15/00 6:00 PM
3/15/00 10:00 PM
3/16/00 10:00 AM
3/16/00 1:00 PM
3/16/00 3:30 PM
3/16/00 6:00 PM
3/16/00 10:00 PM
3/17/00 10:00 AM
3/17/00 1:00 PM
3/17/00 3:30 PM
3/17/00 6:00 PM
3/20/00 10:00 AM
3/20/00 1:00 PM
3/20/00 3:30 PM
3/20/00 6:00 PM
3/20/00 10:00 PM
3/21/00 10:00 AM
3/21/00 1:00 PM
3/21/00 3:30 PM
3/21/00 6:00 PM
3/21/00 10:00 PM
3/22/00 10:00 AM
3/22/00 1:00 PM
3/22/00 3:30 PM
3/22/00 6:00 PM
3/22/00 10:00 PM
3/23/00 10:00 AM
3/23/00 1:00 PM
3/23/00 3:30 PM
3/23/00 6:00 PM
3/23/00 10:00 PM
3/24/00 10:00 AM
3/24/00 1:00 PM
3/24/00 3:30 PM
3/24/00 6:00 PM
0.08333
0.19792
0.28125
0.375
0.5
0.58333
0.69792
0.78125
0.875
1
1.08333
1.19792
1.28125
1.375
1.5
1.58333
1.69792
1.78125
1.875
2
2.08333
2.19792
2.28125
2.375
2.45833
2.57292
2.65625
2.75
2.875
2.95833
3.07292
3.15625
3.25
3.375
3.45833
3.57292
3.65625
3.75
3.875
3.95833
4.07292
4.15625
4.25
4.375
4.45833
4.57292
4.65625
4.75
327734556.xls
Calendar 1
2
2.75
2
2.25
3
2
2.75
2
2.25
3
2
2.75
2
2.25
3
2
2.75
2
2.25
3
2
2.75
2
2.25
2
2.75
2
2.25
3
2
2.75
2
2.25
3
2
2.75
2
2.25
3
2
2.75
2
2.25
3
2
2.75
2
Mon
Mon
Mon
Mon
Mon
Tue
Tue
Tue
Tue
Tue
Wed
Wed
Wed
Wed
Wed
Thu
Thu
Thu
Thu
Thu
Fri
Fri
Fri
Fri
Mon
Mon
Mon
Mon
Mon
Tue
Tue
Tue
Tue
Tue
Wed
Wed
Wed
Wed
Wed
Thu
Thu
Thu
Thu
Thu
Fri
Fri
Fri
3/27/00 8:00 AM
3/27/00 10:15 AM
3/27/00 1:30 PM
3/27/00 3:45 PM
3/27/00 7:00 PM
3/28/00 8:00 AM
3/28/00 10:15 AM
3/28/00 1:30 PM
3/28/00 3:45 PM
3/28/00 7:00 PM
3/29/00 8:00 AM
3/29/00 10:15 AM
3/29/00 1:30 PM
3/29/00 3:45 PM
3/29/00 7:00 PM
3/30/00 8:00 AM
3/30/00 10:15 AM
3/30/00 1:30 PM
3/30/00 3:45 PM
3/30/00 7:00 PM
3/31/00 8:00 AM
3/31/00 10:15 AM
3/31/00 1:30 PM
3/31/00 3:45 PM
4/3/00 8:00 AM
4/3/00 10:15 AM
4/3/00 1:30 PM
4/3/00 3:45 PM
4/3/00 7:00 PM
4/4/00 8:00 AM
4/4/00 10:15 AM
4/4/00 1:30 PM
4/4/00 3:45 PM
4/4/00 7:00 PM
4/5/00 8:00 AM
4/5/00 10:15 AM
4/5/00 1:30 PM
4/5/00 3:45 PM
4/5/00 7:00 PM
4/6/00 8:00 AM
4/6/00 10:15 AM
4/6/00 1:30 PM
4/6/00 3:45 PM
4/6/00 7:00 PM
4/7/00 8:00 AM
4/7/00 10:15 AM
4/7/00 1:30 PM
3/27/00 10:00 AM
3/27/00 1:00 PM
3/27/00 3:30 PM
3/27/00 6:00 PM
3/27/00 10:00 PM
3/28/00 10:00 AM
3/28/00 1:00 PM
3/28/00 3:30 PM
3/28/00 6:00 PM
3/28/00 10:00 PM
3/29/00 10:00 AM
3/29/00 1:00 PM
3/29/00 3:30 PM
3/29/00 6:00 PM
3/29/00 10:00 PM
3/30/00 10:00 AM
3/30/00 1:00 PM
3/30/00 3:30 PM
3/30/00 6:00 PM
3/30/00 10:00 PM
3/31/00 10:00 AM
3/31/00 1:00 PM
3/31/00 3:30 PM
3/31/00 6:00 PM
4/3/00 10:00 AM
4/3/00 1:00 PM
4/3/00 3:30 PM
4/3/00 6:00 PM
4/3/00 10:00 PM
4/4/00 10:00 AM
4/4/00 1:00 PM
4/4/00 3:30 PM
4/4/00 6:00 PM
4/4/00 10:00 PM
4/5/00 10:00 AM
4/5/00 1:00 PM
4/5/00 3:30 PM
4/5/00 6:00 PM
4/5/00 10:00 PM
4/6/00 10:00 AM
4/6/00 1:00 PM
4/6/00 3:30 PM
4/6/00 6:00 PM
4/6/00 10:00 PM
4/7/00 10:00 AM
4/7/00 1:00 PM
4/7/00 3:30 PM
4.83333
4.94792
5.03125
5.125
5.25
5.33333
5.44792
5.53125
5.625
5.75
5.83333
5.94792
6.03125
6.125
6.25
6.33333
6.44792
6.53125
6.625
6.75
6.83333
6.94792
7.03125
7.125
7.20833
7.32292
7.40625
7.5
7.625
7.70833
7.82292
7.90625
8
8.125
8.20833
8.32292
8.40625
8.5
8.625
8.70833
8.82292
8.90625
9
9.125
9.20833
9.32292
9.40625
327734556.xls
Calendar 1
Hours
2
2.75
2
2.25
2
2.75
2
2.25
2
2.75
2
2.25
2
2.75
2
2.25
2
2.75
2
1.25
2
2.75
2
2.25
2
2.75
2
2.25
2
2.75
2
2.25
2
2.75
2
2.25
2
2.75
2
1.25
2
2.75
2
2.25
2
2.75
2
2.25
Day
Begin
End
Cum
Days
Mon
Mon
Mon
Mon
Tue
Tue
Tue
Tue
Wed
Wed
Wed
Wed
Thu
Thu
Thu
Thu
Fri
Fri
Fri
Fri
Mon
Mon
Mon
Mon
Tue
Tue
Tue
Tue
Wed
Wed
Wed
Wed
Thu
Thu
Thu
Thu
Fri
Fri
Fri
Fri
Mon
Mon
Mon
Mon
Tue
Tue
Tue
Tue
3/13/00 8:00 AM
3/13/00 10:15 AM
3/13/00 1:30 PM
3/13/00 3:45 PM
3/14/00 8:00 AM
3/14/00 10:15 AM
3/14/00 1:30 PM
3/14/00 3:45 PM
3/15/00 8:00 AM
3/15/00 10:15 AM
3/15/00 1:30 PM
3/15/00 3:45 PM
3/16/00 8:00 AM
3/16/00 10:15 AM
3/16/00 1:30 PM
3/16/00 3:45 PM
3/17/00 8:00 AM
3/17/00 10:15 AM
3/17/00 1:30 PM
3/17/00 3:45 PM
3/20/00 8:00 AM
3/20/00 10:15 AM
3/20/00 1:30 PM
3/20/00 3:45 PM
3/21/00 8:00 AM
3/21/00 10:15 AM
3/21/00 1:30 PM
3/21/00 3:45 PM
3/22/00 8:00 AM
3/22/00 10:15 AM
3/22/00 1:30 PM
3/22/00 3:45 PM
3/23/00 8:00 AM
3/23/00 10:15 AM
3/23/00 1:30 PM
3/23/00 3:45 PM
3/24/00 8:00 AM
3/24/00 10:15 AM
3/24/00 1:30 PM
3/24/00 3:45 PM
3/27/00 8:00 AM
3/27/00 10:15 AM
3/27/00 1:30 PM
3/27/00 3:45 PM
3/28/00 8:00 AM
3/28/00 10:15 AM
3/28/00 1:30 PM
3/28/00 3:45 PM
3/13/00 10:00 AM
3/13/00 1:00 PM
3/13/00 3:30 PM
3/13/00 6:00 PM
3/14/00 10:00 AM
3/14/00 1:00 PM
3/14/00 3:30 PM
3/14/00 6:00 PM
3/15/00 10:00 AM
3/15/00 1:00 PM
3/15/00 3:30 PM
3/15/00 6:00 PM
3/16/00 10:00 AM
3/16/00 1:00 PM
3/16/00 3:30 PM
3/16/00 6:00 PM
3/17/00 10:00 AM
3/17/00 1:00 PM
3/17/00 3:30 PM
3/17/00 5:00 PM
3/20/00 10:00 AM
3/20/00 1:00 PM
3/20/00 3:30 PM
3/20/00 6:00 PM
3/21/00 10:00 AM
3/21/00 1:00 PM
3/21/00 3:30 PM
3/21/00 6:00 PM
3/22/00 10:00 AM
3/22/00 1:00 PM
3/22/00 3:30 PM
3/22/00 6:00 PM
3/23/00 10:00 AM
3/23/00 1:00 PM
3/23/00 3:30 PM
3/23/00 6:00 PM
3/24/00 10:00 AM
3/24/00 1:00 PM
3/24/00 3:30 PM
3/24/00 5:00 PM
3/27/00 10:00 AM
3/27/00 1:00 PM
3/27/00 3:30 PM
3/27/00 6:00 PM
3/28/00 10:00 AM
3/28/00 1:00 PM
3/28/00 3:30 PM
3/28/00 6:00 PM
0.08333
0.19792
0.28125
0.375
0.45833
0.57292
0.65625
0.75
0.83333
0.94792
1.03125
1.125
1.20833
1.32292
1.40625
1.5
1.58333
1.69792
1.78125
1.83333
1.91667
2.03125
2.11458
2.20833
2.29167
2.40625
2.48958
2.58333
2.66667
2.78125
2.86458
2.95833
3.04167
3.15625
3.23958
3.33333
3.41667
3.53125
3.61458
3.66667
3.75
3.86458
3.94792
4.04167
4.125
4.23958
4.32292
4.41667
327734556.xls
Calendar 2
2
2.75
2
2.25
2
2.75
2
2.25
2
2.75
2
1.25
2
2.75
2
2.25
2
2.75
2
2.25
2
2.75
2
2.25
2
2.75
2
2.25
2
2.75
2
1.25
2
2.75
2
2.25
2
2.75
2
2.25
2
2.75
2
2.25
2
2.75
2
2.25
2
2.75
2
1.25
Wed
Wed
Wed
Wed
Thu
Thu
Thu
Thu
Fri
Fri
Fri
Fri
Mon
Mon
Mon
Mon
Tue
Tue
Tue
Tue
Wed
Wed
Wed
Wed
Thu
Thu
Thu
Thu
Fri
Fri
Fri
Fri
Mon
Mon
Mon
Mon
Tue
Tue
Tue
Tue
Wed
Wed
Wed
Wed
Thu
Thu
Thu
Thu
Fri
Fri
Fri
Fri
3/29/00 8:00 AM
3/29/00 10:15 AM
3/29/00 1:30 PM
3/29/00 3:45 PM
3/30/00 8:00 AM
3/30/00 10:15 AM
3/30/00 1:30 PM
3/30/00 3:45 PM
3/31/00 8:00 AM
3/31/00 10:15 AM
3/31/00 1:30 PM
3/31/00 3:45 PM
4/3/00 8:00 AM
4/3/00 10:15 AM
4/3/00 1:30 PM
4/3/00 3:45 PM
4/4/00 8:00 AM
4/4/00 10:15 AM
4/4/00 1:30 PM
4/4/00 3:45 PM
4/5/00 8:00 AM
4/5/00 10:15 AM
4/5/00 1:30 PM
4/5/00 3:45 PM
4/6/00 8:00 AM
4/6/00 10:15 AM
4/6/00 1:30 PM
4/6/00 3:45 PM
4/7/00 8:00 AM
4/7/00 10:15 AM
4/7/00 1:30 PM
4/7/00 3:45 PM
4/10/00 8:00 AM
4/10/00 10:15 AM
4/10/00 1:30 PM
4/10/00 3:45 PM
4/11/00 8:00 AM
4/11/00 10:15 AM
4/11/00 1:30 PM
4/11/00 3:45 PM
4/12/00 8:00 AM
4/12/00 10:15 AM
4/12/00 1:30 PM
4/12/00 3:45 PM
4/13/00 8:00 AM
4/13/00 10:15 AM
4/13/00 1:30 PM
4/13/00 3:45 PM
4/14/00 8:00 AM
4/14/00 10:15 AM
4/14/00 1:30 PM
4/14/00 3:45 PM
3/29/00 10:00 AM
3/29/00 1:00 PM
3/29/00 3:30 PM
3/29/00 6:00 PM
3/30/00 10:00 AM
3/30/00 1:00 PM
3/30/00 3:30 PM
3/30/00 6:00 PM
3/31/00 10:00 AM
3/31/00 1:00 PM
3/31/00 3:30 PM
3/31/00 5:00 PM
4/3/00 10:00 AM
4/3/00 1:00 PM
4/3/00 3:30 PM
4/3/00 6:00 PM
4/4/00 10:00 AM
4/4/00 1:00 PM
4/4/00 3:30 PM
4/4/00 6:00 PM
4/5/00 10:00 AM
4/5/00 1:00 PM
4/5/00 3:30 PM
4/5/00 6:00 PM
4/6/00 10:00 AM
4/6/00 1:00 PM
4/6/00 3:30 PM
4/6/00 6:00 PM
4/7/00 10:00 AM
4/7/00 1:00 PM
4/7/00 3:30 PM
4/7/00 5:00 PM
4/10/00 10:00 AM
4/10/00 1:00 PM
4/10/00 3:30 PM
4/10/00 6:00 PM
4/11/00 10:00 AM
4/11/00 1:00 PM
4/11/00 3:30 PM
4/11/00 6:00 PM
4/12/00 10:00 AM
4/12/00 1:00 PM
4/12/00 3:30 PM
4/12/00 6:00 PM
4/13/00 10:00 AM
4/13/00 1:00 PM
4/13/00 3:30 PM
4/13/00 6:00 PM
4/14/00 10:00 AM
4/14/00 1:00 PM
4/14/00 3:30 PM
4/14/00 5:00 PM
4.5
4.61458
4.69792
4.79167
4.875
4.98958
5.07292
5.16667
5.25
5.36458
5.44792
5.5
5.58333
5.69792
5.78125
5.875
5.95833
6.07292
6.15625
6.25
6.33333
6.44792
6.53125
6.625
6.70833
6.82292
6.90625
7
7.08333
7.19792
7.28125
7.33333
7.41667
7.53125
7.61458
7.70833
7.79167
7.90625
7.98958
8.08333
8.16667
8.28125
8.36458
8.45833
8.54167
8.65625
8.73958
8.83333
8.91667
9.03125
9.11458
9.16667
327734556.xls
Calendar 2
1
2
A
B
C
D
Repetitive Production and Setups
18
19
20
21
22
23
24
25
26
27
28
29
17
So far we have accepted that a job has a duration of say, 7 hours, and we haven't worried about
how the 7 hours has been estimated. Let's say the first job is to set up a work centre and then
produce 500 of Product A. Work Centre 1 is an old machine which runs slowly, but is quick to set
up, and Work Centre 2 is a new high speed machine, but the set ups take a long time. We would
describe this in tables like this:
4
5
6
8
9
10
11
12
13
14
15
16
W/C
1
2
Set up
hours
1.25
3.00
Product
Prod A
Prod B
Prod C
Prod D
W/C 1
80
55
72
65
W/C 2
140
105
135
110
The left hand side of the schedule would look like this
W/C
1
1
1
1
2
2
Seq
1
2
3
4
1
2
Product
Prod D
Prod B
Prod A
Prod B
Prod C
Prod D
Qty
200
350
450
300
1500
1100
=VLOOKUP(A18,B$8:C$9,2)
=VLOOKUP(C18,E$8:G$11,A18+1)
=D18/F18
=E18+G18
Set up
hours
1.25
1.25
1.25
1.25
3.00
3.00
Units per
hour
65
55
80
55
135
110
Run
hours
3.08
6.36
5.63
5.45
11.11
10.00
Total
Hours
4.33
7.61
6.88
6.70
14.11
13.00
Days
0.1803
0.3172
0.2865
0.2794
0.588
0.5417
327734556.xls
Section 13
1
2
A
B
A Set-up Matrix
Often the time it takes to set up a work centre is dependant on the previous job. For example to
clean out a mixer to make white paint, after it has been used to make black paint, will take a long
time, but to change to grey paint after making white won't take as long. Similar examples exist in
printing and food processing and with the shut height of presses. In these industries the sequence
of the jobs will effect the amount of time the work centres are being set up, and therefore the
productivity of the work centres.
4
5
6
7
8
The set-up times between products, or product groups is expressed in a matrix as follows:
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
1.25
1.00
0.75
0.00
from
Prod A
Prod B
Prod C
Prod D
Prod D
0.50
0.75
0.00
1.50
Prod C
0.50
0.00
2.00
1.75
Prod B
Prod D
0.00
2.00
2.00
2.10
to
Prod A
Prod C
from
Prod A
Prod B
Prod C
Prod D
Prod B
10
11
12
13
14
to
Prod A
0.00
4.25
4.25
5.00
1.25
0.00
4.25
4.50
1.25
1.75
0.00
3.50
2.75
2.50
1.75
0.00
In Lotus 123 there is a handy function, XINDEX for referencing a value in a matrix, but in Excel we
will do it with a combination of =MATCH and =VLOOKUP. First we need to name 4 ranges with
Insert|Name|Define:
Top_row_1
Matrix_1
Top_row_2
Matrix_2
Use the name box to the left of the formula bar to see where the named ranges are.
The problem is to retrieve a set-up time given the following values
Work Centre
Previous product
This Product
1
Prod D
Prod B
Top_row_1
Matrix_1
3
1.75
="Top_row_"&D23
="Matrix_"&D23
=MATCH(D25,INDIRECT(F27))
=VLOOKUP(D24,INDIRECT(F28),F29)
If we apply this formula to the first product scheduled on the work centre, then it won't work because
there isn't a previous product. We will assume that the first product scheduled on the work centre is
already running, so the set-up time is zero. We will test if it is the first product using the =IF function.
327734556.xls
Section 14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
A
B
C
D
E
Applying the Set-up Matrix Formula
Here is the schedule from Section 13 again, but this time the set-up times are derived from the
matrixes:
W/C
1
1
1
1
2
2
Seq
1
2
3
4
1
2
Product
Prod D
Prod B
Prod A
Prod B
Prod C
Prod D
Totals:
Qty
200
350
450
300
1500
1100
Set-up
hours
0.00
1.75
2.00
0.50
0.00
1.75
Units per
hour
65
55
80
55
135
110
6.00
Run
hours
3.08
6.36
5.63
5.45
11.11
10.00
Total
Hours
3.08
8.11
7.63
5.95
11.11
11.75
Days
0.12821
0.33807
0.31771
0.24811
0.46296
0.48958
41.63
=IF(A7=A6,VLOOKUP(C6,INDIRECT("Matrix_"&A7),MATCH(C7,INDIRECT("Top_row_"&A7))),0)
Try changing the sequence numbers and sorting to see if you can reduce the total set-up hours
327734556.xls
Section 15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
A
B
C
E
Gantt Chart 2 - Hours per Day
79
79
88
AA
AB
In the simple Gantt chart in Section 4 each time bucket is one hour long, and the jobs fall conveniently in or out of a bucket
This Gantt chart shows daily buckets, and the number of hours in a day is determined by the calendar. The start and stop of each
job is compared with the beginning and end of each day, to determine what portion of the job falls within the day, as follows:
=IF(AND($K36>L$30,$K36<M$30),$K36-L$30,L$34)
if the job stops during the day, job stop minus day begin, else hours in the day
Job
Job
=IF(AND($J36>=L$30,$J36<M$30),M$30-$J36,A8)
if the job starts during the day, day end minus job start, else above
Job
=IF(AND($J36>=L$30,$K36<M$30),$C36,A12)
if the job starts and stops within the day, the job hours, else above
Job
9 Job
Day
Day
=IF(OR($K36<=L$30,$J36>=M$30),"",A15)
if the job stops before the day begins, or starts after the day ends, blank, else above
Job
The 4 IF statements above have been "nested" into one
=(VLOOKUP(M32,'Calendar 2'!$C$5:$E$110,3)-$J32)*24
hours into the schedule - cumulative day less 1st cumulative day, converted to hours
=INT(E32)
the midnight before the start of the first job
=VLOOKUP(I32,'Calendar 2'!C6:E110,3)
look up the cumulative days in the calendar
=L32+1 previous day plus 1
0
Start of first job:
Seq Jobs
1
2
3
4
5
6
job A
job B
job C
job D
job E
job F
Hrs
10.5
8.0
6.5
16.0
21.5
23.0
14/3 8:00 AM
14/3 12:00 AM
Start
Stop
14/3 8:00 AM
15/3 9:30 AM
16/3 8:30 AM
16/3 4:00 PM
20/3 2:45 PM
23/3 8:30 AM
15/3 9:30 AM
16/3 8:30 AM
16/3 4:00 PM
20/3 2:45 PM
23/3 8:30 AM
27/3 3:15 PM
18
27
=M30-L30
hours in the day
35
35
35
44
53
62
71
79
97 106
0.375
14/3 15/3 16/3 17/3 18/3 19/3 20/3 21/3 22/3 23/3 24/3 25/3 26/3 27/3 28/3 29/3 30/3
Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed
Start hr Stop hr 9
9
9
8
0
0
9
9
9
9
8
0
0
9
9
9
0.0
10.5
18.5
25.0
41.0
62.5
327734556.xls
Section 16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
A
B
C
D
Gantt Chart 3 - Units per Day
For repetitive production, you may wish to show the number of units that can be produced in a day, rather than the number
of hours of a job that falls into each day. The Gantt chart in Section 16 can be extended to do this, by multiplying the hours
by the units per hour. Lets take a repetitive production schedule, as in Section 15, but with one work centre:
0
Start of first job:
W/C
2
2
2
2
2
14/3 8:00 AM
Prod D
Prod B
Prod A
Prod B
Prod C
650
1200
2350
300
4500
14/3 12:00 AM
110
105
140
105
135
Run
hours
5.91
11.43
16.79
2.86
33.33
0.375
Total
Hours
5.91
15.93
21.04
4.11
35.08
18
27
35
35
35
44
53
62
71
79
79
79
88
14/3 15/3 16/3 17/3 18/3 19/3 20/3 21/3 22/3 23/3 24/3 25/3 26/3 27/3 28/3
Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun Mon
Start
hr
Stop
hr
0.00
10.41
26.09
44.12
48.73
5.91
21.84
42.87
46.98
82.06
797
403
128 1120
650
0
0 1102
300
576 1215 1215 1080
414
The stop and start hours for each job are the hours into the schedule during which items will actually be produced, and exclude
the set-up hours.
=J13+E14
=I14+G14
start hour is the stop hour of the previous job plus the set-up hours
stop hour is start hour plus run hours
=IF(OR($J14<=K$8,$I14>=L$8),"",IF(AND($I14>=K$8,$J14<L$8),$G14,IF(AND($I14>=K$8,$I14<L$8),L$8-$I14,IF(AND($J14>K$8,$J14<L$8),$J14-K$8,K$12)))*$F14)
Same nested IF formula as in Section 16, but multiplied by Units per Hour
This report is useful as a production target to be issued at the beginning of a week, as it is easy to compare actual performance
against it. In setting a production target for a day, it takes into account:
- calendar hours each day (production is lower on a Friday)
- each product runs at a different speed
- the set-up time depends on the previous product
327734556.xls
Section 17
1
2
A
B
C
D
E
Working Hours Between Two Dates (Calendar Formula 2)
The more observant of you may have noticed a problem with the last two Gantt charts. They are fine
as long as the start of the first job coincides with beginning of the day, but if you go to Section 16 and
change the start time to, say 10:00 AM, then there are still 9 hours used on the first day, that can't be
right. If the first job starts at 10:00 AM, then the Start Hr of job A should be 2, the 2nd hour of the
schedule. However, if the first job starts at 2:00 PM, then that is 5.25 hours into the schedule because
according to Calendar 2 there is a 15 minute morning break and a 30 min lunch break in between.
4
5
What we need is a formula that takes two points in time and calculates how many working hours (days
x 24) there are between the two points. The calculation is very similar to that in Section 6:
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Period
Number
1
2
3
4
5
6
Begin
End
0
8
10.25
13.5
15.75
19
0
10
13
15.5
18
22
Working
Working Hours so
Hours far (Cum)
0
2
2.75
2
2.25
3
0
2
4.75
6.75
9
12
The first 9 stages of the calculation locate the start on the calendar, and they are repeated for the stop:
Start
Stop
8.5
18.5
(8:30 AM) (6:30 PM)
2
1
2
8
10
8.5
1.5
2
0.5
5
5
6
19
22
19
3
12
9
8.5
=MATCH(H20,B10:B15)
=MATCH(H20,C10:C15)
=H23+(H23=H24)
=INDEX(B10:B15,H25,1)
=INDEX(C10:C15,H25,1)
=MAX(H26,H20)
=H27-H28
=INDEX(E10:E15,H25,1)
=H30-H29
=H31-G31
2
0.5
6
8.5
=MATCH(G20,B10:B15)+(MATCH(G20,B10:B15)=MATCH(G20,C10:C15))
=INDEX(E10:E15,B37,1)-INDEX(C10:C15,B37,1)+MAX(INDEX(B10:B15,B37,1),G20)
=MATCH(H20,B10:B15)+(MATCH(H20,B10:B15)=MATCH(H20,C10:C15))
=INDEX(E10:E15,B39,1)-INDEX(C10:C15,B39,1)+MAX(INDEX(B10:B15,B39,1),H20)-B38
327734556.xls
Section 18
14/3 10:00 AM
14/3 12:00 AM
0.375
0
1
2
3
4
5
Prod D
Prod B
Prod A
Prod B
Prod C
Qty
650
1200
2350
300
4500
Set-up
hours
Units
per
hour
0.00
4.50
4.25
1.25
1.75
110
105
140
105
135
18
27
35
35
35
44
53
62
71
79
79
79
88
14/3 15/3 16/3 17/3 18/3 19/3 20/3 21/3 22/3 23/3 24/3 25/3 26/3 27/3 28/3
Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun Mon
Run
Total Start
hours Hours
hr
5.91
11.43
16.79
2.86
33.33
5.91
15.93
21.04
4.11
35.08
2.00
12.41
28.09
46.12
50.73
Stop
hr
2.00
7.91
23.84
44.87
48.98
84.06
587
613
650
968
0 1260
122
300
306 1215 1215 1080
684
327734556.xls
Section 19
1
2
3
4
5
6
7
8
9
10
11
12
13
A
B
C
D
E
F
Jobs That Pass Through Multiple Work Centres
36
So far we have considered jobs assigned to Work Centre 1 OR Work Centre 2, and now we shall look at jobs that pass through Work Centre 1 AND THEN Work Centre 2. To avoid
confusion lets have Work Centre 6 doing the 1st operation on the job, and Work Centre 7 the 2nd operation.
For the sake of simplicity our example will not refer to a calendar (the work centres operate 24 hours a day, 7 days a week) and we will not allow for set-up times.
Note the use of a 24 hour time format to fit into narrower columns.
size of time bucket in days (8 hours)
0.333 0.333 0.333 0.333 0.333 0.333 0.333 0.333 0.333 0.333 0.333 0.333
Start of first job:
14/3 8:00
14/3
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
W/C
6
6
6
7
7
7
8
8
8
Jobs
job A
job B
job C
job A
job B
job C
job A
job B
job C
Op
1
1
1
2
2
2
3
3
3
Job/
Op
A/1
B/1
C/1
A/2
B/2
C/2
A/3
B/3
C/3
Duration
Hours
19
22
17
8
14
6
13
11
21
Previous
Op
A/0
B/0
C/0
A/1
B/1
C/1
A/2
B/2
C/2
Previous
Op Row
#N/A
#N/A
#N/A
15
16
17
18
19
20
Stop of
Previous Wait
Op
hours
Start
Stop
31/12 0:00
0
14/3 8:00 15/3 3:00
31/12 0:00
0
15/3 3:00 16/3 1:00
31/12 0:00
0
16/3 1:00 16/3 18:00
15/3 3:00 19
15/3 3:00 15/3 11:00
16/3 1:00 14
16/3 1:00 16/3 15:00
16/3 18:00
3
16/3 18:00 17/3 0:00
15/3 11:00 27
15/3 11:00 16/3 0:00
16/3 15:00 15
16/3 15:00 17/3 2:00
17/3 0:00
0
17/3 2:00 17/3 23:00
0:00
8:00 16:00
8.0
8.0
15/3
0:00
3.0
5.0
5.0
16/3
8:00 16:00
8.0
8.0
0:00
17/3
8:00 16:00
1.0
7.0
8.0
7.0
7.0
0:00
2.0
3.0
6.0
5.0
8.0
1.0
8.0
2.0
6.0
8.0
7.0
=RIGHT(B15,1)&"/"&C15
- make a unique key to each row by taking the rightmost character of the job and concatenating it with the operation e.g. job A/operation 1
=RIGHT(B15,1)&"/"&(C15-1)
- derive the previous operation by subtracting 1 from the operation number
=MATCH(F15,D$1:D$26,FALSE)
- find the row number of the previous operation by looking down column D
=IF(ISERROR(G15),1,INDEX(K$1:K$26,G15,1))- if ther is no previous op, then put day 1 (1 Jan 1900), else get the stop of the previous op from column K
=(J15-IF(A15=A14,K14,$J$12))*24
- the number of hours the work centre has to wait for the previous operation to finish, before it can start
=MAX(IF(A15=A14,K14,$J$12),H15)
- the start is later of: if its the same work centre, the stop of the previous job, else the start of the first job, and the stop of the previous operation
=J15+(E15/24)
- the stop is the start plus hours converted to days
Note the gaps while the work centre waits for the prevoius operation to finish
This is a good point to talk about "The Theory of Constraints", and if you havn't yet read "The Goal" by Eli Goldratt, then you will find it a good introduction to the subject. Production managers
who do not understand the theory of constraints, would become anxious when work centres 7 and 8 are not fully utilised. This kind of schedule will help them to understand that in order to get
the work out of the door, they should only worry about the utilisation of a work centre while it is a constraint, and in this example, they should focus their attention on work centre 6 for the first
two and a half days, and on work centre 8 for the last day and a half.
327734556.xls
Section 20
1
2
3
A
B
C
D
E
F
G
H
Repetitive Production that Passes Through Multiple Work Centres
AA
In the example in Section 20, the 1st operation of a job had to be complete before the second operation could start. However if the job is to manufacture 5000 units, then often you don't have to wait for all of them to have gone
through the 1st operation before you start the 2nd operation. When the first transfer batch (pallet load or bin full) of the product has come off the 1st work centre, it can be passed to the second work centre for the second
operation to start while the product is still going through the 1st work centre.
4
5
A similar principle will apply at the end of the production run, when the last transfer batch (or part batch) of product comes off the first operation it will join a queue at the second operation. However if the second operation is faster
(as in this example), then the first operation will stop, the transfer batch will be passed to the second operation, which will then stop after the transfer batch has been completed.
6
7
8
9
10
11
12
The rule that defines how long after the 1st operation the 2nd operation can start and stop, should be stated as the number of units in the transfer batch, but for the sake of simplicity, we will define it here as the time which the start
and stop, of the next operation, lags behind the previous operation:
0.33 0.33 0.333 0.33 0.33 0.333 0.33 0.33 0.333 0.33 0.33 0.333
The next operation can start
14/3 4:00
14/3
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
W/C
6
6
6
7
7
7
8
8
8
Produ
ct
Op
prod A 1
prod B 1
prod C 1
prod A 2
prod B 2
prod C 2
prod A 3
prod B 3
prod C 3
Prod/
Op
A/1
B/1
C/1
A/2
B/2
C/2
A/3
B/3
C/3
Qty
1500
2200
1900
1500
2200
1900
1500
2200
1900
Previous
Op
A/0
B/0
C/0
A/1
B/1
C/1
A/2
B/2
C/2
Previous
Op Row
#N/A
#N/A
#N/A
14
15
16
17
18
19
Start of
Previous
Op
30/12 0:00
30/12 0:00
30/12 0:00
14/3 5:00
15/3 4:04
16/3 16:44
14/3 6:00
15/3 5:04
16/3 17:44
Stop of
Effective
Previous Wait
Units per
Op
hours
Start
Stop
Hour
30/12 0:00 0.0
14/3 4:00 15/3 3:04
65
30/12 0:00 0.0
15/3 3:04 16/3 15:44
60
30/12 0:00 0.0
16/3 15:44 17/3 17:04
75
15/3 4:04 1.0
14/3 5:00 15/3 4:04
65
16/3 16:44 0.0
15/3 4:04 16/3 16:44
60
17/3 18:04 0.0
16/3 16:44 17/3 18:04
75
15/3 5:04 2.0
14/3 6:00 15/3 5:04
65
16/3 17:44 0.0
15/3 5:04 16/3 17:44
60
17/3 19:04 0.0
16/3 17:44 17/3 19:04
75
15/3
16/3
17/3
0:00 8:00 16:00 0:00 8:00 16:00 0:00 8:00 16:00 0:00 8:00 16:00
260 520 520 200
295 480 480 480 465
19 600 600 600
81
195 520 520 265
235 480 480 480 480
45
544 600 600 156
130 520 520 330
175 480 480 480 480 105
469 600 600 231
=IF(ISERROR(I22),0,INDEX(M$1:M$25,I22,1)+(E$11/24)- find the start of the previous operation in column M, and add 1 hour
=MAX(IF(A22=A21,N21,$M$11),J22)
- the start is later of: if its the same work centre, the stop of the previous job, else the start of the first job, and the start of the previous operation
=MAX(M22+(G22/24),K22)
- the stop is the later of: the start plus the hours, and the stop of the previous operation
=E22/(N22-M22)/24
- quantity divided by the stop minus the start
Although the second operation can start 1 hour after the first, it is faster and will quickly catch up. Work Centre 7 will then keep stopping to wait for products from the slower Work Centre 6,
327734556.xls
Section 21
1
2
3
A
B
C
Transfer Batches
AA
AB
AC
AD
AE AF
In Section 21 we assumed that the next operation starts and stops X hours after the previous operation starts and stops. In this example we use more sophisticated calculations. Each product has a different transfer batch size. The first transfer batch emerges from the previous
operation after a time determined by the units per hour of the previous operation. It then takes X minutes to transfer the batch to the next work centre, so that the next operation can start. If the quantity to be produced is not a multiple of the transfer batch size, then the last batch
will be smaller. The previous operation will stop, and the last batch will take X minutes to be transferred to the next work centre, where is will pass through the next operation after a time determined by the units per hour of the next operation.
4
5
Batch
size
80
50
100
6
7
8
9
10
11
12
prod A
prod B
prod C
0.33 0.33 0.333 0.33 0.33 0.333 0.33 0.33 0.333 0.33 0.33 0.333
Time to transfer a batch between work centres:
minutes
14/3 4:00
14/3
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Try changing the transfer batch sizes here and see what effect is has on the stop time of the last operation.
W/C
6
6
6
7
7
7
8
8
8
Produ
ct
prod A
prod B
prod C
prod A
prod B
prod C
prod A
prod B
prod C
Op
1
1
1
2
2
2
3
3
3
Prod/O
p
A/1
B/1
C/1
A/2
B/2
C/2
A/3
B/3
C/3
Qty
1500
2200
1900
1500
2200
1900
1500
2200
1900
Units
per
Hour
65
60
75
105
95
110
80
85
95
Duration
Hours
23.1
36.7
25.3
14.3
23.2
17.3
18.8
25.9
20.0
Previous
Op
A/0
B/0
C/0
A/1
B/1
C/1
A/2
B/2
C/2
=VLOOKUP(B22,$B$7:$D$9,3)
=IF(ISERROR(I22),0,(J22/INDEX(F$1:F$25,I22,1))+(G$11/60))
=IF(MOD(E22,J22),MOD(E22,J22),J22)
=(G$11/60)+(L22/F22)
=IF(ISERROR(I22),0,INDEX(Q$1:Q$25,I22,1)+(K22/24))
=IF(ISERROR(I22),0,INDEX(R$1:R$25,I22,1)+(M22/24))
Previous
Op Row
#N/A
#N/A
#N/A
14
15
16
17
18
19
Batch
size
80
50
100
80
50
100
80
50
100
1 st
Batch
Lag
0.0
0.0
0.0
1.3
0.9
1.4
0.8
0.6
1.0
Last
Batch
Size
60
50
100
60
50
100
60
50
100
Last
Batch
Lag
1.0
0.9
1.4
0.7
0.6
1.0
0.8
0.7
1.1
Start of
Previous
Op
30/12 0:00
30/12 0:00
30/12 0:00
14/3 5:18
15/3 3:59
16/3 17:09
14/3 6:09
15/3 4:36
16/3 18:09
Stop of
Previous
Wait
Op
hours
30/12 0:00
0.0
30/12 0:00
0.0
30/12 0:00
0.0
15/3 3:43
1.3
16/3 16:21
0.3
17/3 18:04
0.8
15/3 4:33
2.2
16/3 17:01
0.0
17/3 19:12
1.1
Start
14/3 4:00
15/3 3:04
16/3 15:44
14/3 5:18
15/3 3:59
16/3 17:09
14/3 6:09
15/3 4:36
16/3 18:09
Stop
15/3 3:04
16/3 15:44
17/3 17:04
15/3 3:43
16/3 16:21
17/3 18:04
15/3 4:33
16/3 17:01
17/3 19:12
Effective
Units per
Hour
65
60
75
67
61
76
67
60
76
15/3
16/3
17/3
0:00
8:00
16:00
0:00
8:00
16:00
0:00
8:00
16:00
0:00
8:00
16:00 ##
260
520
520
200
295
480
480
480
465
19
600
600
600
81
21
522
610
610
158
62
443
607
607
243
180
123
535
536
535
536
250
242
306
205
484
483
484
483
484
483
484
483
- look up the transfer batch size for the product from the table
- if there is a previous batch, find the speed in column F, and use it to calculate the time to produce the first batch, then add the transfer time, to get the Lag in hours
- the last batch is the remainder after dividing the quantity by the batch size, if there is one, else return the batch size
- the transfer time plus the batch size divided by the units per hour, to get the Lag in hours
- the start of the previous operation plus the time of the first batch
- the stop of the previous operation, plus the time of the last batch
327734556.xls
Section 22
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
A
B
C
D
E
Re-Using Parts of the Calendar Formulas
In the next Section we will apply the calendar formulas to the schedule in Section 21, but before we do, lets
look more closely at the formulas. You will notice that in Section 21 a duration is added to a start or stop, in
three places:
- in column J, the lag duration is added to the start of the previous operation
- in column K, the lag duration is added to the stop of the previous operation
- in column N, the operation duration is added to the start
Here is an example of the calendar formulas applied to two durations from the same start:
Hours
Days
7
0.29167
1
0.04167
Start
Calc1 Calc2 Calc3
Stop
15/3 9:30
9 0.8125
12 15/3 17:30
15/3 9:30
9 0.8125
10 15/3 10:45
Calc1 and Calc2 locate the start in the calendar and return the same values on each row, whereas Calc3
and Stop use the duration in days. So we could re-use Calc1 and Calc2 as follows:
Hours 1 Days 1
7
0.29167
Start
Calc1 Calc2 Calc3
Stop 1 Hours 2 Days 2 Calc4
15/3 9:30
9 0.8125
12 15/3 17:30
1
0.04167
10
You can also re-use the formulas when applying Calendar Formulas 2 (Section 18), to calculate the
working hours between two dates, as Calc1 and Calc2 are also common to this calculation:
Hours
Days
Start
Calc1 Calc2 Calc3
Stop
7
0.29167 15/3 9:30
9 0.8125
12 15/3 17:30
1
0.04167 16/3 16:15
16 1.4271
16 16/3 17:15
Working hours between the two start dates:
14.75 =(E31-E30)*24
- the difference between the results of the two Calc2 formulas is the result in days, then multiply by 24 to
get hours
327734556.xls
Section 23
K
1
2
4
5
6
7
8
9
10
11
12
13
14
15
n each row, whereas Calc3
16
lows:
17
Stop 2
18
19 15/3 10:45
20
21
22
23
24
25
26
n 18), to calculate the
is calculation: 27
28
29
30
31
32
33
days, then multiply by 24 to
34
327734556.xls
Section 23
W/C Calendar
6
Calendar 2
7
Calendar 1
8
Calendar 2
The next operation can start
W/C
6
6
6
7
7
7
8
8
8
Calendar
Calendar 2
Calendar 2
Calendar 2
Calendar 1
Calendar 1
Calendar 1
Calendar 2
Calendar 2
Calendar 2
Product
prod A
prod B
prod C
prod A
prod B
prod C
prod A
prod B
prod C
Op
1
1
1
2
2
2
3
3
3
Prod/
Op
A/1
B/1
C/1
A/2
B/2
C/2
A/3
B/3
C/3
Qty
1500
2200
1900
1500
2200
1900
1500
2200
1900
Units
per
Hour
88
138
238
188
65
190
50
270
106
Duration
Hours
17.0455
15.942
7.98319
7.97872
33.8462
10
30
8.14815
17.9245
Days
0.7102
0.6643
0.3326
0.3324
1.4103
0.4167
1.25
0.3395
0.7469
Prev
Op
A/0
B/0
C/0
A/1
B/1
C/1
A/2
B/2
C/2
Prev
Op
Row
#N/A
#N/A
#N/A
19
20
21
22
23
24
Start of
Stop of
Prev Op
Stop of
Prev Op
+Lag
Prev Op Calc1 Calc2 Calc3
+Lag
30/12 0:00 30/12 0:00 #REF! #REF! #REF! 30/12 0:00
30/12 0:00 30/12 0:00 #REF! #REF! #REF! 30/12 0:00
30/12 0:00 30/12 0:00 #REF! #REF! #REF! 30/12 0:00
#REF!
#REF! #REF! #REF! #REF!
#REF!
#REF!
#REF! #REF! #REF! #REF!
#REF!
#REF!
#REF! #REF! #REF! #REF!
#REF!
#REF!
#REF! #REF! #REF! #REF!
#REF!
#REF!
#REF! #REF! #REF! #REF!
#REF!
#REF!
#REF! #REF! #REF! #REF!
#REF!
327734556.xls
14/3 6:00
3rd calendar
calculations
Start
14/3 6:00
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Calc4
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Calc5
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Calc6
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Stop
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Section 24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
A
B
A Pull Schedule
48
Jobs
Hours
Start
Stop
job A
job B
job C
job D
job E
7
5
4
12
8
12
19
24
28
40
19
24
28
40
48
=E20-C20
- the start is the stop minus the hours
=IF(ISBLANK(D21),$E$13,D21) - if there isn't a next job, stop at the required hour, else stop when
the next job starts
You can see that each job is dependant on the one after it, and time cascades upwards.
What if we now changed the question to:
"If all the jobs are required in 1 day (at hour 24), when do I need to start"
Change the "Jobs required at hour" from 48 to 24, and you will see that we would need to have started
at hour -12, half a day ago. In this case the nature of the question changes, and reverts back to the
push question:
"If I start now (at hour zero), when will the last job stop?"
What is needed is a schedule that will handle both push and pull logic, and apply the appropriate one.
327734556.xls
Section 25
I
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
equired hour, else
25 stop when
26
27
28
29
30
31
33
34
and apply the appropriate
one.
35
327734556.xls
Section 25
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
A
B
Push and Pull Schedule
Here is the push logic from Section 2 along side the pull logic from Section 25. By testing the 1st start
of the pull, it decides which of the two to apply:
32
Push
Pull
Apply
Jobs
Hours
Start
Stop
Start
Stop
Start
job A
job B
job C
job D
job E
7
5
4
12
8
0
7
12
16
28
7
12
16
28
36
-4
3
8
12
24
3
8
12
24
32
0
7
12
16
28
=IF(F$12<0,D12,F12)
- if the start of the first job on the pull schedule is -ve, apply the push
schedule, else apply the pull schedule.
You will notice that the push logic adds the hours to get the stop, whereas the pull logic works
backwards, and subtracts the hours to get the start. If we want to work through a calendar, then we
need a formula that will work backwards.
327734556.xls
Section 26
I
1
2
n 25. By testing the 1st start
3
4
5
6
7
8
9Apply
Stop
10
11
7
12
12
13
16
14
28
15
36
16
17
18
-ve, apply the 19
push
20
21
22
327734556.xls
Section 26
1
2
3
A
B
C
D
E
F
Working Backwards Through a Calendar (Calendar Formula 3)
To make a pull schedule that works through a calendar, we will need a formula that works backwards, or
upwards through the calendar. Given a job stop and working hours, when will I need to start. Here is the
development of the formula from Section 6, and it can be modified by changing just one sign.
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Period
Number
1
2
3
4
5
6
Begin
End
0
8
10.25
13.5
15.75
19
Working
Working Hours so far
Hours
(Cum)
0
10
13
15.5
18
22
0
2
2.75
2
2.25
3
0
2
4.75
6.75
9
12
18.5
8.5
(6:30 PM)
hours
5
5
6
19
22
19
3
12
9
=MATCH(E16,B9:B14)
=MATCH(E16,C9:C14)
=G21+(G21=G22)
=INDEX(B9:B14,G23,1)
=INDEX(C9:C14,G23,1)
=MAX(G24,E16)
=G25-G26
=INDEX(E9:E14,G23,1)
=G28-G27
0.5
2
2
10
1.5
8.5
=G29-E17
=MATCH(G30,E9:E14)+1
=INDEX(E9:E14,G31,1)
=INDEX(C9:C14,G31,1)
=G32-G30
=G33-G34
CHANGE THIS FROM A + TO A With a series of substitutions, the 15 formulas can be condensed into 4 as follows:
Calc1
Calc2
6
9
=MATCH(E16,B9:B14)+(MATCH(E16,B9:B14)=MATCH(E16,C9:C14))
=INDEX(E9:E14,B41,1)-(INDEX(C9:C14,B41,1)-MAX(INDEX(B9:B14,B41,1),E16))
Calc3
=MATCH(B42-E17,E9:E14)+1
Job Stop
8.5
=INDEX(C9:C14,B43,1)-INDEX(E9:E14,B43,1)+B42 -E17
327734556.xls
Section 27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
A
B
C
D
E
Applying Calendar Formula 3 to a Pull Schedule
Here is the schedule from Section 9 again, but this time it works backwards from the stop of the last job.
Jobs
1
2
3
4
5
job A
job C
job D
job E
job B
3/17/00 8:30 AM
Hours Days
7
4
5
8
12
Stop
0.812
0.979
1.187
1.521
2.021
7
10
11
13
17
Start
3/14/00 8:30 AM
3/14/00 4:30 PM
3/14/00 9:30 PM
3/15/00 12:45 PM
3/16/00 8:30 AM
=MATCH(G14-D14,'Section 8'!$E$10:$E$39)+1
=INDEX('Section 8'!$D$10:$D$39,H14,1)-INDEX('Section 8'!$E$10:$E$39,H14,1)+G14 -D14
Note that the calendar formulas are the same as the push schedule, except that the days in column D
are subracted instead of added.
327734556.xls
Section 28
J
1
2
3
ds from the stop of the last job.
4
5
6
7
8
9
10
11
12
13
14
15
16
17
9,H14,1)+G14 -D14
18
19
pt that the days in column D
20
327734556.xls
Section 28
1
2
3
4
5
6
7
A
B
C
D
E
Multiple Work Centre - Pull Schedule
19
20
21
PUSH SCHEDULE:
0.33 0.33 0.333 0.33 0.33 0.333 0.33 0.33 0.333 0.33 0.33 0.333
Start of first job:
14/3 8:00
14/3
W/C
6
6
6
7
7
7
8
8
8
Jobs
job A
job B
job C
job A
job B
job C
job A
job B
job C
Op Job/Op Hours
1
A/1
19
1
B/1
22
1
C/1
17
2
A/2
8
2
B/2
14
2
C/2
6
3
A/3
13
3
B/3
11
3
C/3
21
Previous
Op
A/0
B/0
C/0
A/1
B/1
C/1
A/2
B/2
C/2
Previous
Op Row
#N/A
#N/A
#N/A
9
10
11
12
13
14
Stop of
Previous
Wait
Op
hours
31/12 0:00
0
31/12 0:00
0
31/12 0:00
0
15/3 3:00
19
16/3 1:00
14
16/3 18:00
3
15/3 11:00
27
16/3 15:00
15
17/3 0:00
0
Start
14/3 8:00
15/3 3:00
16/3 1:00
15/3 3:00
16/3 1:00
16/3 18:00
15/3 11:00
16/3 15:00
17/3 2:00
Stop
15/3 3:00
16/3 1:00
16/3 18:00
15/3 11:00
16/3 15:00
17/3 0:00
16/3 0:00
17/3 2:00
17/3 23:00
PULL SCHEDULE:
0:00
15/3
Jobs
job A
job B
job C
job A
job B
job C
job A
job B
job C
Op Job/Op Hours
1
A/1
19
1
B/1
22
1
C/1
17
2
A/2
8
2
B/2
14
2
C/2
6
3
A/3
13
3
B/3
11
3
C/3
21
=K31-(E31/24)
=MIN(IF(A31=A32,J32,$J$20),H31)
17/3
8:00
16:00
0:00
8:00
16:00
0:00
8:00
16:00
8.0
8.0
3.0
5.0
8.0
8.0
1.0
7.0
8.0
2.0
5.0
3.0
7.0
7.0
0:00
8:00
16:00
2.0
6.0
8.0
7.0
6.0
5.0
8.0
1.0
8.0
17/3 23:00
14/3
W/C
6
6
6
7
7
7
8
8
8
16/3
0.33 0.33 0.333 0.33 0.33 0.333 0.33 0.33 0.333 0.33 0.33 0.333
Stop of last job:
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
To examine pull scheduling logic further we have repeated the push schedule in Section 20, and compared it with a pull version of the same schedule. The pull schedule works backwards
from the stop of the last job, and each job will be dependent on the next job on the work centre, and the next operation on the job.
8
9
10
11
12
13
14
15
16
17
18
Next Op
A/2
B/2
C/2
A/3
B/3
C/3
A/4
B/4
C/4
Next Op
Row
26
27
28
29
30
31
#N/A
#N/A
#N/A
Start of
Wait
Next Op hours
15/3 17:00
0
16/3 1:00
0
16/3 20:00
2
16/3 2:00
0
16/3 15:00
0
17/3 2:00
5
17/3 23:00
0
17/3 23:00
0
17/3 23:00
0
Start
14/3 8:00
15/3 3:00
16/3 3:00
15/3 17:00
16/3 1:00
16/3 20:00
16/3 2:00
16/3 15:00
17/3 2:00
Stop
15/3 3:00
16/3 1:00
16/3 20:00
16/3 1:00
16/3 15:00
17/3 2:00
16/3 15:00
17/3 2:00
17/3 23:00
0:00
15/3
16/3
8:00
16:00
0:00
8:00
16:00
0:00
8.0
8.0
3.0
5.0
8.0
8.0
1.0
5.0
1.0
7.0
7.0
6.0
17/3
8:00
16:00
8.0
4.0
0:00
8:00
16:00
8.0
7.0
7.0
7.0
1.0
4.0
2.0
8.0
2.0
6.0
Although the first start and the last stop is the same on both schedules, the work centres spend less time waiting between jobs on the pull schedule.
327734556.xls
Section 29
1
2
3
4
5
6
7
A
B
C
D
E
F
G
H
Repetitive Production Through Multiple Work Centres - Pull Schedule
PUSH SCHEDULE:
AA
0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33
14/3 4:00
14/3
W/C
6
6
6
7
7
7
8
8
8
Product
prod A
prod B
prod C
prod A
prod B
prod C
prod A
prod B
prod C
Op
1
1
1
2
2
2
3
3
3
Prod/Op
A/1
B/1
C/1
A/2
B/2
C/2
A/3
B/3
C/3
Qty
1500
2200
1900
1500
2200
1900
1500
2200
1900
Units
per
Hour
65
60
75
105
95
110
80
85
95
Hours
23.1
36.7
25.3
14.3
23.2
17.3
18.8
25.9
20.0
Previous
Op
A/0
B/0
C/0
A/1
B/1
C/1
A/2
B/2
C/2
Previous
Op Row
#N/A
#N/A
#N/A
9
10
11
12
13
14
Start of
Stop of
Previous Previous
Wait
Op +Lag
Op +Lag hours
30/12 0:00 30/12 0:00
0.0
30/12 0:00 30/12 0:00
0.0
30/12 0:00 30/12 0:00
0.0
14/3 5:00
15/3 4:04
1.0
15/3 4:04 16/3 16:44
0.0
16/3 16:44 17/3 18:04
0.0
14/3 6:00
15/3 5:04
2.0
15/3 5:04 16/3 17:44
0.0
16/3 17:44 17/3 19:04
0.0
Start
14/3 4:00
15/3 3:04
16/3 15:44
14/3 5:00
15/3 4:04
16/3 16:44
14/3 6:00
15/3 5:04
16/3 17:44
Stop
15/3 3:04
16/3 15:44
17/3 17:04
15/3 4:04
16/3 16:44
17/3 18:04
15/3 5:04
16/3 17:44
17/3 19:04
Effective
Units per
Hour
65
60
75
65
60
75
65
60
75
PULL SCHEDULE:
0:00
8:00
260 520
195 520
130 520
15/3
16:00
0:00
520 265
235 480
520 330
175 480
Product
prod A
prod B
prod C
prod A
prod B
prod C
prod A
prod B
prod C
Op
1
1
1
2
2
2
3
3
3
16:00
0:00
8:00
17/3
16:00
0:00
8:00
16:00
81
45
544 600 600
156
105
469 600 600
231
17/3 19:04
14/3
W/C
6
6
6
7
7
7
8
8
8
8:00
520 200
295 480
16/3
0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33 0.33
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Here is the schedule from Section 21 which introduced the concept of repetitive production, and sequential operations being undertaken, on a product, at the same time. Again we will compare it with a pull version of the same
schedule.
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Prod/Op
A/1
B/1
C/1
A/2
B/2
C/2
A/3
B/3
C/3
Qty
1500
2200
1900
1500
2200
1900
1500
2200
1900
Units
per
Hour
65
60
75
105
95
110
80
85
95
Hours
23.1
36.7
25.3
14.3
23.2
17.3
18.8
25.9
20.0
Next Op
A/2
B/2
C/2
A/3
B/3
C/3
A/4
B/4
C/4
=MIN(N31-(G31/24),J31)
=IF(A31=A32,M32,K31)
Next Op
Row
26
27
28
29
30
31
#N/A
#N/A
#N/A
Start of
Stop of
Next Op
Next Op
Wait
-Lag
-Lag
hours
15/3 0:26 15/3 19:11
0.0
15/3 19:11 16/3 21:04
0.0
16/3 21:04 17/3 17:04
0.0
15/3 1:26 15/3 20:11
0.0
15/3 20:11 16/3 22:04
0.0
16/3 22:04 17/3 18:04
0.0
17/3 19:04 17/3 19:04
0.0
17/3 19:04 17/3 19:04
0.0
17/3 19:04 17/3 19:04
0.0
Start
14/3 4:00
15/3 3:04
16/3 15:44
15/3 1:26
15/3 20:11
16/3 22:04
15/3 2:26
15/3 21:11
16/3 23:04
Stop
15/3 3:04
16/3 15:44
17/3 17:04
15/3 20:11
16/3 22:04
17/3 18:04
15/3 21:11
16/3 23:04
17/3 19:04
Effective
Units per
Hour
65
60
75
80
85
95
80
85
95
0:00
8:00
260 520
15/3
16:00
0:00
8:00
520 200
295 480
524 640
444 640
16/3
16:00
0:00
8:00
17/3
16:00
0:00
8:00
16:00
81
517
183 760 760
197
602
88 760 760
292
- the start is: the earlier of the stop minus the hours, and one hour before the start of the next operation
- the stop is: the start of the next job on the work centre, if there is one, else the stop of the next operation on the job.
Again the entire schedule stops and starts at the same times, but the work centres don't start until they need to, and the effective run rates, in units per hour, are higher.
327734556.xls
Section 30
W/C
6
7
8
Calendar
Calendar 2
Calendar 1
Calendar 2
W/C
6
6
6
7
7
7
8
8
8
Calendar
Calendar 2
Calendar 2
Calendar 2
Calendar 1
Calendar 1
Calendar 1
Calendar 2
Calendar 2
Calendar 2
Product
prod A
prod B
prod C
prod A
prod B
prod C
prod A
prod B
prod C
Op
1
1
1
2
2
2
3
3
3
Prod/O
p
A/1
B/1
C/1
A/2
B/2
C/2
A/3
B/3
C/3
Qty
1500
2200
1900
1500
2200
1900
1500
2200
1900
Units
per
Hour
65
60
75
105
95
110
80
85
95
Duration
Hours
23.1
36.7
25.3
14.3
23.2
17.3
18.8
25.9
20.0
Days
0.96154
1.52778
1.05556
0.59524
0.96491
0.7197
0.78125
1.07843
0.83333
327734556.xls
Calc1
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Calc2
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Calc3
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
27/3 19:04
3rd calendar
calculations
Stop
Calc4
Calc5
Calc6
#REF! #REF! #REF! #REF!
#REF! #REF! #REF! #REF!
#REF! #REF! #REF! #REF!
#REF! #REF! #REF! #REF!
#REF! #REF! #REF! #REF!
#REF! #REF! #REF! #REF!
#REF! #REF! #REF! #REF!
#REF! #REF! #REF! #REF!
27/3 19:04 #REF! #REF! #REF!
Start
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Section 31
1
2
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
A
B
C
D
E
Push Pull Push - 3 Pass Logic
In Section 26 we had a series of jobs that were all required at the same time, but here we consider jobs
with different required times. We will start with a simple example of Job A required in 24 hours, and
Job B required 48 hours from now. The objective is to try and meet the due date of each job, but to
start each job just in time. The logic works in 3 passes, and "shuffles" the jobs taking into consideration
the following:
- the start of the schedule (hour zero)
- the length of the job in hours
- when the job is due
- the stop of the previous job
- the start of the next job
Push 1
Pull
Push 2
Jobs Hours Due Start Stop Start Stop Start Stop
Day 1
0
16
Day 2
24
32
40
48
56
In the first pass job A starts now, and job B starts immediately after that:
job A
job B
32
8
24
48
0
32
32
40
1
1
In the second pass each job stops when it is due, so job A would need to have started 8 hours ago:
job A
job B
32
8
24
48
0
32
32
40
-8
40
24
48
1
1
The third pass pushes job A later so that it starts at hour zero:
job A
job B
32
8
24
48
0
32
32
40
-8
40
24
48
0
40
32
48
1
1
32
24
24
48
0
32
32
56
-8
24
24
48
0
32
32
56
job A
job B
16
16
24
48
0
16
16
32
8
32
24
48
8
32
24
48
job A
job B
8
32
24
48
0
8
8
40
8
16
16
48
8
16
16
48
job A
job B
16
40
24
48
0
16
16
56
-8
8
8
48
0
16
16
56
=MIN(C34,F35)
=MAX(D34,F34,I33)
=H34+B34
1
1
1
1
- pull stop is the earlier of the due time or the start of the next job
- push 2 start is the later of:
the earliest start
the push start
the stop of the previous job
- push 2 stop is the start plus hours
327734556.xls
Section 32
1
2
3
A
B
C
D
E
F
Multiple Work Centre - 3 Pass Schedule
26
27
28
29
30
31
32
33
Z AA AB AC AD AE AF
AG
AH
14
25
Here we apply the 3 pass logic set out in Section 31 to jobs that pass through multiple work centres. The logic that applies to the Push 1 part of the schedule is explained in Section 20. The Pull part is in Section 29,
but has been modified to cope with Due time. This example uses hurs rather than Julian dates, simply because we can make the columns narrower this way. The Push 2 logic is the same as in Section 32, except that
the start is subject to an additional constraint, the stop of the previous operation. So now the scheduling of a job takes 7 things into consideration:
4
5
6
7
8
9
10
11
12
13
15
16
17
18
19
20
21
22
23
24
W/C
6
6
6
7
7
7
8
8
8
Jobs
job A
job B
job C
job A
job B
job C
job A
job B
job C
Op
1
1
1
2
2
2
3
3
3
Job/O
p
Hours
A/1
16
B/1
16
C/1
8
A/2
8
B/2
32
C/2
8
A/3
16
B/3
8
C/3
16
Due
24
72
96
Prev.
Op
A/0
B/0
C/0
A/1
B/1
C/1
A/2
B/2
C/2
Prev.
Op
Row
#N/A
#N/A
#N/A
15
16
17
18
19
20
Stop of
Prev. Op
0
0
0
16
32
40
24
64
72
Pull
Start Stop
0
16
16
32
32
40
16
24
32
64
64
72
24
40
64
72
72
88
Push 2
Start
-16
16
64
0
32
72
8
64
80
Stop
0
32
72
8
64
80
24
72
96
Stop of
Prev. Op
0
0
0
16
32
72
24
64
80
Start
0
16
64
16
32
72
24
64
80
Day 1
Stop
16
32
72
24
64
80
40
72
96
Day 2
Day 3
Day 4
8 16 24 32 40 48 56 64 72 80 88 96
1 1
1 1
1
1
1 1 1 1
1
1 1
1
1 1
- if there isn't a next operation put in the time due, else find the start of the next op in coumn O
- the stop is the earlier of: the start of the next job on the work centre if there is one, else the start of the next op (or the time due)
- the start is the later of: earliest (push 1) start
latest (pull) start
stop of the previous operation
stop of the previous job on the work centre, if there is one
Try changing the hours and due figures, and see how the schedule behaves.
327734556.xls
Section 33
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
A
B
C
D
E
F
G
H
I
J
Repetitive Production Through Multiple Work Centres - 3 Pass Schedule
AA
AB
AC
AD
AE
AF
AG
AH
AI
AJ
AK AL
8
Day 4
###
8
Applying the 3 pass logic to this case becomes more complex still. The Push 1 logic is explained in Section 21, and the pull logic from Section 30 has been modified to cope with the time Due. The list of things taken into consideration when scheduling a job now grows to 10:
- the start of the schedule (hour zero)
- the length of the job in hours
- when the job is due
- the stop of the previous job on the work centre
- the start of the next job on the work centre
- the 1 hour that the next operation lags behind the previous operation
- the start of the previous operation on the job
- the stop of the previous operation on the job
- the start of the next next operation on the job
- the stop of the next next operation on the job
The next operation can start
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
W/C
6
6
6
7
7
7
8
8
8
Product
prod A
prod B
prod C
prod A
prod B
prod C
prod A
prod B
prod C
Op
1
1
1
2
2
2
3
3
3
Prod/
Op
A/1
B/1
C/1
A/2
B/2
C/2
A/3
B/3
C/3
Qty
1500
2200
1900
1500
2200
1900
1500
2200
1900
Due
24
72
96
Hours
17
16
8
8
34
10
30
8
18
Prev
Op
A/0
B/0
C/0
A/1
B/1
C/1
A/2
B/2
C/2
Prev
Op
Row
#N/A
#N/A
#N/A
19
20
21
22
23
24
Start of
Stop of
Next
Prev Op Prev Op Start Stop
Op
-1
-1
0
17 A/2
-1
-1
17
33 B/2
-1
-1
33
41 C/2
1
18
1
18 A/3
18
34
18
52 B/3
34
42
52
62 C/3
2
19
2
32 A/4
19
53
32
53 B/4
53
63
53
71 C/4
=IF(ISERROR(J27),-F$16,INDEX(X$1:X$30,J27,1)+F$16)
=MAX(M27,S27,U27,IF(A27=A26,X26,0))
=MAX(W27+H27,V27)
8
Pull
Next
Op
Row
22
23
24
25
26
27
#N/A
#N/A
#N/A
Push 2
Start of Stop of
Start of
Stop of
Next Op Next Op Start Stop Prev Op Prev Op Start Stop
-8
22
-8
22
-1
-1
0
17
36
70
36
70
-1
-1
36
52
76
94
76
94
-1
-1
76
84
-7
23
-7
23
1
18
1
18
63
71
37
71
37
53
37
71
77
95
77
95
77
85
77
87
24
24
-6
24
2
19
2
32
72
72
64
72
38
72
64
72
96
96
78
96
78
88
78
96
706
16
88
Day 1
Effective
Units per
Hour
88.2
137.5
237.5
88.2
64.7
190.0
50.0
275.0
105.6
0
706
618
300
706
400
24
8
Day 2
32
40
48
550
1100
550
194
518
518
8
Day 3
56
64
72
80
950
950
570
1330
211
844
88 ##
176
400
518
453
400
2200
844
- if there isn't a previous operation return 1 hour before the start of the schedule, else find the stop of the previous operation in column X
- the start is the later of:
earliest (push 1) start
latest (pull) start
the start of the previous operation (plus 1 hour)
stop of the previous job on the work centre, if there is one
- the stop is the later of, the start plus the hours, and the stop of the previous operation (plus 1 hour)
327734556.xls
Section 34
1
2
A
B
C
D
E
3 Pass Schedule With a Calendar
9
10
11
12
13
14
15
16
17
18
19
20
All the calculations in the 3 pass schedules in Sections 33 and 34 have been done on the basis of
hours into the schedule. If all work centres work 24 hours a day, 7 days a week, then it would be
straightforward to convert the start and stop times to Julian dates. However, if the work centres
follow a calendar, then we need to apply the calendar formulas. We start with the start and stop from
push 2 of Section 34 (columns W and X), and apply the formulas set out in Section 10.
4
5
6
7
8
W/C
6
6
6
7
7
7
8
8
8
Product
prod A
prod B
prod C
prod A
prod B
prod C
prod A
prod B
prod C
=(D17-C17)/24
3/14/00 8:30 AM
Start Stop
Start Date
Calc1 Calc2
hour hour Days
0
17 0.71 3/14/00 8:30 AM
5
1.10
36
52 0.67 3/15/00 5:30 PM
12
1.77
76
84 0.33 3/17/00 3:15 PM
19
2.10
1
18 0.71 3/14/00 9:30 AM
5
1.15
37
71 1.42 3/16/00 8:30 AM
13
2.56
77
87 0.42 3/21/00 5:30 PM
28
2.98
2
32 1.25 3/14/00 10:30 AM
6
1.72
64
72 0.33 3/17/00 2:00 PM
19
2.05
78
96 0.75 3/20/00 2:00 PM
23
2.80
Calc3
12.00
19.00
23.00
13.00
28.00
33.00
19.00
23.00
31.00
Stop
3/15/00 5:30 PM
3/17/00 3:15 PM
3/20/00 3:15 PM
3/16/00 8:30 AM
3/21/00 5:30 PM
3/23/00 8:30 AM
3/17/00 2:00 PM
3/20/00 2:00 PM
3/22/00 2:00 PM
- the duration of the operation is re-established from the stop and start
hours, as it is not always the same as the hours (Section 30, column H)
327734556.xls
Section 35
Calendar
Calendar 2
Calendar 1
Calendar 2
Start of first job:
14/3 6:00
Push 1
W/C
6
6
6
7
7
7
8
8
8
Calendar
Calendar 2
Calendar 2
Calendar 2
Calendar 1
Calendar 1
Calendar 1
Calendar 2
Calendar 2
Calendar 2
Jobs
job A
job B
job C
job A
job B
job C
job A
job B
job C
Prev. Prev. Op
Op Job/Op Hours Days
Due
Op
Row
1
A/1
6
0.25
A/0
#N/A
1
B/1
12
0.5
B/0
#N/A
1
C/1
8
0.3333
C/0
#N/A
2
A/2
8
0.3333
A/1
15
2
B/2
20 0.8333
B/1
16
2
C/2
8
0.3333
C/1
17
3
A/3
16 0.6667 20/3 11:00 A/2
18
3
B/3
8
0.3333 21/3 15:00 B/2
19
3
C/3
16 0.6667 22/3 8:00 C/2
20
Stop of
Prev. Op
30/12 0:00
30/12 0:00
30/12 0:00
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Start
Calc1 Calc2 Calc3
14/3 6:00
### #REF!
###
#REF!
### #REF!
###
#REF!
### #REF!
###
#REF!
### #REF!
###
#REF!
### #REF!
###
#REF!
### #REF!
###
#REF!
### #REF!
###
#REF!
### #REF!
###
#REF!
### #REF!
###
Pull
Stop
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Next Next Op
Op
Row
A/2
18
B/2
19
C/2
20
A/3
21
B/3
22
C/3
23
A/4
#N/A
B/4
#N/A
C/4
#N/A
327734556.xls
Start of
Next Op
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
20/3 11:00
21/3 15:00
22/3 8:00
Stop
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
22/3 8:00
Push 2
Calc4
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Calc5
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Calc6
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Start
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Stop of
Prev. Op
30/12 0:00
30/12 0:00
30/12 0:00
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Start
Calc7 Calc8 Calc9
#REF!
###
###
###
#REF!
###
###
###
#REF!
###
###
###
#REF!
###
###
###
#REF!
###
###
###
#REF!
###
###
###
#REF!
###
###
###
#REF!
###
###
###
#REF!
###
###
###
Stop
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Section 36
W/C Calendar
6
Calendar 2
7
Calendar 1
8
Calendar 2
The next operation can start
14/3 6:00
Push 1
W/C
6
6
6
7
7
7
8
8
8
Calendar
Calendar 2
Calendar 2
Calendar 2
Calendar 1
Calendar 1
Calendar 1
Calendar 2
Calendar 2
Calendar 2
Product
prod A
prod B
prod C
prod A
prod B
prod C
prod A
prod B
prod C
Op
1
1
1
2
2
2
3
3
3
Prod/
Op
A/1
B/1
C/1
A/2
B/2
C/2
A/3
B/3
C/3
Qty
1500
2200
1900
1500
2200
1900
1500
2200
1900
Days
0.7102
0.6643
0.3326
0.3324
1.4103
0.4167
1.25
0.3395
0.7469
Prev
Op
A/0
B/0
C/0
A/1
B/1
C/1
21/3 11:00 A/2
22/3 15:00 B/2
23/3 8:00 C/2
Due
Prev
Op
Row
#N/A
#N/A
#N/A
19
20
21
22
23
24
Start of
Prev Op
+Lag
30/12 0:00
30/12 0:00
30/12 0:00
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Stop of
Prev Op
Calc1
30/12 0:00 #REF!
30/12 0:00 #REF!
30/12 0:00 #REF!
#REF! #REF!
#REF! #REF!
#REF! #REF!
#REF! #REF!
#REF! #REF!
#REF! #REF!
Calc2
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
327734556.xls
Calc3
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Stop of Prev
Op +Lag
30/12 0:00
30/12 0:00
30/12 0:00
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Start
14/3 6:00
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Calc4
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Calc5
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Calc6
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Stop
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Calc7
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Start +Lag
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Section 37
Pull
Next
Op
A/2
B/2
C/2
A/3
B/3
C/3
A/4
B/4
C/4
Next
Op Stop of Next
Row
Op -Lag
22
#REF!
23
#REF!
24
#REF!
25
#REF!
26
#REF!
27
#REF!
#N/A
21/3 11:00
#N/A
22/3 15:00
#N/A
23/3 8:00
Start of
Next Op
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
21/3 11:00
22/3 15:00
23/3 8:00
Calc8
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Calc9 Calc10
#REF! #REF!
#REF! #REF!
#REF! #REF!
#REF! #REF!
#REF! #REF!
#REF! #REF!
#REF! #REF!
#REF! #REF!
#REF! #REF!
Start of
Next Op
-Lag
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Push 2
Stop
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
23/3 8:00
Start
Calc14
#REF! #REF!
#REF! #REF!
#REF! #REF!
#REF! #REF!
#REF! #REF!
#REF! #REF!
#REF! #REF!
#REF! #REF!
#REF! #REF!
Stop -Lag
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
327734556.xls
Start of
Prev Op
+Lag
30/12 0:00
30/12 0:00
30/12 0:00
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Stop of
Prev Op
Calc15 Calc16 Calc17
30/12 0:00 #REF! #REF! #REF!
30/12 0:00 #REF! #REF! #REF!
30/12 0:00 #REF! #REF! #REF!
#REF! #REF! #REF! #REF!
#REF! #REF! #REF! #REF!
#REF! #REF! #REF! #REF!
#REF! #REF! #REF! #REF!
#REF! #REF! #REF! #REF!
#REF! #REF! #REF! #REF!
Stop of
Prev Op
+Lag
30/12 0:00
30/12 0:00
30/12 0:00
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Start
Calc18 Calc19 Calc20
#REF! #REF! #REF! #REF!
#REF! #REF! #REF! #REF!
#REF! #REF! #REF! #REF!
#REF! #REF! #REF! #REF!
#REF! #REF! #REF! #REF!
#REF! #REF! #REF! #REF!
#REF! #REF! #REF! #REF!
#REF! #REF! #REF! #REF!
#REF! #REF! #REF! #REF!
Stop
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
#REF!
Section 37
327734556.xls
Section 37
1
2
3
A
Project Scheduling
So far our examples have related to production activities, where a job's dependancies are implied, such
as the previous job on a work centre, or a previous operation on a job. With a project the pattern of
dependancies have to be spelled out. Here is an example:
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Activity
wake up
walk to kitchen
fill kettle
boil water
put bread in toaster
toast bread
walk to bathroom
turn on bath taps
fill bath
brush teeth
shave
remove night clothes
get into bath
wash body
shampoo hair
get dried
put on underwear
put on shirt and trousers
put on tie
walk to kitchen
lay table
make tea
spread toast
eat breakfast
Duration Dependsecs.
ency 1
30
15
6
20
7
180
8
20
8
150
10
15
10
10
12
180
13
60
12
80
15
10
16
5
17
90
18
40
19
30
20
10
21
30
22
30
23
15
23
60
24
90
26
60
27
300
27
Total Duration:
=IF(C28,INDIRECT("H"&C28),0)
=MAX(E28,F28)
=G28+B28
0:17:15
Dependency 2
14
25
9
11
28
Dep.
Dep.
Stop 1 Stop 2
0
0
30
0
45
0
65
0
65
0
85
0
85
0
100
0
110
0
100
0
160
0
240
0
250
290
295
0
385
0
425
0
455
0
465
0
495
0
495
0
525
510
585
245
675
235
675
735
Start
0
30
45
65
65
85
85
100
110
100
160
240
290
295
385
425
455
465
495
495
525
585
675
735
h:mm:ss
- find the time that the dependency stops, at its row number
- the activity starts at the later of the two dependencies
- the stop is the start plus the duration
Please excuse the fact that this example is not politically correct and gender neutral. Please note
however, that you brush your teeth whilst turning on the bath taps, but you shouln't have bothered
because you stand there naked waiting for the bath to fill. You also put on your tie while walking to the
kitchen, which saves you 15 seconds.
327734556.xls
Section 38
H
1
2
Stop
30
45
65
245
85
235
100
110
290
160
240
250
295
385
425
455
465
495
525
510
585
675
735
1035
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
y stops, at its row
34 number
e two dependencies
35
36
37
327734556.xls
Section 38
1
2
3
A
B
Critical Path Analysis
The shaded activities, below, are on the critical path. An increase in duration of these would extend the entire project, whereas non-critical activities have some "float".
Push logic calculates the earliest start of each activity, and the end time of the project, then working back from this, pull logic calculates the latest start. The first step is
to determine for each activity, the next activities that are dependent on it.
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Row
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Activity
wake up
walk to kitchen
fill kettle
boil water
put bread in toaster
toast bread
walk to bathroom
turn on bath taps
fill bath
brush teeth
shave
remove night clothes
get into bath
wash body
shampoo hair
get dried
put on underwear
put on shirt and trousers
put on tie
walk to kitchen
lay table
make tea
spread toast
eat breakfast
Dur.
Dep.
Secs Dep 1 Dep 2 Stop 1
30
0
15
6
30
20
7
45
180
8
65
20
8
65
150
10
85
15
10
85
10
12
100
180
13
110
60
12
100
80
15
160
10
16
240
5
17
14
250
90
18
295
40
19
385
30
20
425
10
21
455
30
22
465
30
23
495
15
23
495
60
24
25
525
90
26
9
585
60
27
11
675
300
27
28
675
=MATCH(A29,D$1:D$40,FALSE)
=MATCH(A29,INDIRECT("D"&J29+1&":D40"),FALSE)+J29
=MATCH(A29,E$1:E$40,FALSE)
=IF(ISERROR(J29),$I$29,INDIRECT("Q"&J29))
=MIN(M29:O29)
=P29-C29
=Q29-H29
Dep.
Stop 2
0
0
0
0
0
0
0
0
0
0
0
0
290
0
0
0
0
0
0
0
510
245
235
735
Push Push
Next Next Next Pull Pull
Start Stop Next 1 Next 2 Next 3 start 1 start 2 start 3 Stop Start Float
0
30
7 #N/A #N/A
30 1035 1035
30
0
0
30
45
8 #N/A #N/A
45 1035 1035
45
30
0
45
65
9
10 #N/A
405
65 1035
65
45
0
65
245 #N/A #N/A
27 1035 1035
585 585 405 340
65
85
11
12 #N/A
525
85 1035
85
65
0
85
235 #N/A #N/A
28 1035 1035
675 675 525 440
85
100
13
15 #N/A
100
140 1035 100
85
0
100
110
14 #N/A #N/A
110 1035 1035 110 100
0
110
290 #N/A #N/A
18 1035 1035
290 290 110
0
100
160
16 #N/A #N/A
200 1035 1035 200 140
40
160
240
17 #N/A #N/A
280 1035 1035 280 200
40
240
250
18 #N/A #N/A
290 1035 1035 290 280
40
290
295
19 #N/A #N/A
295 1035 1035 295 290
0
295
385
20 #N/A #N/A
385 1035 1035 385 295
0
385
425
21 #N/A #N/A
425 1035 1035 425 385
0
425
455
22 #N/A #N/A
455 1035 1035 455 425
0
455
465
23 #N/A #N/A
465 1035 1035 465 455
0
465
495
24
25 #N/A
495
510 1035 495 465
0
495
525
26 #N/A #N/A
525 1035 1035 525 495
0
495
510 #N/A #N/A
26 1035 1035
525 525 510
15
525
585
27 #N/A #N/A
585 1035 1035 585 525
0
585
675
28
29 #N/A
675
735 1035 675 585
0
675
735 #N/A #N/A
29 1035 1035
735 735 675
0
735 1035 #N/A #N/A #N/A 1035 1035 1035 1035 735
0
- find the row on which the activity is first cited as a dependency, by looking down column D
- find the second citing by looking down the column below the first
- find the row on which the activity is first cited as a second dependency, by looking down column E
- the start of the first activity which is dependant on this one, if there isn't one, return the end of the project
- the stop is the earliest of the starts
- the start of the activity is the stop minus the duration
- the Float is the difference between the Pull Start and the Push Start
327734556.xls
Section 39
C
B
Idle
E
Idle
C
D
A
B
Idle
E
Idle
C
D
A
B
E
Idle
C
D
A
B
E
Idle
Force
Days
Product
14/3 8:00
C
3400
Idle
Run
Force hours Force hours
Start
Opening stock:
3400
0.0
12.1 14/3 8:00
17376
0.0
49.6 14/3 20:08
0
33.1
0.0 16/3 21:47
13241
0.0
55.2 18/3 6:51
0
45.9
0.0 20/3 14:01
11748
0.0
42.0 22/3 11:53
16.0
11676
0.0
37.7 24/3 5:50
8413
0.0
28.0 25/3 19:30
14.0
13326
0.0
38.1 26/3 23:33
12.0 0
0.4
0.0 28/3 13:37
13241
0.0
55.2 28/3 14:01
10.0 0
80.6
0.0 30/3 21:12
11748
0.0
42.0
3/4 5:50
8.0
10800
0.0
34.8 4/4 23:48
8296
0.0
27.7 6/4 10:38
6.0
13265
0.0
37.9 7/4 14:17
15379
0.0
64.1
9/4 4:11
4.0
0
75.5
0.0 11/4 20:16
2.0
11748
0.0
42.0 14/4 23:48
10925
0.0
35.2 16/4 17:45
0.0
8415
0.0
28.1 18/4 5:00
5/3 0:00
15/3 38.6
0:00 19/4 9:03
13496
0.0
15127
0.0
63.0 20/4 23:36
0
75.1
0.0 23/4 14:38
Qty
A
B
C
D
E
300
350
280
310
240
5000 8000 7000 6500 9000
4
4
4
4
6
14
14
14
14
14
2857 4571 4000 3714 7714
10000 16000 14000 13000 18000
Stop
Projected Inventory - units
14/3 8:00 10621 1566 8762 11984 12796
14/3 20:08 10260
988 11656 11514 12145
16/3 21:47 8782 16000 9587 9593 9486
18/3 6:51 7798 14425 8210 8314 7714
20/3 14:01 6156 11798 5911 6179 18000
22/3 11:53 4791 9614 4000 4405 15543
24/3 5:50 3542 7616 14000 2782 13296
25/3 19:30 2421 5823 12431 13000 11278
26/3 23:33 10000 4487 11262 11915 9776
28/3 13:37 8867 16000 9676 10442 7736
28/3 14:01 8855 15981 9659 10426 7714
30/3 21:12 7213 13353 7360 8292 18000
3/4 5:50 4813 9513 4000 5171 13680
4/4 23:48 3564 7515 14000 3548 11432
6/4 10:38 2527 5856 12548 13000 9566
7/4 14:17 10000 4540 11396 11930 8084
9/4 4:11 8872 16000 9817 10464 6054
11/4 20:16 6965 12949 7147 7984 18000
14/4 23:48 4717 9352 4000 5062 13954
16/4 17:45 3468 7354 14000 3439 11706
18/4 5:00 2419 5676 12532 13000 9818
19/4 9:03 10000 4340 11363 11915 8315
25/3 0:00
4/4 0:00
20/4 23:36
8852 16000 9756 10423
6250
23/4 14:38 6976 12999 7130 7984 18000
26/4 17:45 4741 9422 4000 5078 13976
327734556.xls
Lowest Offs
Cover
et
0.9
7.4
6.0
5.9
4.0
3.0
3.4
3.9
6.0
6.0
7.4
4.0
3.8
3.5
4.0
4.7
7.1
4.0
3.7
3.4
3.8
4.9
7.1
4.0
Next
Prod
Invento
ry
Speed
2B
988
5E
9486
5E
7714
3C
5911
3C
4000
4D
2782
1A
2421
2B
4487
5E
7736
5E
7714
3C
7360
3C
4000
4D
3548
1A
2527
2B
4540
5E
6054
3C
7147
3C
4000
4D
3439
1A
2419
2B
4340
524/4
E 0:00 6250
3C
7130
3C
4000
350
240
240
280
280
310
300
350
240
240
280
280
310
300
350
240
280
280
310
300
350
240
280
280
Forcast
Min
Cover
Min
units
Max
units
8000
4 4571 16000
9000
6 7714 18000
9000
6 7714 18000
7000
4 4000 14000
7000
4 4000 14000
6500
4 3714 13000
5000
4 2857 10000
Projected
Inventory
8000
4 4571 16000
Cover
9000
6 7714 18000
9000
6 7714 18000
7000
4 4000 14000
7000
4 4000 14000
6500
4 3714 13000
Prod10000
A
5000
4 2857
8000
4 4571
Prod16000
B
9000
6 7714 18000
Prod C
7000
4 4000 14000
Prod14000
D
7000
4 4000
6500
4 3714
Prod13000
E
5000
4 2857 10000
8000
4 4571 16000
4/5
0:00
9000
6 7714 18000
7000
4 4000 14000
7000
4 4000 14000
To
make
17376
10961
13241
9504
11748
11676
8413
13326
13213
13241
7801
11748
10800
8296
13265
15379
8051
11748
10925
8415
13496
15127
8071
11748
Section 40
327734556.xls
Section 41
1
2
3
4
5
6
7
8
9
10
11
12
13
A
B
C
D
E
F
G
Make-to-Stock Schedule - Formulas Explained
14/3 8:00
C
3400
Product Force
Idle
Run
Force hours Force hours
Start
Stop
Projected Inventory - units
Opening stock:
14/3 8:00 10621 1566 8762 11984 12796
0.0
12.1 14/3 8:00 14/3 20:08 10260
988 11656 11514 12145
0.0
49.6 14/3 20:08 16/3 21:47 8782 16000 9587 9593 9486
33.1
0.0 16/3 21:47 18/3 6:51 7798 14425 8210 8314 7714
0.0
55.2 18/3 6:51 20/3 14:01 6156 11798 5911 6179 18000
45.9
0.0 20/3 14:01 22/3 11:53 4791 9614 4000 4405 15543
14
15
16
17
18
19
20
21
C
B
Idle
E
Idle
Qty
3400
17376
0
13241
0
A
B
C
D
E
300
350
280
310
240
5000 8000 7000 6500 9000
4
4
4
4
6
14
14
14
14
14
2857 4571 4000 3714 7714
10000 16000 14000 13000 18000
Lowest
Cover
Offset
Next
Prod
0.9
7.4
6.0
5.9
4.0
2
5
5
3
3
B
E
E
C
C
Invento
Speed
ry
988
9486
7714
5911
4000
350
240
240
280
280
AA
AB
AC
Forcast
Min
Cover
Min
units
Max
units
To
make
8000
9000
9000
7000
7000
4
6
6
4
4
4571
7714
7714
4000
4000
16000
18000
18000
14000
14000
17376
10961
13241
9504
11748
22
Product
=IF(E19,"Idle",IF(ISBLANK(A18),D$6,IF(ISBLANK(B19),V18,B19)))
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
C
E
G
H
I
J
O
T
U
V
W
X
Y
Z
AA
AB
AC
Qty
Idle hours
Run hours
Start
Stop
Projected Inventory - units
Projected Cover - days
Lowest Cover
Offset
Next Prod
Inventory
Speed
Forecast
Min Cover
Min units
Max units
To make
=IF(A19="Idle",0,IF(ISBLANK(C18),D$7,IF(ISBLANK(D19),AC18,D19)))
=MAX(IF(ISBLANK(F19),IF(Y18,ROUND((W18-AA18)/Y18,7),0)*168,F19),0)
=C19/HLOOKUP(A19,$J$5:$N$9,2)
=I18
=H19+((G19+E19)/24)
=J18-(J$7*($G19+$E19)/168)+(($A19=J$5)*$C19)
=J19/J$7*7
=MIN(O19:S19)
=MATCH(T19,O19:S19,0)
=INDEX(O$5:S$5,1,U19)
=INDEX(J19:N19,1,U19)
=INDEX(J$6:N$6,1,U19)
=INDEX(J$7:N$7,1,U19)
=INDEX(J$8:N$8,1,U19)
=INDEX(J$10:N$10,1,U19)
=INDEX(J$11:N$11,1,U19)
=AB19-W19+Y19*(AB19-W19)/(X19-Y19/168)/168
if there are idle hours return "Idle", else, if its the first job return Job now running, else, if force is blank return next product
from previous row, else forced value
if its an idle period put zero, else if its the first job return quantity committed, else forced value if there is one, else to make
return the force value if there is one, else no of weeks for stock to reach minimum, times 168 for hours, but 0 if its -ve
quantity divided by the speed for that product, looked up in the horizontal table
stop of the previous job
start plus idle hours plus run hours, divided by 24 to get to days
Inventory at the end of the previous job, less forecast sales for the duration of the job, plus qty if the job is for the product
inventory divided by forecast
lowest inventory cover at the end of the job
find the offset of the product with the lowest inventory cover
for the product, get the: product code
inventory level
speed
forecast sales per week
minimum inventory cover in days
minimum inventory in units
maximum inventory in units
this formula has been created by substituting together the following:
AE
AF
AG
AH
AI
=AB19-W19
=Y19/168
=X19-AF19
=AE19/AG19
=AH19*AF19
=AE19+AI19
327734556.xls
AD
Section 42
1
2
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
A
B
C
D
Inventory Cover Calculation
In Section 40 the sales forecast is expressed as a straight line, e.g.. 100 units per week. Calculating the inventory cover is a
simple division, e.g.. an inventory of 650 will last for 6.5 weeks. However, a sales forecast may be non-linear, to reflect
seasonal sales demand, sales promotions, a new product with an anticipated increase in demand, or a product at the end of
it's life cycle. Calculating the cover with a non-linear forecast, is more complex. Here is a sales forecast for 20 weeks which
falls and then rises again:
Weeks
Sales forecast:
Cum forecast:
10
11
12
13
14
15
16
17
18
19
20
80
76
72
68
64
60
56
52
48
44
40
40
44
48
52
56
60
64
68
72
476 528 576 620 660 700 744 792 844 900 960 1024 1092 1164
500
8
476
24
52
0.46
7.46
=MATCH(I13,B9:Z9)
=INDEX(B9:Z9,1,I14)
=I13-I15
=INDEX(C7:Z7,1,I14)
=I16/I17
=I14-1+I18
21
What if the inventory cover is greater then 20 weeks? We could assume that the forecast for the 20th week will continue in a
straight line at 72 per week thereafter. Here are some additional steps to cope with that:
22
23
24
25
26
27
28
29
30
Inventory:
last week
last forecast quantity
last cum forecast
cover after the last week
total cover
test to see if this should be applied
31
Now lets consider a forecast that drops away to zero, and inventory which will last for infinity. Speadsheets don't return a value
for infinity, they return an error, so lets adopt a convention that infinite cover is represented by the value 999.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Sales forecast:
Cum forecast:
80
0
75
2000
20
72
1164
11.6
31.6
1
70
65
60
55
Inventory:
last week
last forecast quantity
last cum forecast
cover after the last week
total cover
50
=MAX(C5:Z5)
=INDEX(C7:Z7,1,I24)
=MAX(C9:Z9)
=(I23-I26)/I25
=I24+I27
=I23>I26
455 500 540 575 605 630 650 665 675 680 680
680
680
680
2000
20
0
680
###
999
45
40
35
30
25
20
15
10
=IF(I39,I38+I41,999)
8
7.46
=IF(I13>MAX(C9:Z9),IF(INDEX(C7:Z7,1,MAX(C5:Z5)),MAX(C5:Z5)+(I13-MAX(C9:Z9))/INDEX(C7:Z7,1,MAX(C5:Z5)),999),
I46-1+(I13-INDEX(B9:Z9,1,I46))/INDEX(C7:Z7,1,I46))
327734556.xls
Section 43