Not sure how you feel about using VBA, but here's a solution.
First, we check to see if the final cell is a 0. If it is, then we automatically assume false:
If .Cells(.Cells.Count) = 0 Then Exit Function
Next, we will loop through each cell in the range, checking the current cell against the next cell. But before we do this, we do some pre-checks to ensure that the numbers are 'legal' (as in, they must be a 0 or a 1. Since I have the function returning a Boolean value, you will actually receive a #VALUE! error instead of the one I used (xlErrNum), but it doesn't break anything.
The loop is designed to grab all the False scenarios, so therefore if it passes the loop, it will return a true value.
Add this code to a VBA module:
Public Function TestForBreakage(rng As Range) As Boolean
Dim i As Long
With rng
If .Cells(.Cells.Count) = 0 Then Exit Function 'Can't end w/ a 0
For i = 1 To .Cells.Count
If .Cells(i).Value < 0 Or .Cells(i).Value > 1 Then '# other than 0 or 1 used
TestForBreakage = CVErr(xlErrNum)
Exit Function
ElseIf .Cells(i).Value <> Int(.Cells(i).Value) Then 'Decimal used
TestForBreakage = CVErr(xlErrNum)
Exit Function
End If
If i = .Cells.Count Then Exit For
If .Cells(i).Value > .Cells(i + 1).Value Then Exit Function 'Returns False
Next i
End With
TestForBreakage = True 'If made through the loop unscathed then must be True
End Function
Since this didn't originate as a VBA question, just in case you are unfamiliar with VBA I will provide the steps to add the above code.
- Save your workbook as a Macro-Enabled Workbook

- Simultaneously press ALT and F11 inside your workbook. This brings up the VBA Editor.
- Head to
Insert then Module

- Paste the above code into the new module you just created

- Close the editor
- Use the newly-created formula that we just made
