1、动态扩展的下拉菜单
如下图所示,要根据A列的对照表,在D列生成下拉菜单,要求能随着A列数据的增减,下拉菜单中的内容也会自动调整。
选中要输入内容的D2:D10单元格区域,数据→数据验证→序列,输入以下公式。
=OFFSET($A$2,0,0,COUNTA($A:$A)-1)
OFFSET以A2作为基点,向下偏移0行,向右偏移0列,新引用的行数为COUNTA函数统计到的A列非空单元格个数,结果-1,是因为A1是表头,计数要去掉。
这样就是A列有多少个非空单元格,下拉菜单中就显示多少行。
2、动态二级下拉菜单
如下图所示,A、B列是客户城市和县区的对照表,在D列已经生成一级下拉菜单,要求在E列生成二级下拉菜单,要求能随着D列所选不同的一级菜单,E列下拉菜单中的内容也会自动调整。
选中要输入内容的E2:E6单元格区域,数据→数据验证→序列,输入以下公式。
=OFFSET($B$1,MATCH($D2,$A$2:$A$16,0),0,COUNTIF($A:$A,$D2))
公式表示以B1为基点,以MATCH函数得到的城市首次出现的位置作为向下偏移的行数。
向右偏移的列数为0。
新引用的行数为COUNTIF($A:$A,$D2)的计算结果。
COUNTIF($A:$A,$D2)的作用是,根据D列以及菜单中的城市名在A列统计有多少个与之相同的城市个数。有多少个城市名,OFFSET函数就引用多少行。
练习文件:
https://pan.baidu.com/s/1E1gSz1vfUdxchdAk9G8JHg
提取码: cdbp