今日帮助友人解决了一个Excel的难题,很开心,特记录下来.
出于表格本身的保密考虑,就不再上传具体内容的截图,特把解题思路和最终实现的公式记录下来.
先说一句定场诗:鲁迅先生说过, 真正的Office高手Excel玩儿的溜...
言归正传:
下午时候,一位甲方的壕友人向我咨询Excel问题,要求能够让用户自由的,从表格的下拉菜单中选择对应的内容.
我一听,这还不简单?!身为微软官方认证的Office大师,Excel高级专家,这还不是随手拈来,于是就拍拍胸脯,"包在我身上!".
等具体需求过来后,我差点儿两眼一黑...玄中玄,秒中秒,悬念之中有悬念,问题之中有圈套...
六大"产品品牌",每个产品品牌旗下包括四大"产品细类",每个"产品细类"包括从0个到61个不等的"具体产品"
要求用户从下单菜单中选择了某个"产品品牌"后,后续的"产品细类"列中需要"具体产品"与"产品品牌"自动对应上,注意,是自动对应上...
最初解题思路,用"公式"选项卡下的"名称"功能为主,通过名称功能来连接:
1. "产品细类"与"具体产品"的逻辑关系
2. "产品品牌"与"产品细类"的逻辑关系
3. 通过INDIRECT函数来对产品细类取值.
多次尝试,无果.因为 <数据验证>功能中不支持对于<名称>的跨表引用.
于是思路回到了笨方法上,用IF条件来实现对数据有效的验证.同时注意好绝对引用和相对引用,以方便复制表格.
于是,四大产品细类,编写了如下公式:
Product Line
=PL!$A$3:$A$8
细类1
=IF($U2=PL!$A$3,PL!$C$3:$C$10,IF($U2=PL!$A$4,PL!$G$3:$G55,IF($U2=PL!$A$5,PL!$K$3:$K$16,IF($U2=PL!$A$6,PL!$O$3:$O$65,IF($U2=PL!$A$7,PL!$S$3:$S$6,IF($U2=PL!$A$8,PL!$W$3:$W$10,$AF$1))))))
细类2
=IF($U2=PL!$A$3,PL!$E$3:$E$9,$AF$1)
细类3
=IF($U2=PL!$A$3,PL!$D$3:$D$4,IF($U2=PL!$A$4,PL!$H$3:$H$29,IF($U2=PL!$A$5,PL!$L$3:$L$7,IF($U2=PL!$A$6,PL!$P$3:$P$21,IF($U2=PL!$A$7,PL!$T$3:$T$5,IF($U2=PL!$A$8,PL!$X$3:$X$4,$AF$1))))))
细类4
=IF($U2=PL!$A$3,PL!$F$3:$F$35,IF($U2=PL!$A$4,PL!$I$3:$I$32,IF($U2=PL!$A$5,PL!$M$3:$M$7,IF($U2=PL!$A$8,PL!$Y$3:$Y$10,$AF$1))))
本题涉及到的Excel知识点包括:
绝对引用与相对引用/数据有效/数据有效来源/名称功能/INDIRECT函数/IF函数...
于是,愚公,移山,完成了.