案列:现需要按条件汇总一个文件夹下的多个Excel文件中的某列数据到汇总表格中,文件夹中的所有Excel文件都是基于一个模板,只是数据不同。

所有的Excel文件结构:

库存组织:XXX 货主类型:XXX 货主:XXX
起始日期:2017/12/23 截止日期:2017/12/23 物料范围:全部
仓库范围:XXX 期初单价来源:XXX 收入发出单价来源:XXX K列 L列
物料编码 物料名称 仓库名称 数量 库存

1.起始日期 = 截止日期,取K列值;

2.起始日期 != 截止日期,取L列值;

Sub Collect()Dim myPath, myFile, wk As Workbook, ws As Worksheet, ThisWs As WorksheetDim ThisRowCount As IntegerDim AnotherRowCount As IntegerDim OutputColumn As Integer   '输出数据所在的列;Dim test1, test2, test3, test4 'test fields;Dim StartDate As DateDim EndDate As DateApplication.ScreenUpdating = False  '程序运行期间不刷新屏幕myPath = "D:\all\"           '在这里输入你文件夹的路径,即你存放需要处理文件的文件夹;最后的“\”请一定加上!myFile = Dir(myPath & "*.xls")      'Dir(".xls")依次找寻指定路径中的.xls文件,如果是.xlsx的文件请改为.xlsx;“*”为通配符。Set ThisWs = ThisWorkbook.Worksheets(2)     '当前工作簿,all的第二个worksheet;ThisRowCount = ThisWs.UsedRange.Rows.Count  '工作表all中使用了的行数;OutputColumn = 5   '被写入的工作表all是从第六列开始写入,即F列,Do While循环中首先对其进行了+1,以确保从第六列开始;Do While myFile <> ""    '当指定路径中不为空时进行循环If myFile <> ThisWorkbook.Name Then   '取出的文件不是本文件“all.xls”    Set wk = Application.Workbooks.Open(myPath & myFile)    '打开符合要求的文件Set ws = wk.Worksheets(1)AnotherRowCount = ws.UsedRange.Rows.Count    '依次取出的每个工作表的总行数;'StartDate = Right(ws.Cells(2, 1), 9)        '截取开始日期,从右向左截取,固定了取9位,但存在10位的情况,所以这里不适用该方法;改为使用Mid函数。'EndDate = Right(ws.Cells(2, 2), 9)          '截取截止日期,从右向左截取,固定了取9位,但存在10位的情况,所以这里不适用该方法;改为使用Mid函数。StartDate = Mid(ws.Cells(2, 1), (InStr(ws.Cells(2, 1), ":") + 1), Len(ws.Cells(2, 1)) - InStr(ws.Cells(2, 1), ":"))EndDate = Mid(ws.Cells(2, 2), (InStr(ws.Cells(2, 2), ":") + 1), Len(ws.Cells(2, 2)) - InStr(ws.Cells(2, 2), ":"))If StartDate = EndDate Then      '如果开始日期和截止日期相同,取K列的值;OutputColumn = OutputColumn + 1ThisWs.Cells(1, OutputColumn) = StartDateFor i = 2 To ThisRowCount Step 1           '写入的worksheet第一行为行名称,这里从第二行开始;For j = 5 To AnotherRowCount Step 1    '销量文件前四行为其他信息,这里从第五行开始;If ThisWs.Cells(i, 1) = ws.Cells(j, 1) Then          '物料编码是否相等;'test1 = ws.Cells(j, 1)'test2 = ThisWs.Cells(i, 1)ThisWs.Cells(i, OutputColumn) = ws.Cells(j, 11)  '将K列的值取到该工作表的OutputColumn列;'test3 = ThisWs.Cells(i, 6)'test4 = ws.Cells(j, 11)End IfNext jNext i'如果开始日期和截止日期不在同一天,即月底,这时需要判断;DateAdd()函数,日期的加减计算。ElseIf StartDate <> EndDate And (StartDate = DateAdd("d", 1, EndDate) Or EndDate = DateAdd("d", 1, StartDate)) Then            OutputColumn = OutputColumn + 1ThisWs.Cells(1, OutputColumn) = StartDateThisWs.Cells(1, (OutputColumn + 1)) = EndDate '月底均值,写两次值到目标数据表中;For i = 2 To ThisRowCount Step 1              '写入的worksheet第一行为行名称,这里从第二行开始;For j = 5 To AnotherRowCount Step 1       '销量文件前四行为其他信息,这里从第五行开始;If ThisWs.Cells(i, 1) = ws.Cells(j, 1) Then     '物料编码是否相等;ThisWs.Cells(i, OutputColumn) = ws.Cells(j, 12)  '将L列的值取到该工作表的OutputColumn列;ThisWs.Cells(i, (OutputColumn + 1)) = ws.Cells(j, 12) '将L列的值取到该工作表的OutputColumn+1列;End IfNext jNext iOutputColumn = OutputColumn + 1End Ifwk.Close   '关闭文件End IfmyFile = Dir   '找寻下一个*.xlsx文件LoopApplication.ScreenUpdating = True   '前面被更改为FALSE,此类语句一般成对使用
End Sub

VBA 汇总指定文件夹下的Excel文件数据相关推荐

  1. Python复制文件夹下的excel文件的指定列

    主要实现功能: 批量操作一个文件夹下的Excel文件 对该文件夹下的Excel同等操作 复制特定列到新建Excel文件 完成单元格获取文件名的操作 python操作excel详细 # -*- code ...

  2. 手把手教你用Python批量实现文件夹下所有Excel文件的第二张表合并

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 怀君属秋夜,散步咏凉天. 大家好, ...

  3. pandas合并文件夹下的excel文件

    研究背景: 由于工作中每天需要计算遗留工单,但工单创建的时间不确定,需要导出近半年的数据进行筛选,而系统一次只能到处一个月的数据,格式为excel格式文件,文件大学为10MB左右,每个文件数据量2万行 ...

  4. python遍历文件夹下所有excel文件_读取某文件夹下所有excel文件 python

    import os import pandas as pd from sklearn import linear_model path = r'D:\新数据\每日收益率' filenames = os ...

  5. 使用VBA汇总文件夹下所有Excel文件

    环境 VBA 文件夹下有13个Excel,结构相同 所有Excel的第1个表为"汇总"或者"目录",其他表为具体的内容 所有汇总表的结构一样,从第3行开始为内容 ...

  6. python批量读取文件夹中的所有excel文件-python遍历文件夹下所有excel文件

    大数据处理经常要用到一堆表格,然后需要把数据导入一个list中进行各种算法分析,简单讲一下自己的做法: 1.如何读取excel文件 网上的版本很多,在xlrd模块基础上,找到一些源码: import ...

  7. Python 读取文件夹下的Excel文件导入到数据库

    目录 1.代码 2.sql语句中格式错误 3.数据库抛出异常:Incorrect string value: '\xE7\xA8\x8B\xE5\xBA\x8F...' for column '字段名 ...

  8. matlab保存并关闭excel文件夹,[转载]Matlab批量操作目标文件夹下的Excel文件

    本程序主要使matlab批量操作Excel表,其中用到了parfor并行计算加快处理速度.相同效果,速度上和Excel vba 是有差距的. %%%%%%%%%%%%%%%%%%%%%%%%%%%%% ...

  9. python遍历文件夹下所有excel文件_python遍历文件夹下所有excel文件

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

最新文章

  1. C++中fstream的使用
  2. 多GPU真的能加速吗?
  3. 【搜索引擎Jediael开发笔记】v0.1完整代码
  4. [转载]Unix 高手的另外 10 个习惯
  5. MySQL中的UNIX_TIMESTAMP函数使用总结
  6. Java成员的访问权限控制
  7. spring中MessageSource的配置使用方法2--ReloadableResourceBundleMessageSource
  8. nginx编译安装和yum安装那个更好?
  9. 图像算法常用图片Lena
  10. 数据库常见导入文件方法
  11. 全面拆解携程云原生实践,打造智能弹性的云端酒店直连系统!
  12. 新增电子信息专硕,中外合作办学!南京信息工程大学
  13. 2018安徽省考c语言笔试答案,2018年安徽公务员考试行测真题解读
  14. 第四周项目3--单链表应用之逆置
  15. OSChina 周六乱弹 —— 三口气印度史(3.5)
  16. Android 实战项目汇总
  17. System.Windows.Forms.Cursors
  18. hdu 1232 并查集
  19. 【影像学基本知识】有关CT及MRI阅片常识
  20. 封闭类(Sealed Classes)

热门文章

  1. PLC远程监控与数据采集方案
  2. 如何将抖音快手短视频好看视频等任何直播平台视频转为MP4
  3. Cutting (暴力 + 滚动哈希判字符串匹配)
  4. MOGRT动态图标模板 爱情元素手绘爱心特效pr视频模板
  5. 22.IO引脚复用和映射原理与配置
  6. Mybatis映射详解
  7. substring从指定字符串开始截取
  8. jquery中的各种动画效果
  9. ZedBoard教程PL篇(2):按键检测
  10. GaN制备micro-led(一)