Excel中实现下拉列表的方法与WPS表格稍有些差异,WPS中直接使用数据菜单中的下拉列表即可,而微软的Excel则是通过数据选项卡中数据验证来实现。

我们将通过给姓名和性别设置下拉列表,来看一下实现的过程。

姓名已经有了对应的列表,只需要在下拉列表中选择相应的单元格即可,而性别在数据表中没有相应的数据源,因为性别只有男和女两种情况,所以,在选择来源时直接输入就可以了。
选中B2单元格,点击数据菜单中的数据验证,在弹出的窗口中设置验证条件,允许“序列”,来源中输入“男,女”,然后确认即可。
Tips:需要注意逗号分隔符要在英文半角状态下输入。

这样,当选中B2单元格时,单元格右边会出现倒三角下拉选择按钮,点击它即可看到我们输入的“男和女”选项。

而姓名可以从单元格中选择相应的人员,选中A2单元格,点击数据验证,同样是序列,来源选择E2:E4,注意这里自动添加了绝对引用$符号。

通过下拉控制按钮可以选择不同的姓名。

E列的名单取值范围是绝对引用,这样就导致一个问题,如果新增了人员,那么就得修改公式的范围,不然,在下拉列表中是看不到新增数据的。

有一个简单的解决方案,就是把范围设置为整个E列。

但这样也存在一个问题,就是在下拉列表中包含了标题和空白,这就显得不够“精致”,也容易产生误解。

本着追求极致、力求完美的原则,就让我们再来回顾一下OFFSET()函数的应用。
⚑ OFFSET 函数
=OFFSET(基准单元格,偏离行数,偏离列数)

第一参数指定的单元格(基准单元格)开始

第二参数指定向上或向下偏移几行
第三参数指定从第二参数偏离后的位置向右或向左偏移几行

可以看到,E1向下1行,向右0列,结果为E2单元格,即“张三”。
Tips:
第二参数为正数则向下移动,为负数则向上移动。
第三参数为正数则向右移动,为负数则向左移动。
另外,OFFSET还有两个可选参数,就是在前三个参数的基础上增加了范围的选择,分别为高度和宽度。
=OFFSET(基准单元格,偏移行数,偏移列数,高度,宽度)

=OFFSET(E1,1,0,4,1)
以E1单元格为基准,向下1行,再向右0列,接着从E2开始高度为4行,宽度1列,取这个范围区间的数据。

OFFSET这个用法像极了VLOOKUP的查询功能,但它比VLOOKUP强大的地方在于可以向左取值,VLOOKUP只能取右边的数据,当然这不是今天的重点。

在E6单元格中新增一个姓名,可以看到C列中没有相应的增加。

原因是第四个参数为4,数字4在参数中为常量,不会随数据量增删而变化,所以只取到了4个姓名。

COUNTA函数
为了解决这个问题,我们来看一个数量统计的函数COUNTA(),统计非空单元格的数量,用于统计文本类型非空白单元格的数量。

=COUNTA(E:E)
统计E列中的非空单元格的数量,统计结果只要不是空白就计算在内。

这样标题也包含在内了,结果为6,这也正是为什么要减1的原因。

在公式结尾处-1,就是去掉标题这一行,剩余的非空单元格即为所有人员的数量了。

这样,增删人员的话,统计结果会随之重新计算,它就不再是个常量,复制一下这个公式,待用。

C2单元格的公式中第四个参数就可以更换为这个统计公式。

选中或删除第四个参数,粘贴之前复制的公式,C2单元格的公式就变成了
=OFFSET(E1,1,0,COUNTA(E:E)-1,1)

OFFSET函数的第四个参数已经是个变量,它会随E列名单的数量而变化。

只要增加名单,C列也会自动拓展数据选择范围。

有了这个思路,实现自适应下拉列表就简单了,复制一下C2单元格的公式。

修改A2单元格的数据验证,来源中粘贴上刚刚复制的公式,确定。

这样,一个能够随数据增删而自适应选择范围的下拉列表就制作好了。通过结合使用COUNTA()和OFFSET()函数,可以创建一个智能的下拉列表,该列表能够根据数据源的变化自动更新选项范围。
熟悉这些函数的用法以及它们之间的组合应用,可以在处理Excel工作表时提高工作效率和准确性,特别是在处理不断变化的数据时,可以大大减少手动更新的工作量。