(Хотя это не идеальное решение), решение состоит в том, чтобы реализовать сортировку в отсортированной таблице с использованием VBA. Следующий код делает это:
Sub SortByToday()
'
' SortByToday Macro
'
'
    Dim row As Long
    Dim rows As Long
    Dim topRow As Long
    Dim bottomRow As Long
    For row = 2 To 1000
        If Range("A" & row).Value = "" Then
            rows = row
            Exit For
        End If
    Next
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range(Range("L2"), Range("L" & rows)) _
        , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range(Range("N2"), Range("N" & rows)) _
        , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range(Range("P2"), Range("P" & rows)) _
        , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SetRange Range(Range("A1"), Range("W" & rows))
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    'find the number of morning todos
    For row = 2 To 1000
        If Range("L" & row).Value <> 1 Then
            bottomRow = row
            Exit For
        End If
    Next
    'sort on the morning todos only
    If bottomRow <> 2 Then
        ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range(Range("D2"), Range("D" & bottomRow - 1)) _
            , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Sheet1").Sort
            .SetRange Range(Range("A2"), Range("W" & bottomRow - 1))
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End If
    topRow = bottomRow
    For row = topRow To 1000
        If Range("N" & row).Value <> 1 Then
            bottomRow = row
            Exit For
        End If
    Next
    If bottomRow <> topRow Then
        ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range(Range("D" & topRow), Range("D" & bottomRow - 1)) _
            , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Sheet1").Sort
            .SetRange Range(Range("A" & topRow), Range("W" & bottomRow - 1))
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End If
    topRow = bottomRow
    For row = topRow To 1000
        If Range("P" & row).Value <> 1 Then
            bottomRow = row
            Exit For
        End If
    Next
    If bottomRow <> topRow Then
        ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range(Range("D" & topRow), Range("D" & bottomRow - 1)) _
            , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Sheet1").Sort
            .SetRange Range(Range("A" & topRow), Range("W" & bottomRow - 1))
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End If
End Sub
Замечания:
1) В столбце A написано текстовое описание задачи. Первая часть кода определяет, сколько строк в таблице задач.
2) Первая сортировка сортирует задачи утром (столбец L), затем днем (столбец N) и затем вечером (столбец P).
3) Следующий цикл for находит количество строк, которые являются утренними задачами. Затем следующий вид сортирует утренние задачи по приоритету. Затем то же самое делается для дневных задач и вечерних задач.
Спасибо @ fixer1234 за идею.