Excel 如何实现多Excel多个工作表合并成一个及数据动态引用

excel如何快速把多个工作表合并到一个excel表
  有这么一种情况,就是我们有很多张excel,而且excel表里面的公式基本一样,我们就想快速的把这些excel合并在一起,意思在合并在一个excel页面,这样可以方便我们分析和统计,那么excel如何快速把多个工作表合并到一个excel表?下面为大家介绍这种方法,希望能帮助到大家。  操作步骤:  1、原始数据所在工作簿包含多个格式相同的工作表,只不过每个工作表内容不同,比如说不同人名的工作表数据或者不同部门填写的数据。  2、在原始数据同目录下新建一个工作簿,建立两个工作表,名称分别为&首页&和&合并汇总表&。  3、按Alt+F11进入VBA代码编辑和调试界面。  4、根据下图提示,插入一个模块。  5、将下述代码粘贴到模块空白处:  复制代码  代码如下:  Sub CombineSheetsCells()  Dim wsNewWorksheet As Worksheet  Dim cel As Range  Dim DataSource, RowTitle, ColumnTitle, SourceDataRows, SourceDataColumns As Variant  Dim TitleRow, TitleColumn As Range  Dim Num As Integer  Dim DataRows As Long  DataRows = 1  Dim TitleArr()  Dim Choice  Dim MyName$, MyFileName$, ActiveSheetName$, AddressAll$, AddressRow$, AddressColumn$, FileDir$, DataSheet$, myDelimiter$  Dim n, i  n = 1  i = 1  Application.DisplayAlerts = False  Worksheets(&合并汇总表&).Delete  Set wsNewWorksheet = Worksheets.Add(, after:=Worksheets(Worksheets.Count))  wsNewWorksheet.Name = &合并汇总表&  MyFileName = Application.GetOpenFilename(&Excel工作薄 (*.xls*),*.xls*&)  If MyFileName = &False& Then  MsgBox &没有选择文件!请重新选择一个被合并文件!&, vbInformation, &取消&  Else  Workbooks.Open Filename:=MyFileName  Num = ActiveWorkbook.Sheets.Count  MyName = ActiveWorkbook.Name  Set DataSource = Application.InputBox(prompt:=&请选择要合并的数据区域:&, Type:=8)  AddressAll = DataSource.Address  ActiveWorkbook.ActiveSheet.Range(AddressAll).Select  SourceDataRows = Selection.Rows.Count  SourceDataColumns = Selection.Columns.Count  Application.ScreenUpdating = False  Application.EnableEvents = False  For i = 1 To Num  ActiveWorkbook.Sheets(i).Activate  ActiveWorkbook.Sheets(i).Range(AddressAll).Select  Selection.Copy  ActiveSheetName = ActiveWorkbook.ActiveSheet.Name  Workbooks(ThisWorkbook.Name).Activate  ActiveWorkbook.Sheets(&合并汇总表&).Select  ActiveWorkbook.Sheets(&合并汇总表&).Range(&A& & DataRows).Value = ActiveSheetName  ActiveWorkbook.Sheets(&合并汇总表&).Range(Cells(DataRows, 2), Cells(DataRows, 2)).Select  Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _  SkipBlanks:=False, Transpose:=False  Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _  False, Transpose:=False  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _  :=False, Transpose:=False  DataRows = DataRows + SourceDataRows  Workbooks(MyName).Activate  Next i  Application.ScreenUpdating = True  Application.EnableEvents = True  End If  Workbooks(MyName).Close  End Sub  6、在&首页&工作表中按下图示范插入一个窗体控件并指定宏为插入的代码名称。  7、点击&首页&工作表中插入的按钮,根据提示,浏览到原始数据工作簿。  8、下一步,用鼠标选择要合并的数据范围。  注意:每个工作表数据可能不一样,比如说有的是10行数据,有的是30行数据。在这里我们可以用鼠标选择任意工作表的一个较大范围,比如说A1:D100,保证比最多行数的工作表数据还多就可以,一会再删除空行。  9、点击确定按钮,待代码运行完毕后,所有的数据就都合并到了&合并汇总表&中。  注意:  1)A列的文本说明右侧的数据来自于原始数据表的哪个工作表;  2)数据之间会有一些空行,下面通过筛选删除。  10、选中全部数据区域,执行自动筛选。然后选择其中一个字段,选择&空白&和标题内容。  11、然后将筛选出来的无用行鼠标右键删除,再删除A列整列即可,完成效果如下图:  END  以上就是excel如何快速把多个工作表合并到一个excel表的方法,大家看明白了吗?希望能帮助到大家,谢谢大家阅读本篇文章!
最新更新栏目
您可能喜欢
大家都在搜&>&一个Excel中多个Sheet 数据合并
一个Excel中多个Sheet 数据合并
上传大小:91KB
参考 http://ask.csdn.net/questions/234908#answer_212705 Excel VBA 实现,几个Sheet中的数据合并到一个Sheet中。
综合评分:5
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有1条
很好的资源,谢谢
pingzi_1119
综合评分:
积分/C币:1
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
一个Excel中多个Sheet 数据合并
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*投诉人姓名:
*投诉人联系方式:
*版权证明:
*详细原因:
一个Excel中多个Sheet 数据合并将Excel中多个工作簿合并到一个表中,在以前经常需要考虑使用VBA,这对很多普通Excel用户来说很困难。但是,现在这个问题已经得到很好的解决,通过使用Excel2016的新功能Power Query(Excel2010或Excel2013可到微软官方下载相应的插件),只需要4步就搞定了,小白都能学会,而且数据是可以随和源表中的数据改变而一键刷新的,具体过程如下:第1步:从文件夹新建查询
第2步:用函数Excel.Workbook对工作簿进行解析如果希望只导入文件夹中的部分工作簿,可以先进行筛选。
第3步:展开所有工作簿的信息,将得到每个工作簿里的所有工作表的信息
第4步:展开所有工作表的数据明细如果希望只导入其中部分表,可以在展开表数据之前进行筛选。
通过以上简单的4个步骤,多个工作簿的多个工作表数据就已经汇总到一起了,如下图所示:
如果还需要对其中的数据进行其他的操作,比如删掉一些不需要列,添加一些自定义的新列,筛选出其中部分数据等等,也可以继续在Power Query里完成。这样,以后在新的数据出现时,可以直接在结果表里一键刷新,所有的处理过程就自动完成了,完全不需要再重复操作——实际上,Power Query不仅仅是一个数据汇总的功能,综合起来应用,可以达到从数据源到最终数据处理结果全过程的报表自动化!如下图所示:
我是大海,微软认证Excel专家,企业签约Power BI顾问 让我们一起学习,共同进步!特别声明:本文为网易自媒体平台“网易号”作者上传并发布,仅代表该作者观点。网易仅提供信息发布平台。
一键安装官方客户端
重大事件及时推送 阅读更流畅
http://dingyue.nosdn.127.net/Beez9RXMJxY7xqbPGFaOlQm7qcaoTrV3klcnvwILc4RxA0.jpeg如何将多个工作表的数据合并到一个工作表中_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,Excel多表合并之vba实现
保留列名,复制每一个excel里的数据,合并到一个excel
将要合并的文件放在同一文件夹下,复制过来就好(ps:最好不要直接操作原数据文件,避免操作失败,数据丢失)
在这个目录下创建一个&合并.xlsx&
双击打开&合并.xlsx&
同时按 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
Do While MyName && ""
If MyName && AWbName Then
Set Wb = Workbooks.Open(MyPath & "\" & MyName)
Num = Num + 1
With Workbooks(1).ActiveSheet
For G = 1 To Sheets.Count
If flag = 0 Then
Wb.Sheets(G).UsedRange.Copy .Cells(.Range("A65536").End(xlUp).Row , 1)
Wb.Sheets(G).Range("a2", Wb.Sheets(G).Cells.SpecialCells(xlCellTypeLastCell)).Copy .Cells(.Range("A65536").End(xlUp).Row + 1, 1)
WbN = WbN & Chr(13) & Wb.Name
Wb.Close False
MyName = Dir
Range("A1").Select
Application.ScreenUpdating = True
MsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示"
&合并多个excel每个excel有多个sheet,每个sheet单独合并,代码如下
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
Do While MyName && ""
If MyName && AWbName Then
Set Wb = Workbooks.Open(MyPath & "\" & MyName)
Num = Num + 1
For G = 1 To Wb.Sheets.Count
If flag = 0 Then
Sheets.Add after:=Sheets(Sheets.Count)
With ActiveSheet
.Name = Wb.Sheets(G).Name
Wb.Sheets(G).UsedRange.Copy .Cells(.Range("A65536").End(xlUp).Row, 1)
.UsedRange.Rows.AutoFit
.UsedRange.Columns.AutoFit
With Workbooks(1).Worksheets(G + 3)
' MsgBox .Name & "--" & Wb.Sheets(G).Name
If G = 2 Then
Wb.Sheets(G).Range("a2", Wb.Sheets(G).Cells.SpecialCells(xlCellTypeLastCell)).Copy .Cells(.Range("A65536").End(xlUp).Row + 2, 1)
Wb.Sheets(G).Range("a2", Wb.Sheets(G).Cells.SpecialCells(xlCellTypeLastCell)).Copy .Cells(.Range("A65536").End(xlUp).Row + 1, 1)
.UsedRange.Rows.AutoFit
.UsedRange.Columns.AutoFit
'flag 为0时候为第一个打开的excel,此时产生列,sheet名
WbN = WbN & Chr(13) & Wb.Name
Wb.Close False
' End With
MyName = Dir
Range("A1").Select
Application.ScreenUpdating = True
MsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示"
阅读(...) 评论()

我要回帖

更多关于 excel合并工作表 的文章

 

随机推荐