Excel精英培训网

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

[已解决]在线求助!!急!急! 改代码

[复制链接]
发表于 2014-5-7 10:47 | 显示全部楼层 |阅读模式
本帖最后由 文轩馨婷 于 2014-5-7 12:39 编辑

原代码如下——如何更改为:1.从各表复制到总表(即当前表)的第一列为文本格式(因为其它各表第一列是公式——即附件图片的“部门”列);2.当各表需引用的数据为空白时(空白处有存在公式)不复制到汇总表!
不知有没有说清楚!{:251:}


现已增加附件(最终效果图也在附件)


Sub 汇总各表数据()
Dim N As Integer, M As Integer, A As Integer

For N = 1 To 7       '要合并的工作表编号

    M = Sheets(N).[A65536].End(xlUp).Row   'A列的最后一个单元格所在的行号

    b = [A65536].End(xlUp).Row + 1    '目标位置空1行

    Sheets(N).Rows(2 & ":" & M).Copy    ' 从第2行开始复制各表数据到新工作台表中

    Cells(b, 1).Select

    ActiveSheet.Paste

    Next N

End Sub








最佳答案
2014-5-7 12:13
主要是用End(xlup)取最大行时,只要有公式,系统就认为是非空单元格。所以代码中加了6--8句,把A列有公式但无数值的行去掉。请看附件。
汇总表格式.jpg
最终效果图.jpg

汇总各表.zip

85.92 KB, 下载次数: 5

发表于 2014-5-7 11:00 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2014-5-7 11:18 | 显示全部楼层
我心飞翔410 发表于 2014-5-7 11:00
最好来个附件

老师,增加附件了!

劳烦帮忙看看!

先谢过了!
回复

使用道具 举报

发表于 2014-5-7 11:25 | 显示全部楼层
只复制数值不好吗?
  1. Sub 汇总各表数据()
  2. Dim N As Integer, M As Integer, A As Integer
  3. For N = 1 To 7       '要合并的工作表编号
  4.     M = Sheets(N).[A65536].End(xlUp).Row   'A列的最后一个单元格所在的行号
  5.     b = [A65536].End(xlUp).Row + 1    '目标位置空1行
  6.     ActiveSheet.Rows(b & ":" & (b + M - 2)).Value = Sheets(N).Rows(2 & ":" & M).Value    ' 从第2行开始复制各表数据到新工作台表中
  7. Next N
复制代码
回复

使用道具 举报

 楼主| 发表于 2014-5-7 11:29 | 显示全部楼层
grf1973 发表于 2014-5-7 11:25
只复制数值不好吗?

不行!

在其它表中有合并单元格项!
回复

使用道具 举报

发表于 2014-5-7 11:30 | 显示全部楼层
或者原代码直接改成Cells(b,1).PasteSpecial Paste:=xlPasteValues
回复

使用道具 举报

发表于 2014-5-7 11:36 | 显示全部楼层
我试了下可以的呀。

汇总各表.rar

52.8 KB, 下载次数: 1

回复

使用道具 举报

 楼主| 发表于 2014-5-7 11:39 | 显示全部楼层
grf1973 发表于 2014-5-7 11:30
或者原代码直接改成Cells(b,1).PasteSpecial Paste:=xlPasteValues

老师,
  还是不行,虽合并单元格项存在,但第一列依然有公式而且中间有很多空白单元格项(如附件图)
fujian.jpg
回复

使用道具 举报

发表于 2014-5-7 11:43 | 显示全部楼层
  1. Sub 汇总各表数据()
  2. Dim N As Integer, M As Integer, A As Integer
  3. Rows("2:65536").Delete
  4. For N = 1 To 7       '要合并的工作表编号

  5.     M = Sheets(N).[A65536].End(xlUp).Row   'A列的最后一个单元格所在的行号

  6.     b = [A65536].End(xlUp).Row + 1    '目标位置空1行

  7.     Sheets(N).Rows(2 & ":" & M).Copy    ' 从第2行开始复制各表数据到新工作台表中

  8.     Cells(b, 1).PasteSpecial Paste:=xlPasteValues
  9.     Cells(b, 1).PasteSpecial Paste:=xlPasteFormats
  10.     Next N

  11. End Sub
复制代码
这样可以了,不过最后要加一段删除空行的语句。
回复

使用道具 举报

 楼主| 发表于 2014-5-7 11:50 | 显示全部楼层
grf1973 发表于 2014-5-7 11:36
我试了下可以的呀。

可能是我表述的不太清楚

其实我想要的就如附件效果
最终效果图2.jpg
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 06:08 , Processed in 0.340169 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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