Looks at order data and arranges it to focus on order locations
A quick fix would be to change:

For Each cell In rng.Cells
    For Each header In rng2.Cells
        If cell.Value = 0 Then

        ElseIf cell.Value &lt;&gt; header.Value And s2.Cells(cell.row, header.Column).Value &lt;&gt; 1 Then
            s2.Cells(cell.row, header.Column).Value = 0
        Else
            s2.Cells(cell.row, header.Column).Value = 1 ' indicates that this order features a line from this location
        End If
    Next header
Next cell


to 

For Each cell In rng.Cells
  If cell.Value &lt;&gt; 0 Then
    For Each header In rng2.Cells
        If cell.Value &lt;&gt; header.Value And s2.Cells(cell.row, header.Column).Value &lt;&gt; 1 Then
            s2.Cells(cell.row, header.Column).Value = 0
        Else
            s2.Cells(cell.row, header.Column).Value = 1 ' indicates that this order features a line from this location
        End If
    Next header
  End If
Next cell


That way you only loop through the headers if the cell value isn't 0, instead of looking at every header for every cell no matter its value, then checking to see if it's a cell you're interested in.

It also gets rid of the awkward If x do nothing else do something construct.