Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: 小白白白白

[已解决]合并sheet 页

[复制链接]
 楼主| 发表于 2015-10-16 11:40 | 显示全部楼层
小白白白白 发表于 2015-10-16 11:37
可不可以指定名字呢  因为以后合并的工作表名字有规律的 都是“ADDED_xxxx”
合并到“ADDED_TOTAL”

要合并的表在中间 为第3个 第4个 合并到5个   后面也还有其他的表 前面也有
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

 楼主| 发表于 2015-10-16 12:10 | 显示全部楼层
grf1973 发表于 2015-10-16 11:32
那你要说一下要合并工作表名的特征,比如带个“月"字的。。。。。。

名字特征是“ADDED_xxxx”合并到ADDED_TOTAL
回复

使用道具 举报

 楼主| 发表于 2015-10-16 12:52 | 显示全部楼层
小白白白白 发表于 2015-10-16 12:10
名字特征是“ADDED_xxxx”合并到ADDED_TOTAL

这就是我要操作的sheet 直接发给你吧 我看我描述总是有漏洞  就是把那个ADDED_201507 和 ADDED_201508 合并到 ADDED_TOTAL   以后可能还要加上ADDED_201509  ADDED_201510  所以最好不要写死

求助11.rar

480.09 KB, 下载次数: 1

回复

使用道具 举报

 楼主| 发表于 2015-10-16 14:08 | 显示全部楼层
grf1973 发表于 2015-10-16 11:33
或者是第1个工作表到第5个工作表,第4句可以改成
If Sh.index>=1 and sh.index

人呢?{:281:}
回复

使用道具 举报

发表于 2015-10-16 16:52 | 显示全部楼层    本楼为最佳答案   
Sub 合并()
    Dim Sh As Worksheet     '定义Sh为工作表类型的变量
    For Each Sh In Worksheets        '遍历所有工作表,设为Sh
        If InStr(Sh.Name, "ADDED") > 0 And Sh.Name <> ActiveSheet.Name Then  '如果工作表Sh的名字中包含“ADDED”字,并且不等于当前工作表名
            r1 = Sh.[a65536].End(3).row        '找到工作表Sh的A列有数据的最大行(用以确定要复制的数据区域)
            If r1 > 1 Then     '如果最大行大于1(表示工作内有数据)
                r = [b65536].End(3).row + 1       '当前表的A列最大行+1,设为r(数据粘贴的位置)
                Sh.Range("a2:L" & r1).Copy Cells(r, 3)        '工作表Sh有数据部分复制并粘贴到当前表的r行B列
                Cells(r, 2).Resize(r1 - 1, 1).Value = Sh.Name       '当前工作表的A列填充工作表Sh的名称(月份)
            End If
        End If
    Next       '找到下一张工作表Sh
End Sub
回复

使用道具 举报

发表于 2015-10-16 16:53 | 显示全部楼层
请看附件。

求助11.rar

494.57 KB, 下载次数: 21

回复

使用道具 举报

 楼主| 发表于 2015-10-16 17:10 | 显示全部楼层
grf1973 发表于 2015-10-16 16:53
请看附件。

试了  很棒!!谢谢 刚学习VBA在探索中
回复

使用道具 举报

 楼主| 发表于 2015-10-19 09:30 | 显示全部楼层
grf1973 发表于 2015-10-16 16:53
请看附件。

不好意思再打扰你  但是我试过之后还是有问题  还是总是合并到最后一个sheet页!!  怎么办{:281:}
回复

使用道具 举报

发表于 2015-10-19 09:53 | 显示全部楼层
原本是按钮执行的,需要把当前工作表定为那个Total。如果想保险一点,加一句话就行了。
Sub 合并()
    Dim Sh As Worksheet     '定义Sh为工作表类型的变量
    Worksheets("ADDED_TOTAL").Activate
    For Each Sh In Worksheets        '遍历所有工作表,设为Sh
        If InStr(Sh.Name, "ADDED") > 0 And Sh.Name <> ActiveSheet.Name Then  '如果工作表Sh的名字中包含“ADDED”字,并且不等于当前工作表名
            r1 = Sh.[a65536].End(3).row        '找到工作表Sh的A列有数据的最大行(用以确定要复制的数据区域)
            If r1 > 1 Then     '如果最大行大于1(表示工作内有数据)
                r = [b65536].End(3).row + 1       '当前表的A列最大行+1,设为r(数据粘贴的位置)
                Sh.Range("a2:L" & r1).Copy Cells(r, 3)        '工作表Sh有数据部分复制并粘贴到当前表的r行B列
                Cells(r, 2).Resize(r1 - 1, 1).Value = Sh.Name       '当前工作表的A列填充工作表Sh的名称(月份)
            End If
        End If
    Next       '找到下一张工作表Sh
End Sub
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-7 11:22 , Processed in 0.365408 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表