1) if you run out of decreases, doubling the starting board length wont increase the number of cuts, it will just increase the amount of board you have left at the end of the sequence of cuts 
2) as for 2.5 cuts per lenth...how would you accomplish this? I have never been able to do it with my saw !
the number of cuts is supposed to be an integer, ( the display using the helper columns assumed an integer # of cuts, so you keep seeing 8"(I left it in for error checking the UDF)), however, this did point out a flaw in the logic of the UDF as well --- I did not check for that !!!
Function CutBoard(StrtLeng, FrstCutLeng, CutIncr, Optional NumCutsPer, Optional IncldCurf, Optional CurfSz, Optional ReturnOpt)
Dim LengthRemain, LastCut, NewCutLen
Dim i, TotalCuts, CutsPer As Long
Dim ErrMess As String
Dim EXIT_FLAG As Boolean
If IsMissing(NumCutsPer) Then NumCutsPer = 1
If IsMissing(IncldCurf) Then IncldCurf = 0
If IsMissing(CurfSz) Then CurfSz = 1 / 8
If IsMissing(ReturnOpt) Then ReturnOpt = 0
If IsMissing(ForceCutsPerInt) Then ForceCutsPerInt = True
CutsPer = NumCutsPer
ErrMess = ""
If StrtLeng <= 0 Then
ErrMess = "Invalid Starting Length"
ElseIf FrstCutLeng <= 0 Or FrstCutLen > StrtLeng Then
ErrMess = "Invalid First Cut Length"
ElseIf CutIncr <= 0 Or CutIncr > FrstCutLeng Then
ErrMess = "Invalid Cut Increment"
ElseIf CutsPer < 1 Or CutsPer - CLng(NumCutsPer) > 0 Then
ErrMess = "Cuts per cut length MUST be at Least 1"
ElseIf IncldCurf <> 1 And IncldCurf <> 0 Then
ErrMess = "Include Curf is not 1 or 0"
ElseIf ReturnOpt < 0 Or ReturnOpt > 3 Then
ErrMess = "Return Option MUST be 0,1,2 or 3"
End If
If ErrMess <> "" Then
CutBoard = ErrMess
Exit Function
End If
EXIT_FLAG = False
TotalCuts = 0
LengthRemain = StrtLeng
NewCutLen = FrstCutLeng
While LengthRemain > 0 And NewCutLen > 0 And EXIT_FLAG = False
LastCut = NewCutLen
If LengthRemain - (NewCutLen * NumCutsPer) > 0 Then
LengthRemain = LengthRemain - (NewCutLen * CutsPer) - (IncldCurf * CurfSz * CutsPer)
NewCutLen = NewCutLen - CutIncr
TotalCuts = TotalCuts + CutsPer
Else
EXIT_FLAG = True
For i = 1 To CutsPer
If LengthRemain - NewCutLen > 0 Then
LengthRemain = LengthRemain - NewCutLen - (IncldCurf * CurfSz)
TotalCuts = TotalCuts + 1
End If
Next i
End If
Wend
Select Case ReturnOpt
Case 0
CutBoard = TotalCuts
Case 1
CutBoard = LengthRemain
Case 2
CutBoard = LastCut
Case 3
CutBoard = "Total cuts : " & TotalCuts & " Last Cut Was : " & LastCut & " Length Remaining : " & LengthRemain
End Select
End Function
new code forces the number of cuts to an integr value, and I updated the Formula version as well to display interim results properly 
Same Parameters as before
Hope this helps
Bookmarks