⽤OFFSET函数构建⼆级联动下拉菜单
⾃制作请尊重原创,如有⽅法上的异
请尊重原创,如有⽅法上的异申明:本公众号下⽂章,均为⼩熙本⼈原创,每个字都是⾃已码,每张图都是亲
申明:本公众号下⽂章,均为⼩熙本⼈原创,每个字都是⾃已码,每张图都是亲⾃制作
见,┆欢迎留⾔交流!
构建⼆级联动下拉菜单,可以⽤INDIRECT函数引⽤名称构建的区域来实现⼆级下拉菜单。可是如果数据量较多,或者数据源的数据的分布较⿇烦时,这种⽅法就会较⿇烦。
这时,我们可以的OFFSET函数来直接构建⼀个引⽤的区域实现⼆级下拉菜单。
怎么完成的呢?以下是数据源。
A列有很多所学校,每所学校的班级代码与班主任名字都列出来了,现在要做⼀个⼆级联动下拉菜单,实现快速查找。效果如下:
如果⽤以前的⽅法,也是可以完成⼆级下拉菜单制作。但是根据数据源数据情况,需要花很多时间来整理数据,并且还要定义名称。如何才能快速完成⼆级下拉菜单的制作呢?
1、制作⼀级下拉菜单
⾸先将学校分类下的所有数据复制后粘贴在右边空⽩单元格内,并全部选中,单击数据——删除重复值,得到如下结果:
选中F2单元格,单击数据——数据验证——数据验证,在允许下选择“序列”,在来源⾥选择L2:L5
确定后,回到⼯作表,就制作好了第⼀级的下拉菜单,此时我们随意选择⼀个数据。如“中为”
2、制作⼆级下拉菜单
在如图数据源排列情况下,⽤OFFSET函数来引⽤区域,是最好的⽅法。单击G2选中,单击数据——数据验证——数据验证。在允许下选择“序列”,在来源下框内输⼊公式:=OFFSET(B1,MATCH(F2,A:A,0)-1,0,COUNTIF(A:A,F2),1),确定返回即可。
确定后返回到⼯作表内,选择⼀级菜单下的学校,你就会发现,⼆级菜单下的代码会⾃动显⽰对应的学校的班级代码。当然其与数据源⾥顺序与个数完全⼀致。
=OFFSET(B1,MATCH(F2,A:A,0)-1,0,COUNTIF(A:A,F2),1)这个公式如何理解呢?
OFFSET是⼀个引⽤函数,实际上就是引⽤的⼀个区域。这个区域会随F2选择不同对象⽽发⽣变化。它是如何变化的呢?
在数据源⾥,公式=OFFSET(B1,MATCH(F2,A:A,0)-1,0,COUNTIF(A:A,F2),1)的意思是:以B1(第⼀参数)为起点,向下移动MATCH(F2,A:A,0)-1⾏(MATCH函数是找到F2在A列的位置,其结果是⼀个数字,因为第⼀⾏是标题,所以最后减去1才是要移动的⾏数,如F2是中为,则中为在A列的位置是12,则以要向下移动的⾏数是11⾏才能显⽰出中为)。因为是以B1为起点,所以,第三参数是0,也就是不移动列数。第四参数是COUNTIF(A:A,F2)
表⽰要显⽰的个数,显⽰其个数就是F2在A列的个数。最后⼀个参数是默认数值1。最后两个参数的意思就是引⽤的区域。公式合起来意思可以这样说:以B1为起点,向下移动MATCH(F2,A:A,0)-1,向右
移动0列,以此开始,总共COUNTIF(A:A,F2)⾏,总共是1列显⽰。
3、⽤VLOOKUP函数找到对应班主任
在H3单元格内输⼊公式可以直接显⽰出对应的班主任。因为代码与班主任是⼀⼀对应关系,所以直接⽤VLOOKUP函数可完成:=VLOOKUP(G2,B:C,2,0)。为防⽌G2空格时的错误显⽰,在此公式前嵌套⼀个IFERROR即可。结果如下。
最后结果如下视频: