ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 【学习并记录010】建立某文件夹下的动态工作簿目录

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-3-2 16:55 | 显示全部楼层 |阅读模式
问:建立某文件夹下的动态工作簿目录,文件夹的路径改变,超链仍然有效?

答:

http://club.excelhome.net/thread-539087-1-1.html 里说到了【学习并记录005】建立工作表目录又一法[定义名称 复制 粘贴]

这里我们也可以借鉴下一点思路

方法一:路径已知,工作簿名已知(见附件中汇总表.XLS里的sheet1工作表)

1,B列从B3开始存放工作簿名,E1存放工作簿所在的路径

2,C3=HYPERLINK("["&$E$1&B3&".xls]",B3)




那么,可否假设路径未知呢,用函数取得当前工作簿即《汇总表.XLS》的路径?(见附件中汇总表.XLS里的sheet2工作表)

方法二:路径未知,用函数取得当前工作簿即《汇总表.XLS》的路径

1,B列从B3开始存放工作簿名

2,E1=LEFT(CELL("filename"),FIND("[",CELL("filename"))-1),取得路径

3,C3公式没变,仍是=HYPERLINK("["&$E$1&B3&".xls]",B3)


那么,可否假设路径未知、工作簿名也未知呢?

方法三:路径未知、工作簿名也未知,用函数取得当前工作簿即《汇总表.XLS》的路径,用函数取得当前工作簿路径下的文件夹里的工作簿名称?(见附件中汇总表.XLS里的sheet3工作表)

1,定义名称
name =FILES(path&"*.*")&T(NOW())
path =LEFT(CELL("filename"),FIND("[",CELL("filename"))-1)

2,B3=IF(ROW()-2>COUNTA(name),"",HYPERLINK(path&INDEX(name,ROW()-2),INDEX(name,ROW()-2)))



方法四:路径未知、工作簿名也未知,并排除当前工作簿名称(即目录里没有当前工作簿)?(见附件中汇总表.XLS里的sheet4工作表)

1,定义名称

book        =LOOKUP(SMALL(IF(row<>MATCH(Sheet4!name,files,),row),ROW(INDIRECT("1:"&ROWS(row)-1))),row,files)
files        =FILES(path&"*.*")&T(NOW())
names        =GET.WORKBOOK(16)&T(NOW())
path        =LEFT(CELL("filename"),FIND("[",CELL("filename"))-1)
row        =ROW(INDIRECT("1:"&COLUMNS(files)))


2,B3=IF(ROW()-2>COUNTA(book),"",INDEX(book,ROW()-2))

[ 本帖最后由 lgcmeli 于 2010-3-3 15:04 编辑 ]

Desktop.rar

7.33 KB, 下载次数: 653

TA的精华主题

TA的得分主题

发表于 2010-3-2 17:13 | 显示全部楼层
这方面才疏学浅,招数挺高,还没看明白。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-3-2 17:49 | 显示全部楼层
1,now()是一个易失性函数,随着Excel的一些动作比如编辑单元格等变化,产生当前时间(数值的一种)

2,T()函数对文本返回文本自身,对数值返回空。所以&T(now())相当于&"",只不过这个""会随时变化

3,这样连起来就使得我们得到的工作簿名称是一个可以随着Excel动作(如改变工作表名也是动作)而“实时”变化的工作簿名

TA的精华主题

TA的得分主题

发表于 2010-3-2 17:41 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-3-2 17:47 | 显示全部楼层

回复 4楼 wangg913 的帖子

文本公式(计算的结果为文本) 刷新用 =公式&T(NOW())

计算公式(计算的结果为数值) 刷新用 =公式+NOW()*0



上面例子中应用的宏表4.0函数不会自动重新计算,所以需要加这个尾巴实现自动重算。

文本&""并不会改变文本的内容。

数值+0或者数值*1都不会改变数值的大小。

所以有:

=公式&T(now())

=公式+NOW()*0      (或者公式+rand()*0、或者公式*Now()^0、或者公式*Rand()^0)

TA的精华主题

TA的得分主题

发表于 2010-3-2 17:55 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-3-3 13:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
方法四:路径未知、工作簿名也未知,并排除当前工作簿名称(即目录里没有当前工作簿)?(见附件中汇总表.XLS里的sheet4工作表)

1,定义名称

book        =LOOKUP(SMALL(IF(row<>MATCH(Sheet4!name,files,),row),ROW(INDIRECT("1:"&ROWS(row)-1))),row,files)
files        =FILES(path&"*.*")&T(NOW())
names        =GET.WORKBOOK(16)&T(NOW())
path        =LEFT(CELL("filename"),FIND("[",CELL("filename"))-1)
row        =ROW(INDIRECT("1:"&COLUMNS(files)))


2,B3=IF(ROW()-2>COUNTA(book),"",INDEX(book,ROW()-2))

TA的精华主题

TA的得分主题

发表于 2010-3-4 20:37 | 显示全部楼层

TA的精华主题

TA的得分主题

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

TA的精华主题

TA的得分主题

发表于 2010-3-6 00:04 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 00:48 , Processed in 0.040795 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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