Есть несколько способов сделать это. Вы можете зациклить все строки, найти значения выше 3200, скопировать их на скрытый лист, когда закончите с циклом, получить Range из этого скрытого листа и назначить его ListFillRange. Пример:
Function updateCombo1()
Dim lastRow As Long, i As Long, x As Long, wk As Workbook
Set wk = ThisWorkbook
With wk.Sheets("Sheet1")
lastRow = .Cells(Rows.Count, 1).End(xlUp).Row
wk.Sheets("HiddenSheet").Cells.ClearContents
For i = 1 To lastRow
If .Cells(i, 3).Value >= .Range("G10").Value Then
x = x + 1
wk.Sheets("HiddenSheet").Cells(x, 1).Value = .Cells(i, 2).Value
End If
Next i
lastRow = wk.Sheets("HiddenSheet").Cells(Rows.Count, 1).End(xlUp).Row
'If Form DropDown, Set Range
.DropDowns("Drop Down 2").ListFillRange = "HiddenSheet!A1:A" & lastRow
'If ActiveX DropDown, Set Range
.ComboBox11.ListFillRange = "HiddenSheet!A1:A" & lastRow
End With
End Function
Вы также можете зациклить все строки и добавить одну за другой в раскрывающемся списке. Пример:
Function updateCombo2()
Dim lastRow As Long, i As Long, wk As Workbook
Set wk = ThisWorkbook
With wk.Sheets("Sheet1")
lastRow = .Cells(Rows.Count, 1).End(xlUp).Row
'If Form Drop Down, Clear All Items
.DropDowns("Drop Down 2").RemoveAllItems
'If ActiveX Drop Down, Clear All Items
.ComboBox11.Clear
For i = 1 To lastRow
If .Cells(i, 3).Value >= .Range("Q10").Value Then
'If Form DropDown, Add Item
.DropDowns("Drop Down 2").AddItem .Cells(i, 2).Value
'If ActiveX DropDown, Add Item
.ComboBox11.AddItem .Cells(i, 2).Value
End If
Next i
End With
End Function
Просто вызовите функцию в Worksheet_Change
Редактировать: Работать с выпадающим списком ActiveX намного проще, но для совместимости я бы попробовал вместо этого использовать раскрывающийся список форм.