问题很简单,但我似乎无法解决或找到答案。
我有一个单元格A2根据用户输入的其他内容以是/否激活。
我想在另一个单元格A3中创建一个下拉列表,只有当A2有一个"是"内。据我所知,这只能通过数据验证来完成,但它会不断抛出错误。
答案 0 :(得分:3)
对于下拉列表的数据验证,当您创建它时,您可以使用"如果"声明。选择"列表"来自"允许",然后是来源,类似=if(A2="Yes",B2:B6,C2)
。注意,我假设你的数据列表是B2:B6,而C2中是你想要返回的字符串,如果A2不是"是"。
注意:如果A2不是"是",并且您想要A3中的列表然后说"没有必要的列表",您不能只使用该字符串用于验证的IF语句 - 您需要将该字符串放入,即C2,并使用上面的公式。由于某种原因,不能在数据验证IF语句中输入字符串。
答案 1 :(得分:1)
编辑:哦,看起来VBA完全不需要这个用途。我没有删除答案,因为它可以工作,但我不会通过更容易的方法推荐这个!
我会使用VBA。如果您不害怕使用某些代码,那么我相信这将是有用的。如果你在VBA中绝对为零,我可以提供更详细的帮助。
打开Visual Basic编辑器并复制/粘贴它:
'this means it activates when there is change in your worksheet:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Range("A2")) Is Nothing Then 'Checks that the change occurs in the cell A2
If Range("A2") = "Yes" Then 'only enters this if it changed to yes
With Range("A3").Validation 'this little block creates the list. More on this after the code
.delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=Paramètres!$C$1:$C$5"
End With
End If
If Range("A2") = "No" Then 'only does this if it changed to no
Range("A3").Validation.delete 'this deletes the list.
End If
End if
End sub
因此,在单元格A2中发生更改时,会创建或删除列表(在我们的示例中)。该列表包含您必须在单元格C1到C5中写入的项目。 (例如:在c1中写“hello”,在c2中写:“再见”等)。如果您想要更多或更少的输入,您可以根据需要将C1更改为C3或C10。您也可以通过更改C将列表放在别处(例如E列)。在列中写入列表后,我建议隐藏该列,因为没有必要查看它。