多位网友问到:在 Excel 中如何使用下拉式清单时,已经选过的项目不再显示,即如何才能不选到重复的项目?

参考下图,已被选过的项目,不会在下拉式清单中出现,所以不会再被选到。

Excel-在下拉式清单中显示未被选取项目(OFFSET,COUNTIF,ROW,SMALL)

 

【公式设计与解析】

我没有好的解决方案,只能利用一个辅助栏位(D栏)来将未被选取者,列出资料清单。

储存格D2:{=IFERROR(OFFSET($C$1,SMALL(IF(COUNTIF($A$2:$A$11,
$C$2:$C$11)=0,ROW($C$2:$C$11),""),ROW(1:1))-1,0),"")}

这是阵列公式,输入完成要按 Ctrl+Shift+Enter 键,Excel 会自动加上「{}」。

复制储存格D2,贴至储存格D2:D11。

(1) COUNTIF($A$2:$A$11,$C$2:$C$11)

在阵列公式中,利用 COUNTIF 函数计算原始资料中的每一个项目,在已选栏位中出现的次数。(若为 0,表示尚未被选,若为 1,表示已经被选取。 )

(2) IF(第(1)式=0,ROW($C$2:$C$11),"")

在阵列公式中,利用 ROW 函数将第(1)式的结果为 0 者,传回其列号。(若为 1 者,传回空字串。)

(3) SMALL(第(2)式,ROW(1:1))

当公式向下复制时,利用 SMALL 函数依序取出由小至大列号。(其中 ROW(1:1)=1→ROW(2:2)=2→ROW(3:3)=3→...。)

(4) OFFSET($C$1,第(3)式-1,0)

将第(3)式传回的列号代入 OFFSET 函数取得对应的储存格内容。

(5) IFERROR(第(4)式,"")

若有传回错误讯息,则以 IFERROR 函数将错误讯息转换为空字串。

接著,要来设计下拉式清单。

先选取储存格A2:A11,进入「资料验证」对话框中,设定:

资料验证准则:清单。

来源:=OFFSET($E$2,0,0,COUNTA($E$2:$E$11)-COUNTIF($E$2:$E$11,""),1)

Excel-在下拉式清单中显示未被选取项目(OFFSET,COUNTIF,ROW,SMALL)

(1) COUNTA($E$2:$E$11)-COUNTIF($E$2:$E$11,"")

COUNTA($E$2:$E$11):利用 COUNTA 函数计算E栏中的全部资料数量;

COUNTIF($E$2:$E$11,""):利用 COUNTIF 函数计算E栏中内容为空字串的数量;

两者相减的结果,即为有内容(非空字串)的项目数量。

(2) OFFSET($E$2,0,0,第(1)式,1)

将第(1)式代入 OFFSET 函数以取得未选资料项目的储存格范围。

相关文章