问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

excel利用函数的多层下拉菜单的设置?

发布网友 发布时间:2022-04-27 01:28

我来回答

2个回答

懂视网 时间:2022-05-10 12:08

作业二:多级菜单

(1)三级菜单

(2)可以次选择进入各子菜单

(3)所需新知识点:列表、字典

要求:输入back返回上一层,输入quit退出整个程序

本示例的三级菜单是一个yaml文件格式,格式如下:

香港:
 香港
澳门:
 澳门
台湾:
 台湾
钓鱼岛:
 钓鱼岛
北京市: - 市辖区 - 东城区 - 西城区 - 崇文区 - 宣武区 - 朝阳区
河北省: - 石家庄市:- 长安区- 桥东区- 桥西区- 新华区 - 唐山市:- 路南区- 路北区- 古冶区- 开平区 - 秦皇岛市:- 海港区- 山海关区
山西省: - 太原市:- 小店区- 迎泽区- 杏花岭区 - 大同市:- 城 区- 矿 区- 南郊区 - 阳泉市:- 城 区- 矿 区- 郊 区- 平定县- 盂 县 - 长治市:- 城 区- 郊 区- 长治县- 襄垣县- 屯留县

yaml格式的处理方法如下:

首先,上面的格式是一个多级模式,有一级,二级,三级的情况,使用yaml处理后的字典如下形式:

,) =

运行得到的字典如下格式:

{'香港': '香港',

   '北京市': ['市辖区', '东城区', '西城区', '崇文区', '宣武区', '朝阳区'],

   '台湾': '台湾',

   '澳门': '澳门',

   '河北省': [{'石家庄市': ['长安区', '桥东区', '桥西区', '新华区']}, {'唐山市': ['路南区', '路北区', '古冶区', '开平区']}, {'秦皇岛市': ['海港区', '山海关区']}],

   '钓鱼岛': '钓鱼岛',

    '山西省': [{'太原市': ['小店区', '迎泽区', '杏花岭区']}, {'大同市': ['城 区', '矿 区', '南郊区']}, {'阳泉市': ['城 区', '矿 区', '郊 区', '平定县', '盂 县']}, {'长治市': ['城 区', '郊 区', '长治县', '襄垣县', '屯留县']}]}

得到的是字典,一级如,"香港":"香港",值是字符串类型;二级如: '北京市': ['市辖区', '东城区', '西城区', '崇文区', '宣武区', '朝阳区'],值是列表形式,里面嵌套的是字符串;最复杂的是三级模式,如:'河北省': [{'石家庄市': ['长安区', '桥东区', '桥西区', '新华区']}, {'唐山市': ['路南区', '路北区', '古冶区', '开平区']}, {'秦皇岛市': ['海港区', '山海关区']}],里面第二层是列表,列表里面嵌套的还是字典。

思路:

(1)本项目的核心其实是得到省/市/县这样的模式,在处理的过程中,我们根据值对应的类型进行判断,使用那种方式处理比较好;

(2)首先我们遍历字典的第一层,得到省份,把省份放在一个字典中,这样,我们就可以根据用户输入的值的情况去进行输出对应的省;

  (3)得到省之后,我们可以得到省下面的键值,判断值对应的类型,根据不同值的类型进行不同方式的操作;

(4)如果值是字符串,说明是一级菜单形式,这种方式最好处理;

  (5)如果值是列表,且第一个值是字符串,说明是北京这种的二级模式,使用二级模式的方法进行展示;

  (6)如果值是列表,且第一个值是一个字典的形式,说明是三级模式的情形,就要使用三级模式来进行操作;

(7)定义全局变量,我们要知道我们需要得到的是什么,我们要得到省市县三级模式;只有知道了对应的省市县,我们只需要去字典中遍历即可得到值的信息。

流程图如下:

代码如下:

   s =    province_dict = num,province_name enumerate(dic_db.keys(),   province_dict[num] =  print( %(num,province_name) + ,end=   num % == print( print(  find_index = input( find_index = find_index ==  sys.exit( find_index  P_NAME = elif find_index  P_NAME =  print( P_NAME #省的函数运行完成之后,返回省的名称,以便后续使用,因为主要是得到省/市/  city_name = type(city_name) ==  elif type(city_name) ==  type(city_name[]) ==   elif type(city_name[]) ==    city_dict = city_num,city_name enumerate(city_list,  city_dict[city_num] =  print( %(city_num,city_name) + ,end=  city_num % ==  print(  print(  city_index = input(  city_index =  city_index ==  city_index ==   elif city_index  C_NAME =  elif city_index  C_NAME =     print(   city_dict = c_num,c_name enumerate(country_list,  key  city_dict[c_num] = k,v  print( %(k,v) + ,end=  k % == print( print(  city_num = input(  city_num =  city_num ==  city_num ==   elif city_num  C_NAME =  key,value   value ==   C_INDEX =    elif city_num  C_NAME =  C_INDEX =   print(     countries = country_list[C_INDEX -  c_index,country enumerate(countries,   print( %(c_index,country) + ,end=   k % ==  print(  print(  country_index = input(  country_index =  country_index ==  country_index ==    elif country_index  elif country_index range(,len(countries)+   show(province,C_NAME,countries[country_index-    print( def framework(province=,city=,country=  os.system( message = +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   [;1m欢迎来到全国省市查询系统 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ***************************************************************************   省 份:%   市(区):%   县(区):% ***************************************************************************  print(message % def show(province_name=,city_name=,country_name= output = ----------------------------------------------------------------------------  美丽的%s %s % ---------------------------------------------------------------------------- [0m print(output % __name__ == with open(,)  dic_db =   ProvinceName =  judge(ProvinceName,dic_db)

代码运行如下:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

   欢迎来到全国省市查询系统

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

***************************************************************************

  省 份:

  市(区):

  县(区):

***************************************************************************
 
1. 澳门 2. 山西省 3. 北京市 4. 台湾 
5. 钓鱼岛 6. 香港 7. 河北省 
==============================================================
q:Exit
请输入你要查询的省的编号/名字:1

----------------------------------------------------------------------------

  美丽的澳门 

  欢迎您!

  这里山美,水美,姑娘更美

----------------------------------------------------------------------------
 
1. 澳门 2. 山西省 3. 北京市 4. 台湾 
5. 钓鱼岛 6. 香港 7. 河北省 
==============================================================
q:Exit
请输入你要查询的省的编号/名字:2

----------------------------------------------------------------------------

  美丽的山西省 

  欢迎您!

  这里山美,水美,姑娘更美

----------------------------------------------------------------------------
 
1.太原市 2.大同市 3.阳泉市 4.长治市 

===============================================================================
q:Exit b:退回上一层
请输入您要查询的市的编号/名字:2

----------------------------------------------------------------------------

  美丽的山西省 大同市 

  欢迎您!

  这里山美,水美,姑娘更美

----------------------------------------------------------------------------
 
1.城 区 
2.矿 区 
3.南郊区 

===============================================================================
q:Exit b:退回上一层
请输入你要查询的县(区)编号/名字:2

----------------------------------------------------------------------------

  美丽的山西省 大同市 矿 区

  欢迎您!

  这里山美,水美,姑娘更美

----------------------------------------------------------------------------
 
1.城 区 
2.矿 区 
3.南郊区 

===============================================================================
q:Exit b:退回上一层
请输入你要查询的县(区)编号/名字:b
请输入您要查询的市的编号/名字:b
1. 澳门 2. 山西省 3. 北京市 4. 台湾 
5. 钓鱼岛 6. 香港 7. 河北省 
==============================================================
q:Exit
请输入你要查询的省的编号/名字:北京市

----------------------------------------------------------------------------

  美丽的北京市 

  欢迎您!

  这里山美,水美,姑娘更美

----------------------------------------------------------------------------
 
1.市辖区 
==================================================================
q:Exit b:退回上一层
请输入您要查询的市的编号/名字:1

----------------------------------------------------------------------------

  美丽的北京市 市辖区 

  欢迎您!

  这里山美,水美,姑娘更美

----------------------------------------------------------------------------
 
1. 澳门 2. 山西省 3. 北京市 4. 台湾 
5. 钓鱼岛 6. 香港 7. 河北省 
==============================================================
q:Exit
请输入你要查询的省的编号/名字:7

----------------------------------------------------------------------------

  美丽的河北省 

  欢迎您!

  这里山美,水美,姑娘更美

----------------------------------------------------------------------------
 
1.石家庄市 2.唐山市 3.秦皇岛市 
===============================================================================
q:Exit b:退回上一层
请输入您要查询的市的编号/名字:石家庄市

----------------------------------------------------------------------------

  美丽的河北省 石家庄市 

  欢迎您!

  这里山美,水美,姑娘更美

----------------------------------------------------------------------------
 
1.长安区 2.桥东区 3.桥西区 4.新华区 
===============================================================================
q:Exit b:退回上一层
请输入你要查询的县(区)编号/名字:长安区

----------------------------------------------------------------------------

  美丽的河北省 石家庄市 长安区

  欢迎您!

  这里山美,水美,姑娘更美

----------------------------------------------------------------------------
 
1.长安区 2.桥东区 3.桥西区 4.新华区 
===============================================================================
q:Exit b:退回上一层
请输入你要查询的县(区)编号/名字:q

上面代码,我学到了如下知识:

  (1)yaml格式文件的处理,导入yaml模块,使用yaml.load()进行文件字符串转换为字典形式;

(2)全局变量的定义,在很多时候,在程序运行的过程中,我们总是需要的到几个重要的变量,使用全局变量,能够让我们更好的理清思路,全局变量使用global来进行定义;

(3)函数def的结束是遇到return,遇到return无论什么时候,就结束这个函数,因为当我们与while结合使用的时候,可以直接使用return来结束这个循环;

(4)字典、列表的处理方式;

  (5)enumerate()函数的使用;

  (6)sys.exit()来退出整个程序,sys模块;

(7)不怕麻烦,牢牢知道自己需要的是什么自己的目的是什么。

热心网友 时间:2022-05-10 09:16

“非数据验证+=INDIRECT(N2)”是个什么概念,没能理解,抱歉。

但实现动态二级菜单的方法有很多,下面介绍一种笨而直观的:

如图,N列车牌,数据行数动态

F2用数据验证(可能不是“非数据验证”)得到动态下拉菜单:

=OFFSET(N$1,1,,COUNTA(N:N)-1)

如果跨表,把上面的公式定义为一个名称,如“车牌”

司机用数据验证设置二级下拉菜单:

=OFFSET(N$1,MATCH(F$2,N$2:N$200,),1,,COUNTA(OFFSET(N$1,MATCH(F$2,N$2:N$200,),1,,20)))

上面的验证考虑了199个车牌,每个车对应可能20个司机。请根据实际可能数据修改。

跨表时,同样先定义名称,如“司机”

追问我的意思不用数据验证,纯粹公式设置多层下拉菜单。你这二个数据验证加公式非常有用,我之前没有理解offset的涵意。谢谢

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
人类如何才能悬浮在空中? - 知乎 人体悬浮术是真的存在吗 人体怎样才能真正的在空中悬浮 小孩c蛋白反应高是什么原因 (2014?南海区二模)如图所示,物重G为2000N,小红用800N的拉力花2s的时间... 苹果13系列升级iOS15.5好吗? 出生2o12年11月20日2点姓石光字辈取名 求龙凤胎名字:2012年6月21日(农历5月初3)凌晨0点40分出生,大的为龙,小... by和take有什么区别 takeby后面跟交通工具的区别 幻梦之晓哪个英雄厉害? 幻梦之晓单通容易吗?如果单通选什么英雄?求单通攻略 《幻梦之晓》的攻略和隐藏英雄是什么? 幻梦之晓2.1 有哪些英雄适合打后期 幻梦之晓1.41隐藏英雄如何选? 幻梦之晓贤者之石有什么用 幻梦之晓2.2隐藏英雄哪个厉害 魔兽争霸Ⅲ幻梦之晓哪个人物技能厉害 魔兽争霸3幻梦之晓哪个英雄最厉害呀 魔兽、幻梦之晓英雄哪个好? 幻梦之晓2.2哪个英雄最强 ? 我把微信重叠到实用工具里了,怎样分出来? 怎样将微信分身 华为怎么分两个 立秋后鲤鱼喜欢在什么地方 鲤鱼好不好钓,全靠这篇技巧 微信聊天记录册了能找回吗? 钓鲤鱼什么饵,怎么钓 要怎么样才可以找回已册删除的微信记录 怎么找回被册的微信聊天记录 幻梦之晓的隐藏英雄怎么选? 幻梦之晓2.1单通 幻梦之晓2.0全攻略 幻梦之晓xq1.5 隐藏英雄怎么选? 喝水是我们每天都在做的事情,多喝水有哪些好处呢? 每天喝水多有什么好处 多喝水有什么好处??? 天天喝水对身体有哪些好处 天天喝开水有什么好处吗? 每天多喝水有什么好处? 人们平常总说多喝水,多喝水有什么好处? 多喝水有什么好处呢? mysql怎么导出表结构 powerdesider怎样根据mysql已有的表导出结构 plsql怎么导出数据库的表结构 石家庄铁道大学经管专业如何? 石家庄铁道大学经济管理学院的介绍 石家庄铁道大学的经济管理学院怎么样 华为新机带本地音乐吗? 石家庄铁道大学 经济管理学院 怎样