Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2138|回复: 4

[已解决]将一个单元格中两个sheet按要求合并成一个sheet

[复制链接]
发表于 2022-1-26 10:51 | 显示全部楼层 |阅读模式
1学分
EXCEL表格内容大致格式如附件中所示:
表内有N个sheet,其中表格一与表格二前有相同的前五个字段,但可能存在空白行(表格一第3行、表格二第4行)或者不按要求填写的字段(表格二第五行)。
  • 现将表格一与表格二的前五个字段汇总成表格三内容所示情况(完整汇总表一表二所有内容),也可不带列头;
  • 如果1中情形难以实现,也可汇总成表格四所示情况(完整汇总表一表二所有内容),也可不带列头。


请各位老师指教




最佳答案
2022-1-26 10:51
Public Sub test()

Dim CountRow As Integer

Sheets(1).Activate
CountRow = Sheets(1).Cells(Rows.Count, 1).End(3).Row
Range(Cells(1, 1), Cells(CountRow, 5)).Copy Sheets(3).Cells(1, 1)

Sheets(2).Activate
CountRow = Cells(Rows.Count, 1).End(3).Row
Range(Cells(2, 1), Cells(CountRow, 5)).Copy Sheets(3).Cells(Cells(Rows.Count, 1).End(3).Row, 1)

End Sub

求助.rar

10.29 KB, 下载次数: 6

样表示例

最佳答案

查看完整内容

Public Sub test() Dim CountRow As Integer Sheets(1).Activate CountRow = Sheets(1).Cells(Rows.Count, 1).End(3).Row Range(Cells(1, 1), Cells(CountRow, 5)).Copy Sheets(3).Cells(1, 1) Sheets(2).Activate CountRow = Cells(Rows.Count, 1).End(3).Row Range(Cells(2, 1), Cells(CountRow, 5)).Copy Sheets(3).Cells(Cells(Rows.Count, 1).End(3).Row, 1) End Sub
发表于 2022-1-26 10:51 | 显示全部楼层    本楼为最佳答案   
Public Sub test()

Dim CountRow As Integer

Sheets(1).Activate
CountRow = Sheets(1).Cells(Rows.Count, 1).End(3).Row
Range(Cells(1, 1), Cells(CountRow, 5)).Copy Sheets(3).Cells(1, 1)

Sheets(2).Activate
CountRow = Cells(Rows.Count, 1).End(3).Row
Range(Cells(2, 1), Cells(CountRow, 5)).Copy Sheets(3).Cells(Cells(Rows.Count, 1).End(3).Row, 1)

End Sub
回复

使用道具 举报

 楼主| 发表于 2022-2-7 11:01 | 显示全部楼层
Yunyun123 发表于 2022-1-26 10:51
Public Sub test()

Dim CountRow As Integer

大佬你好,现在你给出的VBA代码调试出来了一些问题:当两张数据表的行数变化的时候,汇总表里,第二张表就会覆盖第一张表的数据,这个需要怎么解决?

回复

使用道具 举报

发表于 2022-2-7 14:30 | 显示全部楼层
乄蜗牛 发表于 2022-2-7 11:01
大佬你好,现在你给出的VBA代码调试出来了一些问题:当两张数据表的行数变化的时候,汇总表里,第二张表 ...

你说的是在表三里面,表二的内容覆盖了表一的内容吧?在算表三的行数时少了红色的内容,导致表三的行数用了表二的行数。

Public Sub test()
Dim CountRow As Integer
Sheets(1).Activate
CountRow = Sheets(1).Cells(Rows.Count, 1).End(3).Row
Range(Cells(1, 1), Cells(CountRow, 5)).Copy Sheets(3).Cells(1, 1)

Sheets(2).Activate
CountRow = Cells(Rows.Count, 1).End(3).Row
Range(Cells(2, 1), Cells(CountRow, 5)).Copy Sheets(3).Cells(Sheets(3).Cells(Rows.Count, 1).End(3).Row+1, 1)

End Sub
回复

使用道具 举报

 楼主| 发表于 2022-3-22 11:20 | 显示全部楼层
Yunyun123 发表于 2022-2-7 14:30
你说的是在表三里面,表二的内容覆盖了表一的内容吧?在算表三的行数时少了红色的内容,导致表三的行数用 ...

上一个问题解决了,现在又有个新情况:点一次运行,表2就在汇总表添加一次,这个能不能修改一下:无论按多少次运行,两表只汇总一次?


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 22:23 , Processed in 0.224970 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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