Excel精英培训网

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

[VBA] 037-多表汇总至总表-疑难千寻千解丛书(VBA)

[复制链接]
发表于 2011-2-22 12:48 | 显示全部楼层 |阅读模式
ET疑难千寻千解丛书之EXCEL2010编程与实践
罗刚君 章兰新 黄朝阳 编著

疑难37
如何将所有表中查找的完成数汇总到总表
如图所示包括多个组别的目标产量与实际产量,如何实现将所有组别中完成目标者汇总到总表中?
è 解决方案
利用循环对“总表”以外的每个工作表进行数据查找。查找前,在D列创建一个辅助区,利用公式“=IF(B2-C2=0,0/0,"")”将所有完成目标者标识一个错误值,再利用SpecialCells方法定位所有错误值所在行,并复制到“总表”中,最后清除所有辅助区。
í 操作方法
步骤1
按【Alt+F11】组合键打开VBE窗口。
步骤2
选择菜单“插入”→“模块”,并输入以下代码:

  1. Sub 多表查找并汇总()
  2.   Dim sht As Worksheet, arr(), i As Integer
  3.   On Error Resume Next '验证是否存在“总表”
  4.   Set sht = Sheets("总表")
  5.   If Err <> 0 Then  '如果不存在“总表”则在最末处添加一个总表
  6. Sheets.Add , after:=Sheets(Sheets.Count)
  7. Sheets(Sheets.Count).Name = "总表"
  8.   Else  '否则清除总表的所有数据
  9.     sht.Cells.Clear
  10.   End If
  11.   Sheets(1).Rows(1).Copy sht.[a1]  '将标题行复制到总表
  12.   For Each sht In Sheets  '遍历所有工作表
  13.     If sht.Name <> "总表" Then  '仅对总表以外的表进行操作
  14.       With sht.Range(sht.[D2], sht.Cells(Rows.Count, 3).End(xlUp).Offset
  15.       (0, 1))  '建立辅助区
  16.         .FormulaR1C1 = "=IF(RC[-2]-RC[-1]=0,0/0,"""")"
  17.         '在辅助区设置公式,当完成值等于目标值时公式返回错误
  18.         '定位D列所有错误单元格(即已完成的),并将整行复制到总表中第一个空行
  19.         .SpecialCells(xlCellTypeFormulas, 16).EntireRow.Copy Sheets("总表
  20.         ").Cells(Sheets("总表").Cells(Rows.Count, 1).End(xlUp).Row + 1, 1)
  21.         .Clear  '清除辅助区
  22.       End With
  23.     End If
  24.   Next
  25.   Sheets("总表").Columns(4).Clear  '清除公式所在列
  26. End Sub
复制代码
步骤3
光标置于代码中任意位置,并按【F5】键执行,程序将对每个表中已完成者信息合并到“总表”中,如所示。

=============================
上摘自《EXCEL2010编程与实践》

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-2-22 12:58 | 显示全部楼层
回复

使用道具 举报

发表于 2011-2-22 12:59 | 显示全部楼层
很难,我不会,一看就头疼。问题是,我想学会,请问小妖老师,该从何学起?
回复

使用道具 举报

发表于 2011-8-28 11:26 | 显示全部楼层
学习了,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-7 09:20 , Processed in 0.240606 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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