怎样根据单元格内容智能显示相应列表供选择(级联菜单)

最近推送的五篇文章:

·  正  ·  文  ·  来  ·  啦  ·

表格不会做,照搬即可;

公式不会写,套用就行。

需求

有一定实操经验的朋友都知道,数据管理中,同样的信息被叫出多个名称是大忌。在《偷懒的技术:打造财务Excel达人》中我们将其总结为一致性原则。在输入数据时,要履行一致性原则,一个很好的工具就是:“数据验证”(2007版以前叫“数据有效性”)-“序列”,我们利用这个功能将填空题转换成单选题,以避免土豆一会被写成洋芋,一会又被称谓马铃薯。

有时候我们会发现,连续两个选择题之间,是有联动关系的。比如我们在当当、天猫等电商平台购物输入地址时,你选定省级单位后,后面的县市级选项,就仅仅是和你选定的省相关的城市。也就是说,县市级的序列是随着省级确定的内容而联动的,这就是本文介绍的联动菜单。效果如下图:

上面的级联菜单是如何实现的呢?

方法一:定义名称+Indirect函数

源数据区域如下图A6:C6所示,现需在E2、F2单元格做一个下拉列表框,F2单元格的下拉列表可根据E2单元格的内容变化而变化。

Step01:批量定义名称

选定A1:C6单元格区域,点击“公式选项卡下的根据所选内容创建”,批量创建名称。

Step02:给E2单元格添加数据验证

使用数据验证(数据有效性)给E2单元格添加数据验证

数据验证-序列

Step03:给F2单元格添加序列

数据验证-序列,然后在来源中输入公式:

=INDIRECT(E2)

公式解释:

INDIRECT函数是将文本变为引用。

在第一步中我们已经分别定义了名称“重庆市、山东省、江办省”,他们分别对应A2:A6、B2:B6、C2:C6单元格区域,

在上一步我们使用数据验证在E2输入了“重庆市”这些文本字符,在本步骤使用INDIRECT函数,将E2单元格中的文本字符,变为引用,也就是说去引用上一步所定义的”重庆市“这个定义名称(即A2:A6单元格区域)。

按上面的步骤设置后,具体效果如下图:

方法二:使用OFFSET函数

本方法使用与第一种方法不同的数据结构。

第一步:建立架构表

架构表主要就是定义清楚上下级层级关系(注意,同一级别相同名称信息需排列在一起),如图1:

图1 建立联动架构表

第二步:将各级明细提取唯一值列表

这一步的目的是为了后续制作序列时,每一个项目仅出现一次,提取唯一值的公式及其原理,可参见《“偷懒”的技术2:财务表格轻松做》第125页【提取唯一值列表(顺序)】部分内容,本文不再赘述。

D2单元格的公式为:

=LOOKUP(1,0/FREQUENCY(1,1-COUNTIF($D$1:D1,$A$2:$A$13)),$A$2:$A$13)

提取唯一值效果如图2。

图2 各层级唯一值列表

什么?这就完成2/3了?当然不是,因为第三步,比“把冰箱门关上”复杂多了……

第三步:设置公式

我们先来看如何设置选择省的序列。

由于省级单位已经有了唯一值序列,所以此时我们直接指定相关列表区域即可,但是考虑到扩展性,我们将选择范围的逻辑界定为:

以D2单元格为起点,向下取X行,X为非空单元格个数。

用公式表达为:

=OFFSET(D2,0,0,COUNTA(D2:D13),1)

【注意:COUNTA只能排除真正意义上的空值单元格(即单元格没有输入任何内容),如果是通过公式生成的空格,该函数会“选择性失明”将其视为非空格。】

此时我们选择需要录入省级名称的单元格(假设为G2单元格),依次点击【数据】选项卡-【数据验证】-【数据验证】,将“允许”设置为“序列”,并在来源中输入上述公式即可(如图3)。

图3 省级序列公式

最后就是相对复杂一些的选择城市的序列。

同样的,城市序列也是要在E2:E13的序列里截取。但是,此时选择范围的需要与省份具有隶属关系。从图3中可以看出两个规律:

1、E列中每个省份第一次出现的城市,刚好与A列中该省份第一次出现的行次相同。

2、E列中每个省份的个数,刚好与A列中该省份的个数相同。

所以,城市的截取逻辑就可以概括为:以E1单元格为起点,从向下第X行开始截取,一共截取Y行。其中X是G2单元格所选省份在A2:A13单元格区域中第一次出现的位置,Y为G2单元格所选的省份在A2:A13单元格区域的个数。

用公式表达为:=OFFSET(E1,MATCH(G2,A2:A13,0),0,COUNTIF(A2:A13,G2),1)

公式已经确定,我们参照G2单元格设置方式对H2单元格进行设置,即可完成二级联动菜单的设置了。

本文知识点
  • 定义名称

  • 数据验证

  • INDIRECT函数

  • OFFSET函数

  • MATCH函数

Excel畅销书推荐:

《“偷懒”的技术2:财务Excel表格轻松做》

《偷懒2》不是《偷懒1》的改版,两者内容是完全不同的,《偷懒2》主要介绍灵活如何用函数公式、功能技巧专业地设计表格。并将日常工作常用的公式设计成模型公式,要用的时候,直接比照套用就是了。
宗旨是:
表格不会做,照搬即可;
公式不会写,套用就行。

《“偷懒”的技术:打造财务Excel达人》

2017年当当网畅销榜Excel类第一名,办公类第二名,好评率99.8%,学Excel必选书籍!

👇滑动下面的列表查看更多


如何正确使用本公众号,学习Excel技巧,提高工作效率

【目录】本公众号2017年推送文章的分类导航

【目录】本公众号2018年推送文章的分类导航


怎样才算精能Excel?看完再也不敢在简历上写精通Excel了!

怎样才能让Excel运行得更快、从此告别卡慢

强大到逆天的“快速填充”,不用公式提取字符、调换位置


你真的理解了相对引用?95%的人都错了,你呢?

按年、季、月、旬、周分段求和,这一篇文章总结完了

根据指定的条件,统计唯一值的个数,公式总结

行列交叉查询公式汇总及解释

如何按简称查找全称、如何反向模糊查找

财务工作经典Excel公式及解析

使用vlookup函数的常见错误及解决方法

深入讲解SUMIF&多表多列多条件求和

用sumif对超15位的代码条件求和居然出错了,原因是...


一张图表示实际VS半年及年度预算完成情况
要做出别具一格的图表都要用到这个强大的功能...

普通的折线图蜕化成蝶后,美到你认不出来

手把手教你制作华丽酷炫的走势图

不用辅助列也可制作旋风图、蝴蝶图

财务分析如何做到一图胜千言

财务分析经典图表及制作方法(第1季)

财务分析经典图表及制作方法(第2季)

豪华仪表盘模板下载

制作高大小的圆环图,这个方法更简单

超越图表大神的小技巧:在柱形图背后添加平均线

不等宽的堆积柱形图,这思路开脑洞...

如何用箭头标注指标的同比增减情况?

(0)

相关推荐