. : : ClassiClub ForuM : : .

会员中心 论坛帮助 日历事件 标记论坛已读
返回   精品技术论坛 » 技术论坛 » 『软件使用』

『软件使用』: 电脑软件推荐, 电脑软件使用, 经验分享



发表新主题 回复
 
主题工具
netsonic
 
netsonic 的头像
热心会员
 
资 料:
注册日期: Feb 2002
帖子: 15,322 声望值: 5
精华: 1,解答: 23
#1 旧 2021-01-28, 22:21:18 默认 已解答: 【求助】Excel工作表合并
netsonic 当前离线  

网上有很多合并多个工作表到一个指定工作表的VBA代码,但一般都是按照内部Sheet名字排序:
代码:
Sub 合并当前工作簿下的所有工作表()

Application.ScreenUpdating = False

For j = 1 To Sheets.Count

If Sheets(j).Name <> ActiveSheet.Name Then

X = Range("A65536").End(xlUp).Row + 1

Sheets(j).UsedRange.Copy Cells(X, 1)

End If

Next

Range("B1").Select

Application.ScreenUpdating = True

MsgBox "当前工作簿下的全部工作表已经合并完毕!", vbInformation, "提示"

End Sub
但我想按照显示名字的顺序来合并,比如:Aqua(Sheet2),Cat(Sheet1),Boy(Sheet4),汇总顺序是:
Aqua,Cat,Boy


出售 JBL RF610, 支持蓝牙立体声 | iGo蓝牙鼠标
回复时引用此帖
最佳解答为:xust
Sub 合并当前工作簿下的所有工作表()

Dim arr
Dim SheetName As Variant

Application.ScreenUpdating = False

'按顺序给数组赋值
arr = Array("Aqua", "Cat", "Boy")

For Each SheetName In arr

If SheetName <> ActiveSheet.Name Then

X = Range("A65536").End(xlUp).Row + 1

Sheets(SheetName).UsedRange.Copy Cells(X, 1)

End If
Next

Range("B1").Select

Application.ScreenUpdating = True

MsgBox "当前工作簿下的全部工作表已经合并完毕!", vbInformation, "提示"

End Sub
namejm
 
namejm 的头像
超级会员
 
资 料:
注册日期: Apr 2009
帖子: 1,393 声望值: 3
精华: 21,解答: 84
#2 旧 2021-01-29, 09:42:48 默认
namejm 当前离线  

显示名字是指什么呢?
上面的代码是按照工作薄中工作表的名字显示的啊


TotalCommder、EveryThing、batch、AutoHotKey、EverEdit
精通Word、Excel、PPT的安装与卸载
熟练掌握VB、C++、SQL的拼读与缩写
回复时引用此帖
neoboy
 
neoboy 的头像
超级会员
 
资 料:
注册日期: Jan 2008
帖子: 1,362 声望值: 3
精华: 0,解答: 15
#3 旧 2021-01-29, 11:32:57 默认
neoboy 当前离线  

楼主的意思是说“按照自定义的顺序”来合并工作表?
建议将要合并的工作表先“依次”写到单元格区域中,然后用“For……Each”循环遍历该区域的每一个单元格,再按照单元格内容合并工作表,就可以了。


清风自来……
回复时引用此帖
xust
 
xust 的头像
热心会员
 
资 料:
注册日期: Feb 2001
帖子: 1,998 声望值: 7
精华: 0,解答: 30
#4 旧 2021-01-30, 16:21:09 默认
xust 当前离线  

Sub 合并当前工作簿下的所有工作表()

Dim arr
Dim SheetName As Variant

Application.ScreenUpdating = False

'按顺序给数组赋值
arr = Array("Aqua", "Cat", "Boy")

For Each SheetName In arr

If SheetName <> ActiveSheet.Name Then

X = Range("A65536").End(xlUp).Row + 1

Sheets(SheetName).UsedRange.Copy Cells(X, 1)

End If
Next

Range("B1").Select

Application.ScreenUpdating = True

MsgBox "当前工作簿下的全部工作表已经合并完毕!", vbInformation, "提示"

End Sub

此帖于 2021-01-30 18:47:58 被 xust 编辑. .
回复时引用此帖
发表新主题 回复

主题工具

论坛规则  发帖规则
不可以发表主题
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子
论坛启用 vB 代码
版面启用 表情符号
版面启用 [IMG] 代码
版面禁用 HTML 代码


所有时间均为北京时间, 现在的时间是 05:12:13.

本论坛带宽由迅通网络提供
SSL证书由TrustAsia提供

Copyright © 2000 - 2019 ClassiClub Forum All Rights Reserved.
粤ICP备09123456号