ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

★造个新词——定位模版★ 设置定位模版配合记录数据

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2012-5-11 16:50 | 显示全部楼层
为什么发不了图?

TA的精华主题

TA的得分主题

发表于 2012-5-11 16:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
C:\Documents and Settings\Administrator\桌面

TA的精华主题

TA的得分主题

发表于 2012-5-11 16:55 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-5-16 08:01 | 显示全部楼层
LangQueS版主您好!                       我们公司最近启用了一个新的系统,领导需要我们从很多报表中把数据汇总起来,手工录入的话不太现实,深感能力不够。当在Excel home技术论坛看到您发表的《[size=1em][源码全部公开][size=1em] [size=1em]★造个新词——定位模版★ 设置定位模版配合记录数据》心中大喜,当即下载学习,只是我们公司的报表与您的模板有点差异,我试了几次没有成功, 附件:文件夹a内有很多份报表,需要将其中的数据汇总起来,LangQueS版主是定位模板的开山鼻祖,所以小弟想劳烦您帮我看看,小弟将不胜感激 。

跳纤数据汇总.rar

61.85 KB, 下载次数: 50

TA的精华主题

TA的得分主题

发表于 2012-5-16 14:50 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-5-29 11:47 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-5-29 22:08 | 显示全部楼层
phweiliang 发表于 2012-5-16 08:01
LangQueS版主您好!                       我们公司最近启用了一个新的系统,领导需要我们从很多报表中把数 ...

跳纤数据汇总.rar (70.71 KB, 下载次数: 144)

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-5-29 23:40 | 显示全部楼层
或者这样:
  1. Sub 合并格式报表()
  2. '循环当前文件夹中所有工作簿的所有工作表并按定位模版抄录到“合并格式报表.xls”的数据库表
  3. On Error Resume Next    '忽略错误继续执行VBA代码,避免出现错误消息
  4. Application.Calculation = xlCalculationManual    '手动重算
  5.    
  6. KK = ThisWorkbook.Name         '当前工作簿名称
  7.    
  8.     ff = Dir(ThisWorkbook.Path & "\*.xls")    '搜索当前文件夹
  9.     Do While ff > " "    '只要指定的条件为 True,则会重复执行
  10.         If ff <> ThisWorkbook.Name Then    '如果不是当前工作簿
  11.             Set wb = Workbooks.Open(ThisWorkbook.Path & "" & ff)    '打开工作簿
  12.             For i = 1 To wb.Sheets.Count    '循环工作表
  13.                 With wb.Sheets(i)
  14. '===============================================================================
  15. If Workbooks(KK).Sheets("定位模版").Range("a2") < 1 Then Exit Sub    '否则就退出程序

  16. a = Workbooks(KK).Sheets("定位模版").Range("A2").Value    '使用在A2单元返回的数据行数
  17. b = Workbooks(KK).Sheets("数据库").Columns(1).Find("*", , xlValues, , , 2).Row    '数据库第1列最后可见非空单元行号

  18. For Each r In Workbooks(KK).Sheets("定位模版").UsedRange    '数组方式——将定位模版工作表所有单元纳入数组

  19. '酸橙色单元为1对多行
  20.     If r.Interior.ColorIndex = 43 Then    '如果单元颜色为酸橙色则
  21.         cc = r.Address    '单元地址
  22.         c = .Range(cc)    '返回报表相应单元内容
  23.         d = Workbooks(KK).Sheets("数据库").Range("1:1").Find(What:=r, After:=Workbooks(KK).Sheets("数据库").Range("A1"), LookAt:=xlWhole, SearchOrder:=xlByRows).Column    '匹配查找数据库表首行返回列号
  24.         If d > 0 Then
  25.             e = Split(Cells(1, d).Address, "$")(1)    '转为列标
  26.             Workbooks(KK).Sheets("数据库").Range(e & b + 1 & ":" & e & b + a).Value = c    '记录到数据库多行
  27.         End If
  28.     End If

  29. '茶色单元为分别记录多行
  30.     If r.Interior.ColorIndex = 40 Then    '如果单元颜色为茶色则
  31.         For f = 1 To a    '循环行
  32.         cc = r.Address    '单元地址
  33.             c = .Range(cc).Offset(f, 0).Value    '返回报表相应单元内容
  34.             d = Workbooks(KK).Sheets("数据库").Range("1:1").Find(What:=r, After:=Workbooks(KK).Sheets("数据库").Range("A1"), LookAt:=xlWhole, SearchOrder:=xlByRows).Column    '匹配查找数据库表首行返回列号
  35.             If d > 0 Then
  36.                 e = Split(Cells(1, d).Address, "$")(1)    '转为列标
  37.                 Workbooks(KK).Sheets("数据库").Range(e & b + f) = c     '记录一个单元
  38.             End If
  39.         Next
  40.     End If

  41. '向数据库表A列写入行号
  42.     Workbooks(KK).Sheets("数据库").Range("A" & b + 1 & ":A" & b + a) = "=row()"    '写入行号公式

  43. '向数据库表指定列写入表格文件名称和工作表名称
  44.     Workbooks(KK).Sheets("数据库").Range("ba" & b + 1 & ":ba" & b + a) = ff    '将工作簿名称写入AB列
  45.     Workbooks(KK).Sheets("数据库").Range("bb" & b + 1 & ":bb" & b + a) = Sheets(i).Name    '将工作表名称写入BB列

  46. Next
  47. '==============================================================================
  48.                 End With
  49.             Next
  50.             wb.Close 1    '关闭 Open 语句所打开的输入/输出 (I/O) 文件。
  51.         End If
  52.         ff = Dir
  53.     Loop

  54. Application.Calculation = xlCalculationAutomatic    '自动重算
  55. On Error GoTo 0    '恢复正常的错误提示
  56. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2012-5-31 17:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
感谢分享,很有用

TA的精华主题

TA的得分主题

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

本版积分规则

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

GMT+8, 2024-12-23 04:51 , Processed in 0.040469 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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