今天做POI导入功能模板出现一个问题,在Excel中做一个省市区三级联动,这里把过程和大家分享下,希望批评指正
首先应该具备两个相关的数据,一个是省市区的sheet页表单资料。(这里提供附件下载:http://pan.baidu.com/s/1pKF5QWF)
另一个就是操作的Excel,做开发的一般都会保证向下兼容,所以这里只提供***.xls的写法,也就是Excel2007(2010基本一样);
1.制作省市县联动的数据源,方法和很简单:复制“省市”表单“市县”表单,到需要做联动的excel中。
1).添加名称定义(这里要用鼠标选择你要添加省联动的单元格)
excl中操作: “插入”---->"名称"----->"定义" (快捷键ctrl+f3,2010版Excel会有出入,建议用快捷键生成)会弹出下面的对话框
在“在当前工作薄中的名称”输入框中输入 “省”,在“引用位置”输入框中输入"=省市!$A$1:$AE$1 ”。
这样我们就定义了一个“省”的名称了。如下
2.接下来就是定义数据有效性了。
excl中操作: 先选中“省”这一列,在选择 “数据”---->“有效性” 会弹出下面的对话框
在“允许” 下拉列表中,选择 “序列”,会出现 “来源” 的输入框
在 “来源” 中输入 “=省”, 这样我们就成功的设置好 “省” 这一列数据的下拉列表了。
大家记得把表头中不需要的下拉列表都去掉(或者直接从省下一列选中了创建数据有效性)。下面就是效果:
在模板中也可以自己试试哦!
下面定义市:
3.关联“市” 这一列的数据,同样,这里也有需要两个步骤,也是用到了excl的名称定义和数据有效性。定义名称和数据有效性的操作
和上面“省”制作基本是一样的,唯一的区别就是在给“市”的“引用位置”时,值不一样。具体方法:
1).添加名称定义,
excl中操作: “插入”---->"名称"----->"定义" (Ctrl+F3)会弹出下面的对话框:
在“在当前工作薄中的名称”输入框中输入 “市”,在“引用位置”输入框中输入
“=OFFSET(省市!$A$3,,MATCH(Sheet1!C3,省市!$1:$1,)-1,HLOOKUP(Sheet1!C3,省市!$1:$2,2,)) ”
如果大家会发现联动效果并没有出来,这是为什么呢?
经过查找,问题是因为下面这个公式引起的。
“=OFFSET(省市!$A$3,,MATCH(Sheet1!C3,省市!$1:$1,)-1,HLOOKUP(Sheet1!C3,省市!$1:$2,2,)) ”
这个公式中的代码是动态的:"C3"是当前单元格的左边单元格的坐标值。需要我们根据自己的excel来修改。
这样效果就出来了:
接下来就是区县了:
4.关联“县” 这一列的数据。 同样,这里也有需要两个步骤,也是用到了excl的名称定义和数据有效性。定义名称和数据有效性的操作
和上面“市”制作基本是一样的,唯一的区别就是在给“县”的“引用位置”时,值不一样。
重复步骤3. 对 “县” 的“引用位置”的输入值为
“=OFFSET(市县!$C$1,MATCH(Sheet1!G7,市县!A:A,)-1,,,VLOOKUP(Sheet1!G7,市县!A:B,2,)) ”
同样,g7是需要修改的。
注意公式中红色背景的 A:A和A:B,两个位置一定要保证不变。
=OFFSET(市县!$C$1,MATCH(Sheet1!D3,市县!A:A,)-1,,,VLOOKUP(Sheet1!D3,市县!A:B,2,))
数据有效性一样配置。这里跟大家说下要注意的一个地方,
这个地方的名字一定要是你定义的名称管理器中的名字前面加一个等号,博主就因为一开始没懂所以不出效果;下面看看最后的效果吧!
上述步骤完成了省市县三级联动。
另外,如果想这一列都有三级联动的效果可以选择数据有效性的时候选择这一列,分享一个小技巧:Ctrl+shift+向下键可以选中当前单元格以下的所有列哦!`(*∩_∩*)′
博主已经做好了一个demo,有需要的可以看看;地址:https://download.csdn.net/download/cb905259982/10649115