ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求助——如何实现一个总的管理表格进行所有子表格到期提醒

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-3-7 10:12 | 显示全部楼层 |阅读模式
各位大侠,本人的工作中经常涉及到各种的合同到期前需要续签的,包括员工劳动合同、各外包单位合同、各种租赁合同以及特殊工种年审到期提醒,请问能否在一张总的管理表格中实现以上各种管理表中到期日提前X天通知。最好是可以实现即将到期的项目自动显示在总的管理表格里面。以上。谢谢各位大侠。

求助.rar (31.37 KB, 下载次数: 57)

TA的精华主题

TA的得分主题

发表于 2012-3-7 10:44 | 显示全部楼层
本帖最后由 skyzxh 于 2012-3-7 10:44 编辑

用vba可以实现.

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-7 11:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
skyzxh 发表于 2012-3-7 10:44
用vba可以实现.

请问具体的思路是怎么样?

TA的精华主题

TA的得分主题

发表于 2012-3-7 11:43 | 显示全部楼层
本帖最后由 静静2008 于 2012-3-7 11:50 编辑

等待高手出现吧,
以子表1为例
F3=IF(ISERROR(DATEDIF(TODAY(),E3,"d")),"已过期",DATEDIF(TODAY(),E3,"d")&"天后到期")
我是将每个子表先计算出小于20天到期的数据设置条件格式颜色提示,
如果汇总到总表数据量大时运行会慢

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-7 12:00 | 显示全部楼层
静静2008 发表于 2012-3-7 11:43
等待高手出现吧,
以子表1为例
F3=IF(ISERROR(DATEDIF(TODAY(),E3,"d")),"已过期",DATEDIF(TODAY(),E3,"d" ...

谢谢,先学习一下这种方法,看能否做到。

TA的精华主题

TA的得分主题

发表于 2012-3-7 12:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这个问题不论是用函数还是VBA,都要先做好数据规范的工作,当然,用VBA的效率会更高,更简便。

你的子表格式不尽相同,这里也只是列举了几个例子。建议所有子表都做成“数据清单”的格式(”数据清单“中字段名尽量统一,比如都叫”合同到期日“或者”到期日“),然后统一在管理表里做汇总和统计分析。

BTW,所谓”数据清单“就是第一行为字段名(不重复,无合并单元格),第二行开始为记录。”数据清单“对于数据的统计分析有重大意义,一定要规范。

TA的精华主题

TA的得分主题

发表于 2012-3-7 12:36 | 显示全部楼层
本帖最后由 sunya_0529 于 2012-3-7 12:38 编辑

对了,再补充一下,各子表中每一条记录应该有一个唯一的号码来对应(术语叫”索引字段“),比如叫流水号,或者合同编号,这些号码是不重复的,这样有利于快速定位到相应记录。做数据清单应该养成一个好习惯,就是一定要增加一个”索引字段“,哪怕叫”ID",按行号对应每条记录也行。

另外,子表最好能集中放在一个固定的目录下,这样方便用程序检索所有的子表。或者在汇总表里将所要统计的子表对应的详细路径做一个列表,程序根据列表中的子表进行数据读取。

做好了子表中的数据清单,再一起打个包上传上来,给你写个宏,点一个按钮就可以汇总所有子表中即将到期的记录信息。

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-7 13:02 | 显示全部楼层
sunya_0529 发表于 2012-3-7 12:36
对了,再补充一下,各子表中每一条记录应该有一个唯一的号码来对应(术语叫”索引字段“),比如叫流水号, ...

我把每一个表的第一列设为ID列,加入相应的编号。到时候所有的子表都是和总表放在同一个文件夹的。请帮忙编一个程序,以及指导一下我如何使用,以及以后如果有新的子表,应该如何修改这个程序代码,谢谢。
求助2.rar (31.74 KB, 下载次数: 28)


TA的精华主题

TA的得分主题

发表于 2012-3-7 15:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
jimikings 发表于 2012-3-7 13:02
我把每一个表的第一列设为ID列,加入相应的编号。到时候所有的子表都是和总表放在同一个文件夹的。请帮忙 ...

你附件里的数据清单还不标准,不要表头,不要合并单元格,如我附件所示。

另外,要解决你的问题,建议所有子表遵循如下规范:

1、子表的文件名无所谓,但要跟“总管理表”放在同一目录下,并且此目录下不要放其他文件,以免程序出错;

2、子表中存放数据清单的工作表名称应该一致,如附件所示,全部改成“Sheet1”,方便程序调用;

3、子表中必须有的三个字段:“ID”、“项目”、“到期日期”,位置不限,如附件中高亮显示部分;


附件中因示例数据不多,因此设定查询天数为330天以内的记录,你可以自己去修改这个数值,如下面代码注释部分——
  1. Private Sub CommandButton1_Click()
  2. On Error Resume Next
  3. Dim fso As Object, fld As Object, fls As Object, fle As Object
  4. Dim cn As Object, intDays%
  5. Set fso = CreateObject("Scripting.FileSystemObject")
  6. Set fld = fso.GetFolder(ThisWorkbook.Path)
  7. Set fls = fld.Files
  8. Set cn = CreateObject("ADODB.CONNECTION")
  9. intDays = 330 '设置需要提醒的天数,可根据需要修改
  10. With ActiveSheet
  11.   .Cells.Clear
  12.   .[A1:D1] = Array("ID", "项目", "到期日", "到期天数") '书写表头
  13.   For Each fle In fls '循环处理目录下各个子表
  14.     If fle.Name <> ThisWorkbook.Name Then '搜索子表时,排除“总管理表”本身
  15.       cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=yes;IMEX=2';Data Source=" & fle.Path
  16.       .[A65536].End(xlUp).Offset(1, 0).CopyFromRecordset cn.Execute("SELECT * FROM (SELECT ID,项目,到期日期,DateDiff('d',date(),到期日期) as 到期天数 FROM [Sheet1$]) WHERE 到期天数<=" & intDays)
  17.       cn.Close
  18.     End If
  19.   Next
  20.   MsgBox "查询完成!"
  21. End With
  22. '以下代码打扫战场
  23. Set cn = Nothing
  24. Set fls = Nothing
  25. Set fld = Nothing
  26. Set fso = Nothing
  27. End Sub
复制代码

多表联合查询.rar

44.53 KB, 下载次数: 144

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-3-7 17:03 | 显示全部楼层
sunya_0529 发表于 2012-3-7 15:57
你附件里的数据清单还不标准,不要表头,不要合并单元格,如我附件所示。

另外,要解决你的问题,建议 ...

真的太感谢您了,虽然还没看懂,但今晚必定回去好好研究。希望能够学习好excel,以后为坛友解决力所能及的问题。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-1 15:10 , Processed in 0.025771 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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