文章目录
  1. 1. 在一级菜单中使用空格和数字,双二级菜单联动

在一级菜单中使用空格和数字,双二级菜单联动

话说疙瘩是人类进步的动力这句话真是一点没错,像我这种对事情没什么要求的人就是推动不了技术的进步…
事情是这样的,以前写过一个文档给HR关于怎么创建二级菜单的:
二级联动菜单
总的来说大家用得还不错,但是呢,微软对于命名区域有一些规定:

  • 不能用很多特殊符号
  • 名字的开头必须是字母或者下划线,所以类似于1. IT就不行
  • 名字里面不能有空格,实际上如果是名字里面有空格还用”Create from Selection Defined Names” 的话,会自动把空格替换成下划线的

总之有这么多的限制。我自己是无所谓啦,其他一些同事也无所谓,反正功能达到就可以了嘛。但是呢,总是有对生活工作比较认真的人嘛,今天就有人在问我到底有什么办法可以在一级菜单中使用类似 1. IT 这样的条目吗?
同时还有一个问题是有两个不同的二级菜单需要联动,比如说第一级菜单是用户部门,第二级菜单要去选择对应部门的职位以及职责,就像这样:

第一级菜单的格式问题姑且不说,这个我觉得应该算是合理要求吧,值得思考一下。
想了一下,其实只要职责和职位这里对应部门去选择不同的indirect 名字就可以了。所以可以做啊。
然后又灵机一动,这样的话把部门里面的列表整型一下把不符合规定的名字转换成符合规定的名字也是可行的了。
所以就来做一下吧

先来创建一下列表,就按照要求来就可以了,然后框选第一个区域,选择一下非空的格子

然后根据选择区域来创建命名空间就行。

选择Top Row作为创建的依据

然后我们来看看呢,Excel自动把名字给打整了,在每个名字前面加上了下划线,还把空格改成了下划线

然后依葫芦画瓢,给第二个区域来创建一下命名区域,这下不对了,提示已经存在了,看来Excel还不够聪明啊,自动改名字只能做一次呢。

所以手动来创建一下吧,这次我们名字就把1. 去掉直接用部门的名字吧

手动把3个新的命名区域都创建好了就可以来下一步了

第一级菜单还是很简单的,就是有效性里面简单选择一下就好

关键是第二级。第一部分的命名区域里面把第一级菜单的选项部分名字里面的空格替换成了下划线然后前面加上了下划线来规避命名格式的问题,我们也一样来处理一下好了,公式里面替换一下空格同时前面加上下划线

1
=INDIRECT("_"&SUBSTITUTE($B2," ","_"))

这样一来第一个菜单项就OK啦,我们来试试看:

成功!

知道原理了,第二个的公式也简单了,在Source 里面用这个公式来去掉前面三个字符就OK了。

1
=INDIRECT(REPLACE($B2,1,3,""))

把从第一个字符数起前三个字符替换掉。试试看呢,也OK啦!

至此,任务完成,写个文档整理一下思路吧。

例子在这里