ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[函数用法讨论系列23] “列表”区域与“定义名称”的妙用

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-2-24 18:48 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
[讨论]关于对“列表”区域与“定义名称”的妙用
在学习论坛关于“数据有效性的高级应用”的精华帖子有疑问,连接如下:
http://club.excelhome.net/dispbbs.asp?boardid=3&replyid=99290&id=30695&page=1&skin=0&Star=1
下载搂主的第1个附件,里面的ID名称为什么会随着数据的不断输入,能动态地改名名称的引用范围?
这种动态名称与  =Offset($B$4,,,counta(B:B))  动态定义名称有何区别?

另外有一个小问题,自己创建“列表”时,总会有一个下来按钮,想取消它老做不到,而楼主的“唯一值输入”表中却没有下拉按钮,怎么操作?
见附件:

WfvrgDiP.rar (7.22 KB, 下载次数: 2600)
[此贴子已经被sahelo于2007-1-1 22:49:15编辑过]

TA的精华主题

TA的得分主题

发表于 2006-2-24 23:06 | 显示全部楼层

1、先声明:这一点仅是个人理解。 定义的名称ID选择了“列表”区域,而“列表”区域会自动一格一格的拓展(不能隔一格),所以有点类似offset公式做的动态名称。

先拿普通定义名称来说吧,假设定义名称为data=A1:B10,则当你选中A1:B10时,编辑栏左边的“名称框”会自动显示为data,若在输入公式时用鼠标选中A1:B10而非输入"A1:B10",则也会自动变为data。

类似的,用“列表”这个功能(它有自动在相邻区域向下拓展功能)相当于默认为一个名称比如某列表,而我们在定义一个名称时选择了这个列表区域,就默认成“列表”名称——(这一说法有待统一,大概意思就是这样。)而随着列表本身的拓展,定义的名称引用区域跟着拓展了。

2、多了的那个按钮只要从:数据〉筛选〉自动筛选那边去掉就行了。

3、建议:楼主可以将标题改一下:比如关于“列表”功能的疑问等等。
[此贴子已经被作者于2006-2-24 23:10:06编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-2-24 23:17 | 显示全部楼层

谢谢,我终于明白了,原来“列表”还有如此功能,它还真的与 Offset函数定义一个动态名称相当。

再次感谢gouweicao78

TA的精华主题

TA的得分主题

发表于 2006-2-25 11:55 | 显示全部楼层

个人觉得:用列表定义名称的方式来动态引用会比offset(如常见的=Offset($A$4,,,counta(A:A)-3))好些,阐述如下:

1、不用费劲地去写公式,尤其是多列要定义名称,用offset还要一个个去改,碰上喜欢合并单元格(大多人都会用合并单元格作标题之类的),这就往往在counta后面减去一个数问题上不一致,连改名称里的公式都要注意。

而用列表功能,只需要:插入〉名称〉指定〉首行并选择列表区域——一次性定义多个名称。要做仅仅是选择区域、创建列表而已。

2、offset+counta存在一个弊病:比如要引用的数据在A1:A100,我们在后面又输入一些东西,比如A101:A103为空单元格,而我们在A103下面写入东西,counta后面减去的数要手工去修改,否则引用区域就把A101等空单元格包含进去,空单元格在一些函数计算中可能造成运算不便的情况。要是A101:A103是我们特地空的,而A104有数据是可能影响运算结果的,由于后面输入的数据多,把A104包含进去,更是不妙!

而列表功能,我们在列表范围之外(指的是列表下面隔一行之后)输入东西,比如列表在A1:A100,我们在A102输入东西不会影响列表。如果我们想扩展列表的区域,在A101输入就自动扩展了。

再次补充一点: czzqb兄提出了用offset+counta由于Offset函数的易失性会引起重新计算问题,列表功能定义名称的引用是对“单元格区域”的引用,没有使用任何函数,不会引起重算(打开文件不做任何修改并关闭,会提示保存的便是使用了易失性函数引起重算)。这也是个优势!——2006-3-19
推广建议:鉴于以上比较,对于动态引用单元格区域的采取区分数据由来而使用的建议,具体如下: 1、原始表格区域的引用,用于数据不断增加时希望能够引用该区域的公式能自动更新——用列表区域。 2、公式得出区域的引用,无法预知有效数据个数的情况,比如常见的单列求不重复值,我们不能确定个数,用公式多拉动复制产生多余的""或者错误区域,再用这个区域作为数据有效性引用时需要定义名称,这种情况用offset最合适不过了。 不过已经不能用offset+counta了,该把counta改为countif(Range,"><")——文本,或count(range)——数字,或者sum(--(range<>""))——通用。2006-3-30补充
此外,我经常在建议使用“列表”定义动态名称,并非我就要摒弃Offset,有的时候,2种方法可以结合起来用,尤其是当“列表字段较多、或者字段字段名有重复”的情况下,你可以只用“局部”作“列表”实现动态,然后再用“列表定义的动态名称”作Offset的第一参数来偏移(这样的offset公式就很简单了)达到引用其他部位也能随着行数数据的增加而变化的效果。2006-4-23补充
呵呵,这个帖子打满补丁了:“并非我就要摒弃Offset”——如果能摒弃用Offset作的动态引用定义名称的就摒弃吧。A1:index(A:A,……)这类的引用就可以在一定程度上替代了。见附件: uJq2806q.rar (9.82 KB, 下载次数: 1136) 2006-5-8
[此贴子已经被作者于2006-5-8 21:29:19编辑过]

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2006-2-25 13:07 | 显示全部楼层
学了很多,原来“列表”还有如此功能

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-2-26 17:51 | 显示全部楼层
深有同感,定义列表名称实现动态名称要比Offset函数定义的名称简单明了

TA的精华主题

TA的得分主题

发表于 2006-2-26 18:23 | 显示全部楼层

关于“列表”的介绍,请参考:

http://club.excelhome.net/viewthread.php?tid=140624&replyID=&skin=0

gvntw版主作了详尽的介绍。

补充几个图片说明吧: 选择区域〉鼠标右键〉创建列表 或者选择区域〉数据〉列表〉创建列表 快速指定名称 将列表区域转换为普通区域
[此贴子已经被作者于2006-3-31 21:31:45编辑过]
F1Zw68Y7.jpg
zIH2JJKV.jpg
Xzyz87EV.jpg
6EnXKhcK.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-2-26 22:34 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-3-10 10:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

补充1点:

原先不知对谁说过的列表不能向右自动拓展区域的说法是不完全的——在列表区域的右边一列输入数据也会被自动拓展并入列表区域。

但是——我觉得用汉语来解释这个名字会很恰当“列表”——“列”字!:

不管列表区域向左向右拓展,都是以“列”为“单位区域”的——或者说相当于某个字段。如果你没有设置列标题,则会自动出现“列1”之类的列标题,否则以区域首行为标题。

而本帖讨论的是用列表区域来定义动态引用名称——可以向下拓展而不能向右拓展。

[此贴子已经被作者于2006-3-19 17:34:44编辑过]

TA的精华主题

TA的得分主题

发表于 2006-3-28 22:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

呵呵,现在才看到这帖,本来还想下一期竞赛题用这个,“不用任何函数定义动态区域名称”,题目都弄好了,现在出不了了。

多亏gouweicao78给的链接。
[此贴子已经被作者于2006-3-28 22:23:41编辑过]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-12-24 01:09 , Processed in 0.048795 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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