我不确定你想把这些下拉菜单放在哪里。但是假设您希望它们在工作簿中的不同工作表上,您可以使用以下宏。
Option Explicit
Sub CreateDropdownsInSheet()
Dim SourceSheet As Worksheet
Dim TargetSheet As Worksheet
Dim i As Double
Dim DropDownRange As Range
'Define Source Sheet and Target Sheet
Set SourceSheet = ActiveWorkbook.Sheets("Sheet1")
Set TargetSheet = ActiveWorkbook.Sheets("Sheet2")
'Loops through the source sheet
For i = 1 To SourceSheet.Cells(SourceSheet.Rows.Count, 3).End(xlUp).Row Step 1
If SourceSheet.Cells(i, 3).Value = 1 Then
'Gets range for dropdown
Set DropDownRange = SourceSheet.Range(SourceSheet.Cells(i, 2), SourceSheet.Cells(i, 2).End(xlDown))
With TargetSheet.Cells(TargetSheet.Cells(TargetSheet.Rows.Count, 1).End(xlUp).Row + 1, 1)
'Names group
.Value = SourceSheet.Cells(i, 1).Value
'Populates dropdown
With .Offset(0, 1).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=" & DropDownRange.Parent.Name & "!" & DropDownRange.Address(External:=False)
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = True
End With
'Selects first element in dropdown list
.Offset(0, 1).Value = SourceSheet.Cells(i, 2).Value
End With
End If
Next i
End Sub
如果您更改代码中 SourceSheet 和 TargetSheet 变量的工作表名称以适合您的工作簿(我假设目标工作表是一个空工作表)并运行此宏,则应在目标工作表中创建您要查找的列表.