我有一个很好的问题。假设我有一个如下所示的列表:
Fruits | Apples | 1
| Oranges
| pears
Vegetables| Corn | 1
| Turnips
| Broccli
因此,我们有A,B和C列.A是Fruits
或vegetables
,B类型,C每次填充1 {1}}。我想要做的是创建一个下拉列表,其中C = 1,直到C单元格中的下一个1。
所以我最终会得到的是:
水果|苹果(与其他水果一起下拉)| 1
蔬菜|玉米(与其他蔬菜一起下拉)| 1。
注意“|”是任何混淆的细胞之间的分隔符。
我希望我的问题对任何善良的人都有帮助。
非常感谢。
答案 0 :(得分:0)
我不确定你想把它们放在哪里。但假设您希望它们位于工作簿中的不同工作表上,则可以使用以下宏。
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变量的工作表名称以适合您的工作簿(我假设目标工作表是一个空工作表)并运行此宏,那么您要查找的列表应该在目标表。