分享

在Excelk中同一单元格或相邻单元格内生成三级菜单

 妙 手 2010-12-13
基数数据根据 国家统计局 最新县及县以上行政区划代码(截止2008年12月31日)进行整理
http://www.stats.gov.cn/tjbz/xzqhdm/t20090626_402568086.htm
“基数数据”工作表中的数据共分为三组,其结构和要求如下:
1、每组数据的第一列只用于排序,各组数据中不能有空行,一级数据和二级数据中不能有重复。
2、二级数据所属一级数据 和 三级数据所属二级数据 中相同的数据应确保连续。
所定义的名称如下:
Me =INDIRECT("RC",0)
Data1 =OFFSET(基数数据!$B$1,1,0,COUNTA(基数数据!$B:$B)-1)
Data2 =OFFSET(基数数据!$F$1,1,0,COUNTA(基数数据!$F:$F)-1)
Data3 =OFFSET(基数数据!$K$1,1,0,COUNTA(基数数据!$K:$K)-1)
Data12 =OFFSET(基数数据!$E$1,1,0,COUNTA(基数数据!$E:$E)-1)
Data23 =OFFSET(基数数据!$J$1,1,0,COUNTA(基数数据!$J:$J)-1)
List1 =Data1
List2 =OFFSET(基数数据!$F$1,MATCH(Me,Data12,0),0,COUNTIF(Data12,Me))
List3 =OFFSET(基数数据!$K$1,MATCH(Me,Data23,0),0,COUNTIF(Data23,Me))
List =IF(NOT(ISNA(MATCH(Me,Data1,0))),List2,IF(NOT(ISNA(MATCH(Me,Data2,0))),List3,List1))
各名称的含义说明:
Me:当前的单元格,使用的是“R1C1”引用样式
Data1、Data2、Data3:一、二、三级数据的全部数据
Data12、Data23:二级数据所属的一级数据、三级数据所属的二级数据
List1、List2、List3:根据当前单元格的实际内容所对应的一、二、三级菜单
List:根据当前单元格的内容实际出现的菜单
如果希望是在相邻的三个单元格里显示分级菜单,应再定义如下:
LeftCell =INDIRECT("RC[-1]",0)
List1A =Data1
List2A =OFFSET(基数数据!$F$1,MATCH(LeftCell,Data12,0),0,COUNTIF(Data12,LeftCell))
List3A =OFFSET(基数数据!$K$1,MATCH(LeftCell,Data23,0),0,COUNTIF(Data23,LeftCell))
说明:
1、在定义第二列、第三列数据有效性时会提示有错误,这是因为其左边的单元格为空,不用理会,直接确定即可
2、由于数据是针对同一单元格设计的,如在三个单元格里显示分级菜单,则显的很冗余,请根据实际使用情况进行修改

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多