VBA 汇总指定文件夹下的Excel文件数据
案列:现需要按条件汇总一个文件夹下的多个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文件数据相关推荐
- Python复制文件夹下的excel文件的指定列
主要实现功能: 批量操作一个文件夹下的Excel文件 对该文件夹下的Excel同等操作 复制特定列到新建Excel文件 完成单元格获取文件名的操作 python操作excel详细 # -*- code ...
- 手把手教你用Python批量实现文件夹下所有Excel文件的第二张表合并
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 怀君属秋夜,散步咏凉天. 大家好, ...
- pandas合并文件夹下的excel文件
研究背景: 由于工作中每天需要计算遗留工单,但工单创建的时间不确定,需要导出近半年的数据进行筛选,而系统一次只能到处一个月的数据,格式为excel格式文件,文件大学为10MB左右,每个文件数据量2万行 ...
- python遍历文件夹下所有excel文件_读取某文件夹下所有excel文件 python
import os import pandas as pd from sklearn import linear_model path = r'D:\新数据\每日收益率' filenames = os ...
- 使用VBA汇总文件夹下所有Excel文件
环境 VBA 文件夹下有13个Excel,结构相同 所有Excel的第1个表为"汇总"或者"目录",其他表为具体的内容 所有汇总表的结构一样,从第3行开始为内容 ...
- python批量读取文件夹中的所有excel文件-python遍历文件夹下所有excel文件
大数据处理经常要用到一堆表格,然后需要把数据导入一个list中进行各种算法分析,简单讲一下自己的做法: 1.如何读取excel文件 网上的版本很多,在xlrd模块基础上,找到一些源码: import ...
- Python 读取文件夹下的Excel文件导入到数据库
目录 1.代码 2.sql语句中格式错误 3.数据库抛出异常:Incorrect string value: '\xE7\xA8\x8B\xE5\xBA\x8F...' for column '字段名 ...
- matlab保存并关闭excel文件夹,[转载]Matlab批量操作目标文件夹下的Excel文件
本程序主要使matlab批量操作Excel表,其中用到了parfor并行计算加快处理速度.相同效果,速度上和Excel vba 是有差距的. %%%%%%%%%%%%%%%%%%%%%%%%%%%%% ...
- python遍历文件夹下所有excel文件_python遍历文件夹下所有excel文件
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
最新文章
- C++中fstream的使用
- 多GPU真的能加速吗?
- 【搜索引擎Jediael开发笔记】v0.1完整代码
- [转载]Unix 高手的另外 10 个习惯
- MySQL中的UNIX_TIMESTAMP函数使用总结
- Java成员的访问权限控制
- spring中MessageSource的配置使用方法2--ReloadableResourceBundleMessageSource
- nginx编译安装和yum安装那个更好?
- 图像算法常用图片Lena
- 数据库常见导入文件方法
- 全面拆解携程云原生实践,打造智能弹性的云端酒店直连系统!
- 新增电子信息专硕,中外合作办学!南京信息工程大学
- 2018安徽省考c语言笔试答案,2018年安徽公务员考试行测真题解读
- 第四周项目3--单链表应用之逆置
- OSChina 周六乱弹 —— 三口气印度史(3.5)
- Android 实战项目汇总
- System.Windows.Forms.Cursors
- hdu 1232 并查集
- 【影像学基本知识】有关CT及MRI阅片常识
- 封闭类(Sealed Classes)