如何在自定义值的Excel中创build一个下拉列表

我想在excel中创build一个包含一些固定值的下拉列表,大多数示例都是关于从表格input的下拉列表。 我的情况下,我想把“如果,或,”里面的任何人都可以build议如何在Excel中实现这一点? 我发现这个例子为每个地方的工作表的现有值。

你不需要VBA来做这件事,但是你可以用代码来做。 设置列表的最简单方法是转到“数据”选项卡,然后转到“数据validation”。 然后,在设置select列表作为您的validation标准,并input您的三个值(逗号分隔)。 您可以通过复制和粘贴格式或左键单击拖动和复制格式将其复制到任何单元格。

在这里输入图像说明

如果你真的想在VBA中做到这一点

使用数组

Sub CreateDropdownList() ' replace "A5:A12" with your named range if you have one Range("A5:A12").Select ' range where you've listed your choices ' now sort them alphabetically, replace sheet1 with your sheetname ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("A5"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortTextAsNumbers With ActiveWorkbook.Worksheets("Sheet1").Sort ' you can use your named range here as well .SetRange Range("A5:A12") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With ActiveWorkbook.Names.Add Name:="choices", RefersToR1C1:= _ "=Sheet2!R5C1:R12C1" Range("G13").Select 'this is the cell you want the dropdown in With Selection.Validation .Delete 'without array '.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 'xlBetween, Formula1:="IF, AND, OR" 'with array .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=choices" .IgnoreBlank = True .InCellDropdown = True .InputMessage = "Select a value" .ErrorMessage = "No value selected" .ShowInput = True .ShowError = True End With End Sub 

不完全清楚你想要什么,但我猜可能你想依赖的下降基于另一个单元格的值? 在这里查看更多关于这个的信息 ,你可以制作一个包含所有潜在下拉值的工作表,然后在数据validation工具中使用= INDIRECT(SUBSTITUTE(CellName,“”,“”))。 所以,如果你希望依赖值在单元格B1中,而在B2中下拉,则可以将数据validation(数据选项卡)和下拉框放入B2中(select“列表”),其中源为= INDIRECT( SUBSTITUTE(B1,“”,“”))。这个链接可能会帮助你更好的解释这个图片。

在上面的例子中,使用名称pipe理器(公式选项卡)命名所有你想要的名单,没有空格(所以如果你有名为“新员工”的名单,在名称pipe理器中你可以称之为NewEmployees 。然后,在所有值中的表单中,您将标题作为列表标题(如此新build员工),并在其后面显示所有值,只有在新员工是依赖单元格的值时才显示。