WPS下拉列表新功能,制作三级下拉菜单只需要4个公式

会飞的鱼
会飞的鱼

WPS函数专家

28天前心心念念的下拉列表自动去重复功能,WPS这次更新了。

使用公式制作动态三级菜单

4月24日,WPS版本号更新到了16894,此次更新除了新增了12个函数,还优化了下拉列表功能,在制作下拉列表时,当下拉列表数据源区域包含重复项时,会自动去除重复项,同时还会自动去除空单元格。

依次点击【数据】-【下拉列表】-【从单元格选择下拉列表】如下图所示。

当选择的单元格区域有重复项时,会弹出"选项内容存在重复项,是否继续?"的提示,点击【是(Y)】然后点击【确定】,如下图所示。

可以发现,下拉列表已自动去重复项和空白单元格。

基于这个功能,制作三级菜单也很简单,只需要3或4个公式即可完成三级菜单制作。

一、处理数据源

三级菜单的数据源需要每级内容依次排序,相同菜单的内容需要在一个连续的区域,如果菜单内容固定且一、二级已排序,可以省略此步骤,如果菜单内容需要动态添加修改并且顺序不固定,需要使用公式对菜单数据源排序,如下图所示。

=SORT(DROP(TAKE(A:C,COUNTA(A:A)),1),{1,2})

1、使用COUNTA函数获取A列数量。

2、使用TAKE函数,第1个参数引用A:C列,第2个参数根据COUNTA函数返回的数量截取前N行。

3、使用DROP函数将第1行标题行删除。

4、使用SORT函数依次对第1、第2列排序。

二、设置一级菜单

选中在设置一级菜单的单元格区域,I2:I24单元格区域,依次点击【数据】-【下拉列表】-【从单元格选择下拉列表】后输入公式。

2.1、如果第一步省略,可直接引用从A2开始到一个相对较大的单元格区域,如A2:A9999

=A2:A9999

2.2、如果第一步使用了公式,输入以下公式。

=TAKE($E$2#,,1)

三、设置二级菜单

选中在设置一级菜单的单元格区域,J2:J24单元格区域,依次点击【数据】-【下拉列表】-【从单元格选择下拉列表】后输入公式。

3.1、如果第一步省略,输入以下公式

=OFFSET($B$1,MATCH(I2,$A:$A,0)-1,,COUNTIFS($A:$A,I2))

3.2、如果第一步使用了公式,输入以下公式。

=OFFSET($F$1,MATCH(I2,$E:$E,0)-1,,COUNTIFS($E:$E,I2))

下单列表虽然支持使用公式,但是支持单元格引用,需要公式返回单元格引用,所以需要菜单的选项在一个连续的区域,然后使用OFFSET函数,返回指定区域的单元格引用作为下拉列表的数据源。

OFFSET第1个参数,基点,设置二级单元格所在列的第一个单元格。

OFFSET第2个参数,偏移行数,使用MATCH函数查找一级单元格的内容到一级菜单数据源中查找所在位置,然后减1。

OFFSET第3个参数,偏移列数省略。

OFFSET第4个参数,扩展行数,使用COUNTIFS函数计算一级菜单对应的数量。

OFFSET第5个参数,扩展列数省略。

四、设置三级菜单

选中在设置一级菜单的单元格区域,K2:K24单元格区域,依次点击【数据】-【下拉列表】-【从单元格选择下拉列表】后输入公式。

需要注意的是,因BYROW函数涉及循环计算,所以不要引用整列,根据实际数据,设置一个相对较大的单元格区域即可。

4.1、如果第一步处理数据源没有使用公式

=OFFSET($C$1,MATCH(I2&J2,BYROW($A$1:$B$9999,CONCAT),0)-1,,COUNTIFS($A:$A,I2,$B:$B,J2))

4.2、如果第一步使用了公式,输入以下公式。

=OFFSET($G$1,MATCH(I2&J2,BYROW($E$1:$F$9999,CONCAT),0)-1,,COUNTIFS($E:$E,I2,$F:$F,J2))

三级菜单和二级菜单原理相同,只是在计算偏移量和数量的时候,从计算一级菜单一个条件变成需要计算一级、二级菜单两个条件。

需要注意的是,在下拉列表设置公式时,是不支持数组公式的,下面的公式是不支持的。

=OFFSET($G$1,MATCH(I2&J2,$E$1:$E$9999&$F$1:$F$9999,0)-1,,COUNTIFS($E:$E,I2,$F:$F,J2))

所以本示例使用BYROW函数将一级、二级菜单数据源两列拼接成一列后查找位置。

五、扩展内容

如果使用SORT对一、二级菜单数据源排序后,制作好的下拉菜单顺序不理想,可以通过修改第一步的公式来自定义排序后的顺序。

添加两列辅助列,依次设置一级、二级自定义顺序,然后修改第一步的公式,如下图所示。

=LET(x,SORT(DROP(TAKE(A:C,COUNTA(A:A)),1),{1,2}),SORTBY(x,MATCH(CHOOSECOLS(x,1),M:M,0),1,MATCH(CHOOSECOLS(x,2),N:N,0),1))

设置后的下拉菜单效果

此情况只针对多项菜单中的少量几个选项排序,并且二级菜单内容不重复的前提下,如果需要全部自定义,或多级菜单的子项有重复的情况,此方法不使用,建议省略第一步的排序转换,直接手工处理菜单数据源顺序。

六、其他说明

在修改菜单数据源时,建议使用【清除内容】功能,如果使用删除或插入行列,需要在公式中使用INDIRECT函数,否则可能会导致下拉菜单中的公式出错,无法使用。

如将公式

=OFFSET($F$1,MATCH(I2,$B:$B,0)-1,,COUNTIFS($A:$A,I2))

修改为

=OFFSET(INDIRECT("F1"),MATCH(I2,INDIRECT("B:B"),0)-1,,COUNTIFS(INDIRECT("A:A"),I2))

需要注意的是,设置下拉菜单区域引用的一级、二级的单元格区域不要修改,如一级单元格的I2单元格,不要修改

16894版本已开始逐步更新,目前官网还没有更新,想提前体验的小伙伴可以通过下方链接下载

以上是本次分享的内容,欢迎大家留言探讨,我们明天见~

辽宁省
浏览 4442
8
13
分享
13 +1
6
8 +1
全部评论 6
 
WPS-01
16894版本要怎样下载或者更新?为什么我的wps提示16729版本已经是最新版
· 广东省
回复
 
堇七
学习
· 江西省
回复
 
潘林杰
你好,请问TAKE和DROP是啥函数?为啥我的WPS里面没有
· 上海
回复
 
Boyuan
学习+收藏
· 河南省
回复
 
亂雲飛渡
收藏学习
· 广东省
回复
 
HC.旋
感谢分享,技能+1
· 江苏省
1
回复