制作下拉菜单,如何自动去除空值和重复值?很多年前,我写这个案例的时候,方法着实费劲,但现在有 365 函数,太简单了。
案例:
将下图 1 的列表制作成下拉菜单,去除空值和重复值。如果数据有变化,下拉菜单自动更新。
效果如下图 2 所示。


解决方案:
1. 在 C2 单元格中输入辅助列公式:
=UNIQUE(TOCOL(A2:A13,3))


公式释义:
TOCOL(A2:A13,3):
tocol 函数的作用是将区域内的数值转换成一列;第二个参数 3 表示忽略空白和错误;
这个公式的效果是去除所有空行;
UNIQUE(...):从上述区域中提取出唯一值。
也可以使用以下公式:
=UNIQUE(FILTER(A2:A13,A2:A13<>""))
公式释义:
FILTER(A2:A13,A2:A13<>""):
filter 函数的作用是按条件筛选;
公式的作用是从 A2:A13 区域中筛选出所有不为空的单元格;
UNIQUE(...):最后再用 unique 函数提取出唯一值。
2. 选中 E2 单元格 --> 选择任务栏的“数据”-->“数据验证”-->“数据验证”

3. 在弹出的对话框中选择“设置”选项卡 --> 在“允许”下拉菜单中选择“序列”--> 在“来源”中输入以下公式 --> 点击“确定”:
=OFFSET(C2,,,COUNTA(C:C))

公式释义:
COUNTA(C:C):统计 C 列中所有文本个数;
OFFSET(C2,,,...):
offset 函数的作用是返回对单元格或单元格区域中指定行数和列数的区域的引用;
公式表示以 C2 单元格为起点,不需要上下(参数 2 留空)或左右(参数 3 留空)偏移,返回以参数 4 的值所代表的行高的区域,也就是返回 C 列的所有非空单元格。
下拉菜单成功制作完毕。

清空 A3 单元格的的内容,下拉菜单自动更新了。
