ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 汇总所有工作簿的工作表中B列最后5行数据,执行到一半就中断了

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-2-19 16:47 | 显示全部楼层 |阅读模式
汇总所有工作簿的工作表中B列最后5行数据,执行到一半就中断了。


每个工作簿名称保存在B列单元格中,B列最后5行数据转置后保存在对应行的右边5列单元格中,程序执行到接近1半的时候就中断了,哪位大侠指点下,多谢啦


Sub HzWb()
Dim bt As Range, r As Long, c As Long
r = 1   '1是表头的行数
c = 7   '7是表头的列数
Dim wt As Worksheet
Set wt = ThisWorkbook.Worksheets(1)         '将汇总表赋给变量wt
wt.Rows(r + 1 & ":1048576").ClearContents   '清除汇总表中原有的数据,只保留表头
Application.ScreenUpdating = False
Dim FrileName As String, sht As Worksheet, wb As Workbook
Dim Erow As Long, fn As String, arr As Variant
Filename = Dir(ThisWorkbook.Path & "\*.xlsx")       '   这是要汇总的工作簿文件的扩展名,只有扩展名为“xlsx”的工作簿中的记录才会被汇总。
Do While Filename <> ""
    If Filename <> ThisWorkbook.Name Then   '判断浙文件是否是汇总数据的工作簿
    Erow = wt.Range("A1").CurrentRegion.Rows.Count + 1  '取得汇总表中第一条空行行号
    fn = ThisWorkbook.Path & "\" & Filename           '将第I个要汇总的工作簿名称赋给变量fn
    Set wb = GetObject(fn)                  '将变量fn代表的工作簿对像赋给变量Wb
    Set sht = wb.Worksheets(1)                  '将要汇总的工作表赋给变量sht
        '将工作表中要汇总的记录保存在数组arr中
        arr = Application.Transpose(sht.Range(sht.Cells(1048576, "B").End(xlUp).Offset(-4, 0), sht.Cells(1048576, "B").End(xlUp)))
    '将数组arr中的数据写入工作表
    wt.Cells(Erow, "A") = "降雨量"
    wt.Cells(Erow, "B") = Left(Filename, InStr(Filename, ".") - 1)
    wt.Cells(Erow, "C").Resize(1, 5) = arr
End If
Filename = Dir      '用Dir函数取得其他文件名,并赋给变量
Loop
Application.ScreenUpdating = True
Call 宏2
End Sub


2019年降雨量.7z

252.37 KB, 下载次数: 13

需汇总文件

TA的精华主题

TA的得分主题

发表于 2023-2-19 17:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub HzWb()
  2.     Dim bt As Range, r As Long, c As Long
  3.     r = 1   '1是表头的行数
  4.     c = 7   '7是表头的列数
  5.     Dim wt As Worksheet
  6.     Set wt = ThisWorkbook.Worksheets(1)         '将汇总表赋给变量wt
  7.     wt.UsedRange.Offset(1).ClearContents
  8.     Application.ScreenUpdating = False
  9.     Dim FrileName As String, sht As Worksheet, wb As Workbook
  10.     Dim Erow As Long, fn As String, arr As Variant
  11.     Filename = Dir(ThisWorkbook.Path & "\*.xlsx")       '   这是要汇总的工作簿文件的扩展名,只有扩展名为“xlsx”的工作簿中的记录才会被汇总。
  12.     Do While Filename <> ""
  13.         If Filename <> ThisWorkbook.Name Then   '判断浙文件是否是汇总数据的工作簿
  14.             r = r + 1
  15.             fn = ThisWorkbook.Path & "" & Filename           '将第I个要汇总的工作簿名称赋给变量fn
  16.             Set wb = Workbooks.Open(fn)                  '将变量fn代表的工作簿对像赋给变量Wb
  17.             Set sht = wb.Worksheets(1)                  '将要汇总的工作表赋给变量sht
  18.             '将工作表中要汇总的记录保存在数组arr中
  19.             arr = Application.Transpose(sht.Cells(1048576, "A").End(xlUp).Offset(-4, 1).Resize(5, 1).Value)
  20.             wb.Close
  21.             '将数组arr中的数据写入工作表
  22.             wt.Cells(r, "C").Resize(1, 5) = arr
  23.         End If
  24.         Filename = Dir      '用Dir函数取得其他文件名,并赋给变量
  25.     Loop
  26.     wt.Range("a2:a" & r).Value = "降雨量"
  27.     Application.ScreenUpdating = True
  28.     Call 宏2
  29. End Sub

复制代码


TA的精华主题

TA的得分主题

发表于 2023-2-19 18:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
2023年2月17日降雨量日特征值.rar (42.86 KB, 下载次数: 17)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-2-19 18:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 zxsea_7426 于 2023-2-19 18:56 编辑


好花时间啊。

image.png

基本重写了。
image.png


TA的精华主题

TA的得分主题

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

大佬您好,太强大了,好多代码不知道什么意思啊?能加个注释吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-19 21:24 | 显示全部楼层

有时候会出现运行错误13,类型不匹配

运行时错误13类型不匹配

运行时错误13类型不匹配

运行时错误13类型不匹配1

运行时错误13类型不匹配1

TA的精华主题

TA的得分主题

发表于 2023-2-19 21:32 来自手机 | 显示全部楼层
wjh9239 发表于 2023-2-19 21:24
有时候会出现运行错误13,类型不匹配

工作簿名不是  X年X月X日  这样的?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-19 21:33 | 显示全部楼层

您好,您发的这个代码我复制粘贴进去,运行提示错误450
  1. Sub HzWb_COUNT()
  2.    t = Timer
  3.    Application.ScreenUpdating = False
  4.    Set d = CreateObject("scripting.dictionary")
  5.    Dim mpath As String, l_r As Long, n As Long
  6.    Dim rng As Range
  7.    Dim F As String, sht As Worksheet, wb As Workbook
  8.    mpath = ThisWorkbook.Path & ""
  9.    F = Dir(mpath & "*.xlsx")   ' 这是要汇总的工作簿文件的扩展名,只有扩展名为“xlsx”的工作簿中的记录才会被汇总。
  10.     Do While F <> ""
  11.    Set wb = Workbooks.Open(mpath & F)
  12.    l_r = Sheets(1).Cells(Rows.Count, 1).End(3).Row - 4
  13.   ar = Sheets(1).Cells(l_r, 2).Resize(5, 1)
  14.   a = Split(Split(F, ".")(0), "年")(0)
  15.   b = Split(Split(Split(F, ".")(0), "年")(1), "月")(0)
  16.   c = Split(Split(Split(Split(F, ".")(0), "年")(1), "月")(1), "日")(0)
  17.   d(F) = Array(Application.Transpose(ar), DateSerial(Val(a), Val(b), Val(c)))
  18.   wb.Close False
  19.   F = Dir '用Dir函数取得其他文件名,并赋给变量
  20. Loop
  21.   With ActiveSheet
  22.       .UsedRange.Offset(1).ClearContents '清除汇总表中原有的数据, 只保留表头
  23.       For Each Key In d.keys
  24.            Set rng = .Cells(Rows.Count, 1).End(3).Offset(1, 0)
  25.            rng.Value = "降雨量"
  26.            rng.Offset(0, 2).Resize(1, 5) = Application.Transpose(Application.Transpose(d(Key)(0)))
  27.            rng.Offset(0, 1) = d(Key)(1)
  28.       Next
  29.     With .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(3).Offset(0, 6))
  30.        .Font.Size = 10
  31.        .Borders.LineStyle = 1
  32.     End With
  33.     End With
  34.     ActiveSheet.Range(ActiveSheet.Cells(2, 1), ActiveSheet.Cells(Rows.Count, 1).End(3).Offset(0, 6)).Sort keyl:=ActiveSheet
  35.     Application.ScreenUpdating = True
  36.      MsgBox "汇总完毕,共计耗时:" & Format(Timer - t, "0.0000") & "秒"
  37. End Sub
复制代码

运行时错误450错误的参数号或无效的属性赋值

运行时错误450错误的参数号或无效的属性赋值

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-19 21:50 | 显示全部楼层
fzxba 发表于 2023-2-19 21:32
工作簿名不是  X年X月X日  这样的?

是的,看起来都是一样的

TA的精华主题

TA的得分主题

发表于 2023-2-19 22:07 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
wjh9239 发表于 2023-2-19 21:50
是的,看起来都是一样的

小问题了,可以变通的。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 02:47 , Processed in 0.043703 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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