制作下拉菜单的时候,如果列表区域内有空行怎么办?先删除空行?如果列表经常更新,经常会产生新的空行,难道每次都重新设置吗?
有些老读者说有套路公式?那如果空行都是间隔跳空的呢?套路公式未必能见效。
来看看我们今天的解法。
案例:
将下图 1 中 C 列的区域制作成下拉菜单,放在 A 列。要求去除区域中的空值和重复项,且不更改顺序。
效果如下图 2 所示。
解决方案:
要去除下拉菜单中的空值,有个套路公式 offset,但是,它只能解决连续的序列末尾多出来的连续空行,中间穿插空行则不行。
我们可以先验证一下 offset 公式。
1. 在 D1 单元格中输入以下公式 --> 下拉复制公式:
=OFFSET($C$1,,,COUNTA($C$1:$C$11))
公式释义:
简言之,就是以 C1 单元格为起点,向下偏移行数为 C 列中的非空单元格数;
本例中非空单元格数为 5 个,所以从“郑喜定”起,一共提取 5 行,这样就会包含其中的空单元格
2. 在 E1 单元格中输入以下公式 --> 向下拖动公式:
=OFFSET($C$1,,,SUMPRODUCT(N(LEN($C$1:$C$11)>0)),)
具体就不详解了。
总之遇到跳空也是不行。
还有一个办法就是用万精油公式,但是很不推荐,因为下拉菜单设置的时候不能直接引用数组公式,且万精油很难理解,对于大部分同学来说不友好。何况随着 Excel 版本的升级,有越来越多的新函数可以替代万金油功能了。
下面是今天要讲的方法。
1. 选中 C 列的不连续列表区域 --> 选择菜单栏的“数据”-->“从表格”
2. 在弹出的对话框中保留默认设置 --> 点击“确定”
3. 在 PQ 中选择菜单栏的“主页”-->“删除行”-->“删除重复项”
4. 在 PQ 中选择菜单栏的“主页”-->“删除行”-->“删除空行”
5. 选择菜单栏的“主页”-->“关闭并上载”-->“关闭并上载至”
6. 在弹出的对话框中选择“表”--> 选择“现有工作表”及所需上传至的位置 --> 点击“加载”
绿色的表格是整理好的菜单序列。
7. 按 Ctrl+F3,可以看到两个表格,其中绿色的表格对应的名称是“表1_2”,记住它。
8. 选中 A2 单元格 --> 选择菜单栏的“数据”-->“数据验证”-->“数据验证”
9. 在弹出的对话框中选择“设置”选项卡 --> 按以下方式设置 --> 点击“确定”:
允许:选择“序列”
来源:输入 =indirect("表1_2")
好了,下拉菜单设置好了。
这样设置的好处在于:如果 C 列的名单有更新,只要在 E 列的表格处刷新一下,A 列的下拉菜单会自动随之更新。
10. 在 C13 单元格中输入“aaa”。
11. 选中绿色表格的任意单元格 --> 右键单击 --> 在弹出的菜单中选择“刷新”
A 列的下拉菜单中自动新增了“aaa”。