ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 难题,帮忙修改一下, 以A列为所列数据为基础,汇总余额表的H-K列数据相应数据

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-3-6 14:49 | 显示全部楼层
zhouxiao 发表于 2017-3-6 14:08
一共有多少工作簿需要合并?

老师能弄好吗?在线等

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-3-6 14:50 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
liulang0808 发表于 2017-3-6 13:50
看不明白,建议结合附件内容,做个模拟实例进行说明下,具体要干什么,怎么做

老师能弄好吗?在线等

TA的精华主题

TA的得分主题

发表于 2017-3-6 15:45 | 显示全部楼层
  1. Sub test()
  2.   Dim r%, i%
  3.   Dim arr, brr
  4.   Dim wb As Workbook
  5.   Dim ws As Worksheet
  6.   Dim mypath$, myname$
  7.   Dim d As Object
  8.   Application.ScreenUpdating = False
  9.   Application.DisplayAlerts = False
  10.   Set d = CreateObject("scripting.dictionary")
  11.   Set d1 = CreateObject("scripting.dictionary")
  12.   With Worksheets("汇总")
  13.     r = .Cells(.Rows.Count, 1).End(xlUp).Row
  14.     arr = .Range("a4:a" & r)
  15.     For i = 1 To UBound(arr)
  16.       d(arr(i, 1)) = i
  17.     Next
  18.   End With
  19.   mypath = ThisWorkbook.Path & ""
  20.   myname = Dir(mypath & "*.xls")
  21.   Do While myname <> ""
  22.     If myname <> ThisWorkbook.Name Then
  23.       ReDim brr(1 To d.Count, 1 To 4)
  24.       wjm = Split(myname, ".")(0)
  25.       Set wb = GetObject(mypath & myname)
  26.       With wb
  27.         With .Worksheets(1)
  28.           r = .Cells(.Rows.Count, 1).End(xlUp).Row
  29.           arr = .Range("d2:k" & r)
  30.           For i = 1 To UBound(arr)
  31.             xm = Trim(arr(i, 1))
  32.             If d.exists(xm) Then
  33.               m = d(xm)
  34.               For j = 1 To 4
  35.                 brr(m, j) = arr(i, j + 4)
  36.               Next
  37.             End If
  38.           Next
  39.         End With
  40.         .Close False
  41.       End With
  42.       d1(wjm) = brr
  43.     End If
  44.     myname = Dir()
  45.   Loop
  46.   With Worksheets("汇总")
  47.     r = .Cells(.Rows.Count, 1).End(xlUp).Row
  48.     .Range("b2").Resize(r - 1, .Columns.Count - 1).Clear
  49.     n = 2
  50.     For Each aa In d1.keys
  51.       brr = d1(aa)
  52.       With .Cells(2, n)
  53.         .Value = aa
  54.         .Resize(1, 4).Merge
  55.       End With
  56.       .Cells(3, n).Resize(1, 4) = Array("本期发" & vbLf & "生借方", "本期发" & vbLf & "生贷方", "期末余" & vbLf & "额借方", "期末余" & vbLf & "额贷方")
  57.       .Cells(4, n).Resize(UBound(brr), 4) = brr
  58.       n = n + 4
  59.     Next
  60.     n = n - 1
  61.     .Range("a2").Resize(r - 1, n).Borders.LineStyle = xlContinuous
  62.     .Range("b4").Resize(r - 3, n - 1).NumberFormatLocal = "0.00"
  63.     .Range("a2").Resize(1, n).EntireColumn.AutoFit
  64.     With .Range("a1").Resize(3, n)
  65.       .HorizontalAlignment = xlCenter
  66.       .VerticalAlignment = xlCenter
  67.     End With
  68.   End With
  69. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-3-6 15:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
根据楼主模拟结果写的代码,不知道结果对不对。

汇总.rar

70.24 KB, 下载次数: 17

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-3-6 15:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我是按照我的想法在你的代码基础上改的,供参考
  1. Sub lsc()
  2.     Dim wk As Workbook
  3.     Sheet2.Range("A2:L" & Sheet2.Range("A65536").End(3).Row).ClearContents
  4.     Application.ScreenUpdating = False
  5.     Set Fso = CreateObject("scripting.filesystemobject")
  6.     Set ff = Fso.getfolder(ThisWorkbook.Path)
  7.     lrow1 = Workbooks("多表按条件汇总").Sheets(2).Range("A65536").End(3).Row + 1
  8.     For Each f In ff.Files
  9.         If f.Name <> ThisWorkbook.Name Then
  10.             Set wk = Workbooks.Open(f)
  11.             With Sheets(1)
  12.                 lrow = .Range("A65536").End(3).Row
  13.                 .Range("A2:K" & lrow).Copy Workbooks("多表按条件汇总").Sheets(2).Cells(lrow1, 2)
  14.                 If lrow1 > 2 Then
  15.                     lrow = lrow + lrow1 - 2
  16.                 End If
  17.                 Workbooks("多表按条件汇总").Sheets(2).Range("A" & lrow1 & ":A" & lrow) = WorksheetFunction.Substitute(wk.Name, ".xls", "")
  18.                 lrow1 = lrow + 1
  19.             End With
  20.             Workbooks(Split(f, "")(UBound(Split(f, "")))).Close False
  21.         End If
  22.     Next
  23.     Application.ScreenUpdating = True
  24. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2017-3-6 15:53 | 显示全部楼层
附件供参考
多表按条件汇总.rar (40.36 KB, 下载次数: 14)

TA的精华主题

TA的得分主题

发表于 2017-3-6 15:55 | 显示全部楼层
源数据合并以后,用数据透视表汇总的

TA的精华主题

TA的得分主题

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

谢谢你  但是和我说的不太一致  lrow1 = Workbooks("多表按条件汇总").Sheets(2).Range("A65536").End(3).Row + 1 不能用

TA的精华主题

TA的得分主题

发表于 2017-3-6 20:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 乐乐2006201505 于 2017-3-6 21:24 编辑

已经在原代码基础上做出来了,所以也凑个热闹,贻笑大方。不足之处,望各位老师批评指正,不胜感激。

汇总.rar

37.56 KB, 下载次数: 9

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-3-6 21:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 乐乐2006201505 于 2017-3-6 21:36 编辑
excel学习123 发表于 2017-3-6 15:59
谢谢你  但是和我说的不太一致  lrow1 = Workbooks("多表按条件汇总").Sheets(2).Range("A65536").End(3) ...

lrow1 = Workbooks("多表按条件汇总.xls").Sheets(2).Range("A65536").End(3).Row + 1
修改红色部分代码试试。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-6-30 23:48 , Processed in 0.051511 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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