ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] VBA获取月份数据源合并到一个工作表

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-21 14:54 | 显示全部楼层
shiruiqiang 发表于 2024-1-20 08:43
建议添加个工作簿的名称。
选择文件夹,汇总

老师您好,你这边的附件论坛可以下载了,测试一下,距离主题还少一点功能。

1.测试只能获取2023年12月份和2024年1月份的数据清单,2023年11月份以前到2023年6月份的数据获取失败,需要全部月份的数据清单都能单独获取。

2.当前执行VB代码是选择某个文件夹作为数据源获取,需要在VB代码里指定一个路径获取“故障源",后续我自行修改VB代码里面的路径信息。VB路径修改位置帮忙注释一下谢谢。减少文件夹选择。

3.drr行数定义1000000执行出内存溢出错误,我改为drr=10000行数才可以执行VB程序,你看这里需要修改一下吗?

我这里附件数据源更全,老师请查收。




TA的精华主题

TA的得分主题

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

老师你好,我测试了你得回复附件,已经可以下载打开了,还存在点问题:
1.测试了2024年1月份和2023年12月份的数据源获读取成功,但是2023年11月份(包含11月)以前的数据都获取失败,也需要获取2024年以前的月份数据。
2.数据源获取,帮忙改为固定路径吧,当前每次都弹出对话框去选择文件夹,其它同事觉得麻烦,VB代码帮忙固定一个路径,后续我更新VB代码路径来更新数据源位置。
3.brr定义行数100000运行错误“内存溢出”报警,我删除为brr=10000才可以运行程序,这里代码是否需要完善一下。
我这里更新数据源数据有2023年6月份 - 2024年1月份,老师帮忙更改一下以上问题谢谢。



故障汇报.rar

1.68 MB, 下载次数: 6

附件

TA的精华主题

TA的得分主题

发表于 2024-1-21 21:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Sub ykcbf()  '//2024.1.21
  2.     Application.ScreenUpdating = False
  3.     Application.DisplayAlerts = False
  4.     Dim arr, brr(1 To 100000, 1 To 100), d
  5.     Dim tm: tm = Timer
  6.     Set fso = CreateObject("Scripting.FileSystemObject")
  7.     Set d = CreateObject("Scripting.Dictionary")
  8.     Set sh = ThisWorkbook.Sheets("工单列表")
  9.     yf = Format(ThisWorkbook.Sheets("汇总").[g1], "yyyymm")
  10.     With sh
  11.         c = .UsedRange.Columns.Count
  12.         For j = 2 To c + 1
  13.             n = n + 1
  14.             s = .Cells(1, j)
  15.             d(s) = n
  16.         Next
  17.     End With
  18.     With Application.FileDialog(msoFileDialogFolderPicker)
  19.         .Title = "请选择文件夹"
  20.         .InitialFileName = ThisWorkbook.Path & ""
  21.         If .Show = -1 Then
  22.             p = .SelectedItems(1) & ""
  23.         End If
  24.     End With
  25.     On Error Resume Next
  26.     For Each f In fso.GetFolder(p).Files
  27.         If f.Name Like "*.xls*" Then
  28.             If InStr(f.Name, ThisWorkbook.Name) = 0 Then
  29.                 fn = fso.GetBaseName(f)
  30.                 rq = Left(Replace(fn, "故障清单", ""), 6)
  31.                 If rq = yf Then
  32.                     Set wb = Workbooks.Open(f, 0)
  33.                     With wb.Sheets(1)
  34.                         arr = .UsedRange
  35.                         wb.Close False
  36.                     End With
  37.                     For i = 2 To UBound(arr)
  38.                         If arr(i, 1) <> Empty Then
  39.                             m = m + 1
  40.                             For j = 1 To UBound(arr, 2)
  41.                                 s = arr(1, j)
  42.                                 If d.exists(s) Then
  43.                                     brr(m, d(s)) = arr(i, j)
  44.                                 End If
  45.                             Next
  46.                         End If
  47.                     Next
  48.                 End If
  49.             End If
  50.         End If
  51.     Next f
  52.     With sh
  53.         .UsedRange.Offset(1).Clear
  54.         
  55.         With .[b2].Resize(m, n)
  56.             .Value = brr
  57.             .Borders.LineStyle = 1
  58.             .HorizontalAlignment = xlCenter
  59.             .VerticalAlignment = xlCenter
  60.         End With
  61.     End With
  62.     Set d = Nothing
  63.     Application.ScreenUpdating = True
  64.     MsgBox "共用时:" & Format(Timer - tm) & "秒!"
  65. End Sub

复制代码

参与一下,代码以附件为准。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-1-21 21:51 | 显示全部楼层
杨大敏 发表于 2024-1-21 18:04
老师你好,我测试了你得回复附件,已经可以下载打开了,还存在点问题: 1.测试了2024年1月份和2023年12月 ...

附件供参考。。。

故障汇报.7z

1.26 MB, 下载次数: 12

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-22 00:42 | 显示全部楼层
ykcbf1100 发表于 2024-1-21 21:51
附件供参考。。。

非常感谢老师的答复,已经完成题目90%吻合了,太感谢了。
完成了日期G1指定,完成工单列表标题指定。
还需要补充一点:

假设需要指定固定的位置来作为数据源位置查找,我应该用那一段程序替代为数据源路径才可以;比如我数据源位置为“D:\重要文件\Desktop\新建文件夹\故障汇报\故障清单”。

或者把“汇总表”H1单元格作为数据源查找位置这样可以吗,如下面图片这样这样可以吗?

感谢老师的回答,鲜活2朵必须赠送。



H1为路径

H1为路径

TA的精华主题

TA的得分主题

发表于 2024-1-22 07:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
杨大敏 发表于 2024-1-22 00:42
非常感谢老师的答复,已经完成题目90%吻合了,太感谢了。完成了日期G1指定,完成工单列表标题指定。 还需 ...

指定文件夹

故障汇报.7z

1.26 MB, 下载次数: 14

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-1-22 07:36 | 显示全部楼层
[h1]单元格指定路径

故障汇报2.7z

1.26 MB, 下载次数: 34

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-29 11:41 来自手机 | 显示全部楼层
ykcbf1100 发表于 2024-1-22 07:36
[h1]单元格指定路径

老师你好,指定单元格h1,已经满足要求了非常感谢。

有时还需要获取数据源“全年数据”,帮忙指导一下修改那句代码可以获取2024年全年数据。

就是h1指定的日期,获取全年的数据,目前是只能获取2024年和月份。

如果不方便解答,直接回复附件也可以。

TA的精华主题

TA的得分主题

发表于 2024-2-29 13:41 | 显示全部楼层
12F附件参与一下.rar (1.7 MB, 下载次数: 11)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-2-29 13:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
杨大敏 发表于 2024-2-29 11:41
老师你好,指定单元格h1,已经满足要求了非常感谢。

有时还需要获取数据源“全年数据”,帮忙指导一下 ...

代码已更新,即可以按年+月汇总,也可以按全年汇总。开始时选择汇总方式,默认是按年+月汇总。文件夹路径改为动态选择,避免以后路径发生变化后也可以不改代码。总表[h1]路径取消。




故障汇报2.7z

1.7 MB, 下载次数: 9

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 13:29 , Processed in 0.048715 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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