下面我们以一个实例来讲解,数据是集团公司下属两个分公司的不同部门人员花名册,要求制作下拉列表完成公司、部门和职工的原则。下图是我们的花名册数据,数据放在名为“数据源1”的工作表中。
数据源
|1)我们首先需要对数据进行以下改造,改造后数据如下。分出数据的等级,显然,从数据分析出,第一级为A公司、B公司,第二级为各个公司下属的管理部门,第三级是隶属于各部门的员工姓名。如下图,在“数据源1”工作表中进行数据改造。
数据改造
|2)构建一级下拉列表,选择公司
这一步最简单,选中需要设置下拉列表的区域(这里以C23单元格为例),点击 数据—有效性—选择序列—来源内输入“=数据源1!$F$2:$F$3”
(3)构建二级下拉列表,选择部门
选中需要设置下拉列表的区域(D23单元格),点击 数据—有效性—选择序列—来源内输入公式
=OFFSET(数据源1!$H$1,MATCH(C23,数据源1!$H$2:$H$7,0),1,COUNTIF(数据源1!$H:$H,C23),1)
说明:
C22为公司所在单元格;countif是为了计算出公司内部门的数量;由于A公司和B公司是连续的,通过offset计算出一段连续的偏移数据,得到部门所在的区域。
(4)构建三级下拉列表,选择员工
在 有效性—序列—来源中输入公式
=OFFSET(数据源1!K1,MATCH(C23&D23,数据源1!K2:K50,0),1,countif(数据源1!K2:K50,C23&D23),1)
通过公司和部门组合作为查找条件,来得到部门员工所在的数据区域。
数据有效性构建多级列表
综述:通过以上步骤,我们可以得到一个多级联动的下拉列表,关键是对数据区域进行改造,要保证同公司的部门连续,同部门的员工连续。
注意:设置下一级下拉列表时,上一级下拉列表必须有选择数据,不然的话可能会出错误,下一级的下拉列表依靠上一级具体选择的数据。
B. 利用工作表控件构建多级菜下拉单
下面我们用两个组合框制作二级下拉列表,数据源放在名为“数据源2”的工作表中
|1)进行数据改造
|2)制作组合框
在名为“2.b”工作表中绘制2个组合框
组合框
|3)定义2个名称
点击 公式-名称管理器-新建
分别新建2个名称
部门:=数据源2!$D$2:$D$4
员工:
=OFFSET(数据源2!$E$1,1,'2.b'!$C$4,COUNTA(OFFSET(数据源2!$E$1,1,'2.b'!$C$4,100,1)),1)
定义名称
|4)设置组合框格式
第一个组合框为部门选择组合框,数据源区域:部门(刚才定义的部门列表),单元格链接区域:$C$4(显示选择条目的索引号)
设置组合框格式
第二个组合框为员工选择组合框,数据源区域:员工|根据第一个组合框选择不同的部门,显示不同员工列表)
C. 制作下拉联想式列表
本例的数据源放在名为“数据源3”的工作表中,如图为各省地级市列表。
数据
选中想要设置联想式列表的单元格,点击 数据—有效性—选择 序列,在来源 框中输入如下公式:
=OFFSET(数据源3!$A$1,MATCH($C5&"*",数据源3!$A:$A,0),0,COUNTIF(数据源3!$A:$A,C5&"*"),1)
然后,点击 出错警告,将“输入无效数据时显示出错警告”前面√点掉。
这种联想式下拉列表要求相近的数据必须连续排列,比如说河北省的各地级市要连续排列,不能中间隔着山东省的地级市,那样的话数据下拉列表就会显示不全。还有一种联想式下拉列表之前的文章有过介绍。