ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

如何把总表的信息自动填入另外一个工作簿中对应的各部门里面呢?谢谢

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-4-12 14:55 | 显示全部楼层 |阅读模式
就是两个工作簿,总表和部门表(部门表里面很多个sheet:各车间的名字),每次所有的证书到后,我需要把信息登记到“总表”,然后再把证书信息按车间复制粘贴到“各部门”里面,很麻烦,这两个表格的格式排列也不完全相同,但是关键字段相同, 有没有办法把总表信息自动登记到各部门呢,还有自动删除“各部门”有效期过期的整行信息,先谢谢大家了~

自动登记.rar

51.97 KB, 下载次数: 10

TA的精华主题

TA的得分主题

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

TA的精华主题

TA的得分主题

发表于 2015-4-12 17:21 | 显示全部楼层
没什么难度 只是你分部门表 与总表对应关系说清楚 哪些数据更新  你想以哪个数据当关键字找数据

TA的精华主题

TA的得分主题

发表于 2015-4-12 18:06 | 显示全部楼层
  1. Sub ChaiFen()
  2. Dim i%, cnn As Object
  3. Dim arr
  4.     Application.ScreenUpdating = False
  5.     Application.DisplayAlerts = False
  6.     On Error Resume Next
  7.     MaxRow = ActiveSheet.UsedRange.Find("*", , , , , xlPrevious).Row
  8.     Set cnn = CreateObject("adodb.connection")
  9.     cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;hdr=YES;';Data Source=" & ThisWorkbook.FullName
  10.     Sql = "select distinct 使用单位 from [201504$a4:k" & MaxRow & "]"
  11.     arr = cnn.Execute(Sql).getrows
  12.     Set f = Workbooks.Open(ThisWorkbook.Path & "\部门表.xls")
  13.         For Each UseUnit In arr
  14.             Sql = "select 序号,器具名称,规格型号,生产厂家,出厂编号,有效日期,检定周期,检定人,安装位置 from [201504$a4:k" & MaxRow & "] where 使用单位='" & UseUnit & "'"
  15.                 With f
  16.                     For Each sh In Worksheets
  17.                         With sh
  18.                             If sh.Name = UseUnit Then
  19.                                 UnitMaxRow = .UsedRange.Find("*", , , , , xlPrevious).Row
  20.                                 .Range("a3:i" & UnitMaxRow).ClearContents
  21.                                 .Range("a3").CopyFromRecordset cnn.Execute(Sql)
  22.                                 GoTo aa
  23.                             End If
  24.                         End With
  25.                     Next
  26.                 End With
  27. aa:
  28.         Next
  29.     cnn.Close
  30.     f.Close True
  31.     Application.DisplayAlerts = True
  32.     Application.ScreenUpdating = True
  33. End Sub
复制代码
说明和数据都很乱,不知道是不是你想要的。

TA的精华主题

TA的得分主题

发表于 2015-4-12 18:06 | 显示全部楼层
请查看附件。

自动登记_ok.rar

106.33 KB, 下载次数: 21

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-4-13 08:20 | 显示全部楼层
半夏离落 发表于 2015-4-12 18:06
请查看附件。

谢谢你啦!  因为各车间的证书有很多种类  这次的总表只是其中台秤的总信息    你发的是我需要的 只是把各车间不过期的证书信息也替换掉了  还有出厂编号是文本的单元格 没法赋值到“各车间”是空白。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-4-13 08:21 | 显示全部楼层
半夏离落 发表于 2015-4-12 18:06
请查看附件。

那个过期不过期是根据有效日期判断的

TA的精华主题

TA的得分主题

发表于 2015-4-13 10:43 | 显示全部楼层
春天的棉花 发表于 2015-4-13 08:20
谢谢你啦!  因为各车间的证书有很多种类  这次的总表只是其中台秤的总信息    你发的是我需要的 只是把各 ...

如果你的是一个总表和分表的话,总表应该包含分表的数据,所以我把原来的数据清除再覆盖,不然每次都得判断这个数据是否已经导过去了,很明显现在你分表和总表对不上,如果你这样不规范的话,是很难去做限制的。

另外,你的有效日期我认为应该在总表里面删除,但是你分表的数据比总表还多。你也没有明确说明是删哪个,我没有做这个功能。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-4-14 08:38 | 显示全部楼层
明白你说的意思 总表确切的是“台秤的总表”,证书是隔一段时间来一批的,先统计这一次到的证书到“总表”,这个总表仅仅是这一次的新证书,然后把它分类到各车间,所以分表的类型更多证书更多。可能我表述不到位,不管怎样,百忙之中麻烦你帮忙,非常感谢~

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-4-14 08:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
总表确切的说是新到证书的表,不一定替代“各车间”中的证书,有可能是新购仪器证书,也有可能是之前仪器重新检定,所以只要根据有效日期删除各车间到期证书信息,不用判断重复或者替代。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-12 16:04 , Processed in 0.027103 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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