今天做POI导入功能模板出现一个问题,在Excel中做一个省市区三级联动,这里把过程和大家分享下,希望批评指正

 

首先应该具备两个相关的数据,一个是省市区的sheet页表单资料。(这里提供附件下载:http://pan.baidu.com/s/1pKF5QWF)

另一个就是操作的Excel,做开发的一般都会保证向下兼容,所以这里只提供***.xls的写法,也就是Excel2007(2010基本一样);

1.制作省市县联动的数据源,方法和很简单:复制“省市”表单“市县”表单,到需要做联动的excel中。

 

1).添加名称定义(这里要用鼠标选择你要添加省联动的单元格)

excl中操作: “插入”---->"名称"----->"定义"  (快捷键ctrl+f3,2010版Excel会有出入,建议用快捷键生成)会弹出下面的对话框

最新省市区三级联动mysql一张表 excel省市区三级联动制作_输入框

 

 

 

在“在当前工作薄中的名称”输入框中输入  “省”,在“引用位置”输入框中输入"=省市!$A$1:$AE$1 ”。

这样我们就定义了一个“省”的名称了。如下

最新省市区三级联动mysql一张表 excel省市区三级联动制作_数据_02

2.接下来就是定义数据有效性了。

excl中操作:  先选中“省”这一列,在选择 “数据”---->“有效性” 会弹出下面的对话框

 

 

 

最新省市区三级联动mysql一张表 excel省市区三级联动制作_数据_03

 

在“允许” 下拉列表中,选择 “序列”,会出现 “来源” 的输入框

最新省市区三级联动mysql一张表 excel省市区三级联动制作_输入框_04

 

在 “来源” 中输入 “=省”, 这样我们就成功的设置好 “省” 这一列数据的下拉列表了。

大家记得把表头中不需要的下拉列表都去掉(或者直接从省下一列选中了创建数据有效性)。下面就是效果:

最新省市区三级联动mysql一张表 excel省市区三级联动制作_数据有效性_05

在模板中也可以自己试试哦!

 

下面定义市:

 

3.关联“市” 这一列的数据,同样,这里也有需要两个步骤,也是用到了excl的名称定义和数据有效性。定义名称和数据有效性的操作

和上面“省”制作基本是一样的,唯一的区别就是在给“市”的“引用位置”时,值不一样。具体方法:

1).添加名称定义,

excl中操作: “插入”---->"名称"----->"定义"  (Ctrl+F3)会弹出下面的对话框:

最新省市区三级联动mysql一张表 excel省市区三级联动制作_数据有效性_06

 

在“在当前工作薄中的名称”输入框中输入  “市”,在“引用位置”输入框中输入

“=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来修改。

这样效果就出来了:

最新省市区三级联动mysql一张表 excel省市区三级联动制作_数据有效性_07

接下来就是区县了:

 

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,))

 

数据有效性一样配置。这里跟大家说下要注意的一个地方,

最新省市区三级联动mysql一张表 excel省市区三级联动制作_数据_08

 

这个地方的名字一定要是你定义的名称管理器中的名字前面加一个等号,博主就因为一开始没懂所以不出效果;下面看看最后的效果吧!

 

最新省市区三级联动mysql一张表 excel省市区三级联动制作_输入框_09

上述步骤完成了省市县三级联动。

 

 

 

另外,如果想这一列都有三级联动的效果可以选择数据有效性的时候选择这一列,分享一个小技巧:Ctrl+shift+向下键可以选中当前单元格以下的所有列哦!`(*∩_∩*)′