Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 多个下拉列表,避免两次选择项目_Excel_List_Validation_Drop Down Menu - Fatal编程技术网

Excel 多个下拉列表,避免两次选择项目

Excel 多个下拉列表,避免两次选择项目,excel,list,validation,drop-down-menu,Excel,List,Validation,Drop Down Menu,我试图建立一个人员表,其中有第一个和第二个首选项的列,例如: Name Favourite Fruit Second Favourite Fruit Person 1 Apple Banana Person 2 Kiwi Fruit Pear 把最喜欢的水果命名为第二喜欢的水果 人1苹果香蕉 人2猕猴桃梨 我试图做的是防止偏好被选择两次,例如阻止用户选择一个人的最爱作为apple,以及他们的第

我试图建立一个人员表,其中有第一个和第二个首选项的列,例如:

Name Favourite Fruit Second Favourite Fruit Person 1 Apple Banana Person 2 Kiwi Fruit Pear 把最喜欢的水果命名为第二喜欢的水果 人1苹果香蕉 人2猕猴桃梨 我试图做的是防止偏好被选择两次,例如阻止用户选择一个人的最爱作为
apple
,以及他们的第二最爱作为
apple

我正在使用数据验证来引用命名范围

是否可以使用公式而不使用Visual Basic执行此操作


实际上,该列表有22个项目,因此根据所选的收藏夹设置多个列表是相当不方便的。

这是我在没有VBA的情况下所能想到的最好方法,但在下拉列表中的选项处会出现空白点

     [A]    [B]                                                                                              [J]        [K]
1    Master DropdownList                                                                                     Choose A   Choose B
2    A      =IF(IFERROR(VLOOKUP(A2,$J$2:$J$9,1,FALSE),IFERROR(VLOOKUP(A2,$K$2:$K$9,1,FALSE),""))<>"","",A2)   
3    B      =IF(IFERROR(VLOOKUP(A3,$J$2:$J$9,1,FALSE),IFERROR(VLOOKUP(A3,$K$2:$K$9,1,FALSE),""))<>"","",A3) 
4    C      =IF(IFERROR(VLOOKUP(A4,$J$2:$J$9,1,FALSE),IFERROR(VLOOKUP(A4,$K$2:$K$9,1,FALSE),""))<>"","",A4) 
5    D      =IF(IFERROR(VLOOKUP(A5,$J$2:$J$9,1,FALSE),IFERROR(VLOOKUP(A5,$K$2:$K$9,1,FALSE),""))<>"","",A5) 
[A][B][J][K]
1主下拉列表选择A选择B
2a=IF(IFERROR(VLOOKUP(A2,$J$2:$J$9,1,假),IFERROR(VLOOKUP(A2,$K$2:$K$9,1,假),),,,,,,,,A2)
3 B=如果(IFERROR(VLOOKUP(A3,$J$2:$J$9,1,假),IFERROR(VLOOKUP(A3,$K$2:$K$9,1,假),),,,,,,,,A3)
4 C=如果(IFERROR(VLOOKUP(A4,$J$2:$J$9,1,假),IFERROR(VLOOKUP(A4,$K$2:$K$9,1,假),),,,,,,,,A4)
5d=如果(IFERROR(VLOOKUP(A5,$J$2:$J$9,1,错误),IFERROR(VLOOKUP(A5,$K$2:$K$9,1,错误),),,,,,,A5)
注:本例中J列和K列的数据验证为$B2:$B5

注2:VLookup onl查看J2:J9和K2:K9,您需要根据需要展开它,但是您可以向下拖动公式,它应该会自动填充


注3:使用下拉列表选择J列或K列中的选项时。这些选项将动态地变为“空白”或空字符串。

好的,虽然有几种方法可以解决这个问题,但如果每个条目都没有两个列表,甚至没有VBA,那么就不可能实现。(在第二个下拉列表中选择将在第一个下拉列表中禁用该选项)

但是,有一个“半途而废”的解决办法。
当目标中没有设置“范围”时,工作表函数
单元格(不是VBA函数)有一个奇怪的行为

=Cell("address")
将显示“选定”单元格的地址(仅在计算工作表时)
当选择了
$G$13
时,知道并按下
F9
,它也会显示它

然而,现在出现了不利的一面:(
对于这类问题,它没有帮助,因为它只在每次计算时刷新,并且选择不同的单元格不会触发它。虽然请求者不允许使用VBA,但它只保留“每个条目两个列表”方法

我将在这里简单地分享WB(在这里编写所有代码可能太多):D

表1需要VBA(计算表)

第2页没有:P

你仍然需要为每个人做这件事…在
J2
中选择
A
K3
中禁用它,如果没有VBA,你需要为每个人创建一个完整的列表…没有解决方法…要正确:每个人都有2个列表(在“第二个”中选择“苹果”也应该在“第一个最爱”中禁用它)