Я думаю, что самый простой способ составить список - это использовать макрос для этого.
Если вы пройдете через столбец, а затем поместите все задания, которые не закрыты, в массив,
затем вы можете поместить массив в список.
Sub makeList()
Dim arr() As Variant, i As Integer, lnght As Long
lnght = Range("A" & Rows.Count).End(xlUp).Row
i = 0
For Each cell In Range("A1:A" & lnght)
If Not cell.Offset(0, 15).Value = "Y" Then
ReDim Preserve arr(0 To i) As Variant
arr(i) = cell.Value
i = i + 1
End If
Next
With Range("C1").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:=Join(arr, ",")
End With
End Sub
Это помещает раскрывающийся список в "C1", поэтому просто измените его на то место, где оно должно быть.
Это необходимо обновлять каждый раз, когда задание добавляется, удаляется или изменяется на закрытое.
Вы можете иметь кнопку обновления или просто поместить код на листе.
Я бы предложил вызывать его с Worksheet_Change
, и если вы не хотите, чтобы оно запускалось при каждом изменении, добавьте метод пересечения, чтобы проверить, соответствует ли цель изменения списку.
Также предполагается, что разделителем является «,», поэтому при необходимости измените его.