当前位置: 首页 > news >正文

pandas excel有多个工作表_Excel通用一键汇总指定文件夹里的多个工作表

给大家分享一个EXCEL一键汇总的小方法。通过VBA实现,按键可以放到工具栏。网上能找到许多类似汇总代码,如果不懂得话不太敢用,因为工作中用的比较多就完善了一下,通用性考虑得更多些,现在分享给大家。

在这之前先明确两个名词 “工作表”和“工作簿”,工作表这里指的是EXCEL文件,工作簿指的是工作表里的sheet1,sheet2之类的。

bbeb6ea95d1ab19cb53892d33790ea20.png

工作簿

97a7d5800d4bd8bdd9a6dbe6dfe52ca6.png

工作表

因为有的地方这两个是反过来的。

先看一下汇总效果

da0317179dc692a5cee737f3d26ed3de.gif

一键汇总“各村”文件夹里的Excel文件

然后是EXCEL设置

第一步:宏设置

c4d0982ea7159ab697fcd8cc21343331.gif

第二步:快捷键设置

dbff4e2ca9f6ca5ae9bde66fe8b81a4b.gif

TXT中的就是汇总代码,注意步骤不能漏。

代码如下:

Sub 工作表__总表()

Dim wb, wb1 As Workbook

Dim fso, ff, f As Object

Dim p As String

Dim a, b, c As Long

Dim d, e

Set wb1 = ActiveWorkbook

With Application.FileDialog(msoFileDialogFolderPicker)

.InitialFileName = ActiveWorkbook.Path

.Title = "请指定要汇总的文件夹"

If .Show = -1 Then

p = .SelectedItems(1)

Else

Exit Sub

End If

End With

c = Val(InputBox("请输入表头行数"))

If c = 0 Then

Exit Sub

End If

d = Timer

Application.ScreenUpdating = False

wb1.Sheets(1).Rows().ClearContents '清空目标表第一个工作簿

Set fso = CreateObject("scripting.filesystemobject")

Set ff = fso.getfolder(p)

For Each f In ff.Files '对指定文件夹循环每个文件

If Split(f.Name, ".")(UBound(Split(f.Name, "."))) Like "*xls*" Then '判断是不是Excel文件

Set wb = GetObject(f.Path)

If wb.Sheets(1).AutoFilterMode = True Then

wb.Sheets(1).Range("a" & 1 & ":z" & 65536).AutoFilter

End If

If wb1.Sheets(1).Cells(1, 1).Value = "" Then

wb.Sheets(1).UsedRange.Copy wb1.Sheets(1).Cells(1, 1)

'

Else

a = wb1.Sheets(1).Cells(65535, 1).End(xlUp).Row 'wb1目标工作表

b = wb.Sheets(1).Cells(65535, 1).End(xlUp).Row

wb.Sheets(1).Rows(c + 1 & ":" & b).Copy wb1.Sheets(1).Cells(a + 1, 1)

'

End If

wb.Close savechanges:=False

Set wb = Nothing

End If

Next

e = Timer - d

MsgBox "汇总成功,用时" & e & "秒"

Application.ScreenUpdating = True

End Sub

有些要注意的地方:1、要汇总的Excel文件都放到同一个文件夹里面,每个文件格式要一致,就是说表头要一致。2、每个表的最后一行数据的第一列不能为空,不然这行数据会统计不到。3、汇总文件放文件夹外面。

这次就到这,回头把总表按指定列分发工作表的代码发出来。

相关文章:

  • java nio 多路复用_【NIO系列】——之Reactor模型
  • 旧闻一则:7500万美元“小钱”阴谋 卓越网钻入亚马逊囊中
  • python检查并删掉有空值的表_为什么要用Python来处理数据分析
  • XP中被嵌入到可信进程(如:Explorer.exe)的木马dll文件
  • python 函数参数_python学习——理解python函数参数的传递
  • 红帽收购网景服务器软件 扩大开源产品阵容
  • linux查看文件大小以m为单位_102个Linux指令你都掌握了吗?
  • 韩国播放器Aquamp(已经汉化)
  • mysql输入密码后无反应_变频器通电后无反应,如何检查维修?
  • 鼎微系统刷机密码_Redme AC2100 刷机教程
  • Regsvr32在实际中的应用
  • fread读结构体返回值是0无错误_常见的C语言内存错误及对策
  • axios同步请求_Spring Boot+Vueaxios异步请求数据的12种操作(上篇)
  • Google的潜在大敌Vivisimo
  • c++程序判断该关系是否为函数与函数类型_【笔记】JavaScript 数据类型汇总
  • “大数据应用场景”之隔壁老王(连载四)
  • 30天自制操作系统-2
  • 78. Subsets
  • Asm.js的简单介绍
  • CentOS 7 防火墙操作
  • CSS盒模型深入
  • ECS应用管理最佳实践
  • express + mock 让前后台并行开发
  • git 常用命令
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • jdbc就是这么简单
  • MQ框架的比较
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • PAT A1120
  • Promise初体验
  • python学习笔记 - ThreadLocal
  • Spring框架之我见(三)——IOC、AOP
  • 从重复到重用
  • 多线程 start 和 run 方法到底有什么区别?
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 悄悄地说一个bug
  • 容器服务kubernetes弹性伸缩高级用法
  • 微信支付JSAPI,实测!终极方案
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 一个JAVA程序员成长之路分享
  • 原生Ajax
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • 国内开源镜像站点
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • #Lua:Lua调用C++生成的DLL库
  • $.ajax()
  • (C)一些题4
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (pojstep1.3.1)1017(构造法模拟)
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (算法)Game
  • (学习日记)2024.01.09
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)Oracle 9i 数据库设计指引全集(1)