使用excel批量合并子文件内容到一个文件内

说到excel大家应该都不陌生,也都对它强大的功能有所耳闻,自己虽然已经用了好多年,但也只能算入门水平,比如今天遇到的一个实际情况就完全不知道怎么处理,上网查阅资料之后才解决,这里记录一下。

实际情况就是:我有很多个小的excel文件,每个文件只有两行内容,且这些文件的列目录都是一样的,也就是说我需要把这几十行内容整理到一张表上。

方法一:直接复制粘贴

几十个文件倒是不算多,但这也不是一个通用的解决方法啊,如果文件再多岂不要累死。

方法二:用VBA宏解决:

求助百度之后果然找到了类似问题的解决方法和现成的一段代码:

首先把所有的子文件全部放在一个文件夹内,然后在同一个文件夹里新建一个空的excel,作为整理信息的总表,打开这个excel之后按alt+f11打开宏函数面板,如图

然后把下面一段代码拷贝过去:(经测试可直接使用)

Sub 合并当前目录下所有工作簿的全部工作表()

Dim MyPath, MyName, AWbName

Dim Wb As Workbook, WbN As String

Dim G As Long

Dim Num As Long

Dim BOX As String

Application.ScreenUpdating = False

MyPath = ActiveWorkbook.Path

MyName = Dir(MyPath & “\” & “*.xls”)

AWbName = ActiveWorkbook.Name

Num = 0

Do While MyName <> “”

If MyName <> AWbName Then

Set Wb = Workbooks.Open(MyPath & “\” & MyName)

Num = Num + 1

With Workbooks(1).ActiveSheet

.Cells(.Range(“A65536″).End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) – 4)

For G = 1 To Sheets.Count

Wb.Sheets(G).UsedRange.Copy .Cells(.Range(“A65536″).End(xlUp).Row + 1, 1)

Next

WbN = WbN & Chr(13) & Wb.Name

Wb.Close False

End With

End If

MyName = Dir

Loop

Range(“A1″).Select

Application.ScreenUpdating = True

MsgBox “共合并了” & Num & “个工作薄下的全部工作表。如下:” & Chr(13) & WbN, vbInformation, “提示”

End Sub

具体代码内容我就不详细讲了,还是不难看懂的,拷贝之后点击文档上面的小绿色三角形开始运行,稍等片刻后,返回工作表可以看到资料都被整理进来了。但整理之后还有点小问题要处理,整理进来的文件应该是这样:

就是每个文件的文件名、标题、内容、以及空行都被整理进来了,而我们最后应该只需要一行的标题及每行的数据就可以了,我们观察其中每一个有内容的行号都是mod4余3的,因此只要我们把这些行筛选出来就行了,那么怎么筛选呢?我们先在最前面新建一列内容,比如为列A,在A1的函数输入框中输入=MOD(ROW(),4)(这里可以根据自己实际情况更改)然后拖动使整列有效,这样第一列就全是0-3的数字,如图:

最后只需用审阅里面的筛选功能,把不需要的行全选中删除就好了,至此我们就完美解决了批量合并表的问题。

同步发表于个人博客: xge技术博客

时间: 2024-10-20 21:31:17

使用excel批量合并子文件内容到一个文件内的相关文章

利用python脚本把多个文件内容放到一个文件内

说明:path是你所有文件存放的目录,先去循环所有的文件内容,然后写入到test.xls文件里 import os path = 'file' # path=r'D:\file' for filename in os.listdir(path): fullname = os.path.join(path, filename) # 如果是linux系统导出来的数据用utf-8,如果是windows则用gbk f1 = open(fullname, encoding='gbk') for i in

MATLAB遍历子文件夹及其下文件

MATLAB遍历子文件夹及其下文件 以前从未遇到过用MATLAB批处理文件的情况,此次项目需要批量将二进制数据文件导入matlab进行svm分类,现将matlab遍历子文件夹及其文件的方法记录下来. 文件目录结构 /maindir |-- subdir1 |-- datafile1.dat |-- datafile2.dat |-- subdir2 |-- datafiel3.dat |-- datafiel4.dat |-- subdir3 |-- datafile5.dat |-- data

linux中合并多个文件内容到一个文件的例子

尊敬的用户您好,从即日起 导入 及 导出 功能已经下线,请到阿里云官方数据库管理平台 iDB Cloud 使用该功能! 继续在 iDB Cloud 中发现导出的数据库文件是按照每个表生成的SQL文件,这么多单独的文件再导入到其他数据库中是个麻烦事,需要将所有的SQL文件合并为一个完整的SQL文件.有了这个思路,决定寻找方法来实现. Windows 中实现合并多个文件内容到一个文件中 代码如下 复制代码 (www.111cn.net)copy *.sql MERGE.sql Linux 或 类Un

JAVA之File类 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件

package ioTest.io3; import java.io.File; /* * 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件 . * 并将文件夹和文件名称打印在控制台上面.并且要显示文件目录的层级 * 注:运用了递归的算法. */ public class FileDemo3 { public static void main(String[] args) { File dir=new File("F:\\黑马学习日程\\"); //File dir=new Fi

列出某文件夹及其子文件夹下面的文件,并可根据扩展名过滤

/** * 列出某文件夹及其子文件夹下面的文件,并可根据扩展名过滤 * * @param path */ public static void list(File path) { if (!path.exists()) { System.out.println("文件名称不存在!"); } else { if (path.isFile()) { if (path.getName().toLowerCase().endsWith(".pdf") || path.get

Java 遍历指定文件夹及子文件夹下的文件

/** * 遍历指定文件夹及子文件夹下的文件 * * @author testcs_dn * @date 2014年12月12日下午2:33:49 * @param file 要遍历的指定文件夹 * @param collector 符合条件的结果加入到此List<File>中 * @param pathInclude 路径中包括指定的字符串 * @param fileNameInclude 文件名称(不包括扩展名)中包括指定的字符串 * @param extnEquals 文件扩展名为指定字

Java中新建子文件夹和新建文件

File file = new File("地址"); file.mkdirs(); //新建文件夹,当没有父文件夹时,但是不会自动创建父文件夹 file.mkdirs(); //新建文件夹,当没有父文件夹时,但是会创建父文件夹, //如果文件不存在,则创建一个新文件if(!file.isFile()){    file.createNewFile();} Java中新建子文件夹和新建文件

dos移动一个文件内的所有内容到另一个文件

1)移动一个文件内的所有内容到另一个文件(不包含该目录) 比如:把文件夹1 里面的所有文件(包含子目录)全部移动到与1同级目录的文件夹2中: cd 1 for /f "tokens=* delims= " %a in ('dir /a /b') do (move %a ..\2)

java 打印流 递归复制子文件子文件夹 不同编码文件复制到同一文件中 序列化流反序列化流

package com.swift.jinjie; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.PrintStream; /*从键盘输入一个文件夹路径,利用打印流将该文件夹下的所有文件(包括子文件夹)复制到D盘下temp文件夹下.*/ public class PrintAllT