vbacombobox添加下拉内容_⼀份最全的excel下拉列表攻略⼀级下拉列表
初级下拉列表
⽅法⼀:
⾸先,在Excel中选中需要添加下拉菜单的所有单元格,然后数据 - 数据⼯具 - 数据验证,在允许中设为序列,填⼊需要加⼊的下拉列表的值,确定即可搞定。
注意填⼊列表是值之间需要⽤英⽂的,隔开.本⽅法适合列表长度较少的情况下使⽤,例如只有是,否这种列表
⽅法⼆:
按照上述步骤点击来源右边的按钮可以选取现有区域作为下拉列表的值。
这种⽅法适合列表⾥数据较多,或者Excel中已有列表数据的情况下使⽤
数量有变化的下拉列表
当下拉列表的长度是不固定的,可能隔⼀段时间就会在下拉列表中添加⼀些值。如果按照上述两种⽅法需要频繁的改动下拉列表的范围,⾮常⿇烦。这个时候我们可以使⽤公式来实现可以随时添加和减少的下拉列表。只要在数据验证的来源对话框中写⼊下列公式:
=OFFSET('drop down list'!$A$2,,,COUNTA('drop down list'!$A:$A)-1)
这个公式表⽰我的下拉列表放在 drop down list 这⼀个 sheet 中的A列(A1单元格是标题,所以从A2开
始)。快速修改的话,只需要将sheet名称改掉与列序号改掉即可(同⼀个sheet将sheet名称直接删掉即可。OFFSET函数的其他参数放在⽂章的@TOC)。
公式的详解为:
1. COUNTA函数功能是返回参数列表中⾮空的单元格个数,COUNTA(‘drop down list’!$A:$A) 可以返回A列的⾮空的单元格有多少
2. OFFSET函数的功能为以指定的引⽤为参照系,通过给定偏移量得到新的引⽤。简单来说就是可以改变选取的单元格和选取的范围。
OFFSET(‘drop down list’!$A$2,COUNTA(‘drop down list’!$A:$A)-1)表⽰将数据范围改为A2单元格到A2单元格向下COUNTA(‘drop down list’!A:A:A)-1个单元格(因为是从A2开始的,所以要减1)
html下拉菜单的制作方法3. 这样每次修改列表时,counta都会计算列表中值的个数,来源中的列表区域也会⾃动变化
去除下拉列表的空⽩(不连续列表)
对于列表前后有空⽩,但是列表连续的情况可以⽤上述数量有变化的下拉列表公式解决
如果列表中间有空⽩,如下所⽰,选取区域后列表⾥会出现很多空⽩如何处理呢?
注意⽆法通过将忽略空值勾选上实现。“忽略空值”仅指当有效性单元格为空值时不出现出错信息,也就是允许单元格为空
这种情况只能够通过做辅助列先去除空格后再选取范围。假设不连续的列表在B列:
1. 增加辅助列 C,在 C1 中输⼊公式:=INDEX(B:B,SMALL(IF($B:$B<>"",ROW($B:$B),4^8),ROW(1:1)))&""
2. 按 Ctrl +Shift + Enter 让数组⽣效
3. 向下拖动公式,就得到⼀列去除了所有空值的列表
4. 现在我们⽤上述去除空⽩的公式配合 C 列使⽤就可以了
函数详解:
1. IF + row 函数:读取 B 列不为空的⾏值,为空返回 4^8(4 的 8 次⽅),4 的 8次⽅ = 65536,是 2003 版Excel 的最⼤⾏数,所以
被当成惯例使⽤。⽬的是为了配合 Small 函数使⽤。row()函数返回当前⾏值
2. SMALL 函数:将 B 列⾏值与当前⾏值⽐较,取其⼩(空值被定义成了最⼤⾏值 65536)
3. Index 函数:读取 B 列中的⾮空⾏
4. &"":连接空值,将结果转换为⽂本值
5. 按Ctrl +Shift + Enter:数组公式,必须这样按才能⽣效,公式前后会⾃动出现 {}
⼆级下拉列表
通过建⽴公式名称的下拉裁断
选中所有包含信息源的单元格(记住,不要选择空⽩单元格哦!不然,也会被添加进⼊菜单中的。如果各列的长度不⼀致,可以先选取整个区域,在定位条件中 ,勾选常量后即可选取所有⾮空单元格)。选好后选择公式 - 定义的名称 - 根据所选内容创建,只勾选⾸⾏,然后确定。接下来就的步骤与1级下拉菜单⼀样,需要进⼊数据验证并在来源中需要输⼊**=INDIRECT(A2)**,最后下拉将刚才设置好的格式填充到下⾯单元格即可。
利⽤公式建⽴下拉菜单
通过建⽴公式名称来建⽴⼆级下拉菜单会产⽣⾮常多的⾃定义名称,⽽且步骤较为复杂。⽽通过公式建⽴⼆级下拉菜单会更加灵活和简便。如下图所⽰,在B列中填⼊公式:
=OFFSET($K$1,1,MATCH(A2,$K$1:M$1,0)-1,COUNTA(OFFSET($K$1,1,MATCH(A2,$K$1:$M$1,0)-1,99)))
得到⼆级下拉列表
公式详解:
1. OFFSET(reference,rows,cols,height,width),其中reference为起始单元格,rows,cols,height,width分别对应⾏,列,⾼度和宽
度变化。
2. 对应到公式中,第⼀个$K$1为reference,表⽰的是序列区域(下拉列表的值区域)的起始单元格
3. 之后的1表⽰将K1在⾏⽅向上加1,即K2(因为第⼀⾏是部门,所以⼆级下拉菜单的值从第⼆⾏开始)
4. 之后使⽤MATCH(A2,$K$1:$M$1,0)-1这个函数去匹配部门所在的位置,根据位置进⾏偏移。例如如果是⾏政部,那么
MATCH(A2,$K$1:$M$1,0)-1的的值为0,就保持在K列。如果为财务部,当前的选定单元格向右移⼀格,变为L2单元格
5. 之后的COUNTA(OFFSET($K$1,1,MATCH(A2,$K$1:$M$1,0)-1,99))和⼀级下拉菜单⼀样,根据当前列值的数量选取序列的范
围。其中99是设置counta的范围,如果列表个数有变化可酌情添加和减少
三级下拉菜单
三级下拉菜单的制作和⼆级下拉菜单⼀致,只是要有⼀个三级下拉菜单与对应的⼆级菜单的关系,并在公式中引⽤⼆级下拉菜单的内容即可VBA制作下拉菜单
通过VBA制作下拉菜单,请参考⽂章:Excel实现动态查询下拉列表输⼊
总结
公式⽅法适⽤于经常有数量变化的列表,按照这种⽅法建⽴的下拉菜单后续修改会⽐较简便
⽽普通的⽅法操作简单,适⽤于简单的下拉菜单的制作
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论