ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: cdyh2

请教:多级菜单的有效性错在哪里?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-12-5 15:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
参考 3EybG32w.rar (15.59 KB, 下载次数: 114)

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-5 15:46 | 显示全部楼层
QUOTE:
以下是引用gdliyy在2006-12-5 15:10:17的发言:

但你目前并未使用VBA来实现动态名称,所以以目前的格式,应该是无法实现4级联动菜单的。

或者我先给你一个带VBA的级联解法,再想想能否不用VBA来实现。

我的“省区”通过“区域”可以生成不重复序列,为何“等级”不能通过“省区”生成不重复序列

按F9检查“等级”,发现名称是动态的,符合设计要求,但后来就无法运行

我的理解“等级”对应的“省区”是可以不与“区域”挂钩的

TA的精华主题

TA的得分主题

发表于 2006-12-5 16:26 | 显示全部楼层
QUOTE:
以下是引用cdyh2在2006-12-5 15:46:40的发言:

我的“省区”通过“区域”可以生成不重复序列,为何“等级”不能通过“省区”生成不重复序列

按F9检查“等级”,发现名称是动态的,符合设计要求,但后来就无法运行

我的理解“等级”对应的“省区”是可以不与“区域”挂钩的

但你的范围不是根据你“查询”表中的当前位置而返回动态列表的,所以这种方法就不可行。

而且,你的名称中的相对引用,应该是固定到最后一个备选项吧?如果用户在前面的数据中选择错误,那就没办法修改了,这样做可能就不太合理。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-5 16:26 | 显示全部楼层

非常谢谢gdliyy

能看看我的公式不能成功的原因吗()

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-5 16:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
5m2U345J.rar (47.52 KB, 下载次数: 77)
这个是我几年前用笨办法做的,最近到EH学了不少,想简化,期望公式可以实现

TA的精华主题

TA的得分主题

发表于 2006-12-5 16:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
QUOTE:
以下是引用cdyh2在2006-12-5 16:26:29的发言:

能看看我的公式不能成功的原因吗()

前面已经提到,可惜你没仔细看我的思路解析,以下是对你的思路的补充:

1、如果你能够保证每次录入都正确无误(很重要的前提),那么可以使用函数来解决。按你的思路,每次都取最后一行数据来生成列表。“单元格”公式可以进行简化:
原公式:
=INDIRECT("查询!$"&MID(基础!$I$1,COLUMN(查询!A1),1)&"$"&LOOKUP(2,1/(查询!A$2:A$2000<>""),ROW(查询!A$2:A$2000)))
既然都使用了LOOKUP函数,就直接取值就可以了,没必要再用INDIRECT函数,优化后:
=OFFSET(查询!A$1,MATCH(CHAR(65535),查询!A:A)-1,)

2、另外,对于等级公式,由于存在多个省区具有相同的等级,所以不能直接使用MATCH函数,需要将MATCH段的查找范围使用IF函数进行过滤,在我的解法中已经提出了这一点。
原公式:
=INDEX(区域,SMALL(IF(OFFSET(区域,,-1)=单元格,IF(MATCH(区域,区域,0)=ROW(区域)-1,ROW(区域)-1)),ROW()-1))
修改后公式:
=INDEX(区域,SMALL(IF(OFFSET(区域,,-1)=单元格,IF(MATCH(区域,IF(OFFSET(区域,,-1)=单元格,区域),0)=ROW(区域)-1,ROW(区域)-1)),ROW()-1))

3、通过“省区”和“等级”就可以确定唯一记录了,所以“单位”的公式修改为:(利用“单元格”和“区域”名称)
=INDEX(区域,SMALL(IF(OFFSET(区域,,-2)&"|"&OFFSET(区域,,-1)=OFFSET(单元格,,-1)&"|"&单元格,ROW(区域)-1),ROW()-1))

Zlo0Pz2N.rar (9.32 KB, 下载次数: 163)

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-5 17:17 | 显示全部楼层

“存在多个省区具有相同的等级”

这样我就明白了,区域有重复省区跟这个不一样

谢谢版主,这就是我期望的结果

[em27][em27][em27]

TA的精华主题

TA的得分主题

发表于 2009-2-16 12:39 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-1-13 12:01 | 显示全部楼层
我做了一个起来,但到了后面好像不行

样式.rar

52.75 KB, 下载次数: 53

TA的精华主题

TA的得分主题

发表于 2012-1-5 20:26 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 16:13 , Processed in 0.039947 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表