网友问到:在 Excel 的工作表中(如下图),如果有二个下拉式选单,希望第二选单不要重现第一个选单已选取的项目,该如何处理?
例如,在选单A中已选取「五月」,则选单B中没有列出「五月」供选取。
【公式设计与解析】
要制作选单效果可以透过「资料验证」功能,例如选单A设定:
单元格内允许:清单
来源:=$D$2:$D$13
如果要做到选单B不能包含选单A中已被选取的项目,则必须建立另一个选单的内容。
选取单元格D1:D13,按 Ctrl+Shift+F3 键,勾选「顶端列」,定义名称:选单A。
单元格E2:
{=OFFSET($D$1,SMALL(IF(选单A<>$A$2,ROW(选单A),””),ROW(1:1))-1,0)}
这是阵列公式,输入完成要按 Ctrl+Shift+Enter 键,Excel 会自动输入「{}」。
(1) IF(选单A<>$A$2,ROW(选单A),””)
在阵列公式中判断单元格A2内容是否和选单A阵列相同,若是则传回单元格列号,否则传回空字串。
(2) SMALL(第(1)式,ROW(1:1))
利用 SMALL 函数由小至大依序取出列号。
(3) OFFSET($D$1,第(2)式,ROW(1:1))-1,0)
将第(2)式传回的列号代入 OFFSET 函数取得对应的单元格内容。
复制单元格E2,贴至单元格E2:E12。
在单元格B2中以单元格E2:E12,建立下拉式清单。