分类:
2007-11-28 18:14:55
在Excel表中多级联动还是需要点技巧的,主要还是接触Excel表太少,毕竟不是微软办公高手,呵呵,在网上发现有人写的3级以上联动需要宏,可是,宏在很多时候会被误杀掉,而自己刚好又要用到3级联动,所以就自己研究了下.发现并不如想象中那么麻烦,没有使用宏,只是使用了几个简单的函数达到目的,想到可能有不少人会有这方面的需求,就写在自己的Blog上了,欢迎大家共同探讨.
例子见附件:
首先,需要创建2个工作表,一个用来显示最终的结果,一个用来存放原始数据,当然,在我的例子中我用了3个,纯属无聊而已.先看第1个表格
A | B | C | D | E | |
1 | 配件名称 | 品牌 | 型号参数 | 价格 | |
2 | 显示器 | AOC | 177Si | 1250.00 |
这个只是简单的表,在附件中的Excel有更详细的.我列出这个表,主要是想讲一下我的思路.品牌,型号参数是个可以选择的项目,价格则根据不同的型号变动.就是说,根据配件名称选择品牌,根据品牌选择型号参数,由型号参数来确定价格.那么,在确定基本的思路后,就要开始考虑如何定义数据结构了.请看下面的表格.
A | B | C | D | E | |
1 | great wall | 美格 | BenQ | AOC | |
2 | M92 | B71 | T705 | 177Si | |
3 | M157 | FP71+ | |||
4 | M172 | FP92W |
F | G |
B71 | 1266.00 |
M92 | 1450.00 |
M157 | 1199.00 |
M172 | 1369.00 |
T705 | 1280.00 |
FP71+ | 1270.00 |
FP92w | 1499.00 |
177Si | 1250.00 |
这2个表分别是品牌与型号参数,型号参数与价格.由于没有使用宏,如果把这2个表合在一起,分开会比较麻烦,至少我还没有想到什么解决办法.数据结构确定了,就开始做多级联动.首先做第一个下拉列表,就是显示器类别.选中表2中A1到D1,在名称框里输入"显示器"后回车,然后在表1里选中B2,然后点数据->有效性->设置->允许里选"序列",在"来源"里输入"=显示器",这样,第一个下拉列表就制作完成了,点一下下拉箭头,可以看见Great Wall,美格等的选择项,现在制作第2个下拉列表,就是型号参数.选中表2中A1到D4区域,然后点插入->名称->指定,选中"首行",把其余的选择去掉,只保留一个,然后点确定,然后在表1中选中C2,点数据->有效性->设置->允许里选"序列",在"来源"里输入"=indirect(b $2)".Ok,现在可以保存一下,看一下成果了,是不是表1里B2,C2都有下拉箭头了?很好,这样就实现了2级联动了,下面就开始实现3级联动.稍微复杂了一点,因为毕竟使用了函数嵌套.选中表1里的D2,然后在函数输入栏里输入"=OFFSET(表2!F $1,MATCH(C2,表2!F $1:F $80,0)-1,1)".看起来稍微有点点复杂,其实很简单.首先先使用Match函数寻找表3里符合表1中C2值的位置并返回当前值.然后用offset做一下偏移就好了.为什么?因为表3里型号参数旁边不就是价格嘛?是不是很简单?可能刚开始理解起来有些麻烦,不过,当你真正理解起来,你就发现原来做一个多级联动这么简单啊!!呵呵,还是看下我做的例子吧,1个4级联动,专门用来配电脑的,当然里头还有点小问题,就是AMD和Intel的CPU不兼容啊,如果把Intel的包含进来该咋写呢?当然,这和多级联动没啥关系,只是另外一个需要动脑筋解决的问题罢了