- 积分
- 4144
好友
记录
日志
相册
回帖0
主题
分享
精华
威望 旺
钢镚 分
推荐 人
|
010.一键汇总各分表数据成总表【不保留分表格式】
" H8 U: \. |8 j# O+ C
, X0 d; U3 @: E/ G; [7 f& D" J6 K) t
Sub CollectData()
. f% U) ? Q% b, u9 Q: S Dim Sht As Worksheet, rng As Range, k&, n&" E$ i% T' _9 z0 R( [" M4 w; B
Application.ScreenUpdating = False
$ ^6 v& }4 @0 J3 i2 s+ x+ k, ~ '取消屏幕更新
/ W0 G4 ?# \: V) s1 @1 V n = Val(InputBox("请输入标题的行数", "提醒"))6 ~' F. M0 H7 q9 _/ l
If n < 0 Then MsgBox "标题行数不能为负数。", 64, "提示": Exit Sub
- F. S9 o8 |9 _" X '取得用户输入的标题行数,如果为负数,退出程序* U) b8 B7 t$ _/ S
Cells.ClearContents" `0 g3 d* J7 t4 F- p
'清空当前表数据
$ h+ X i( w, o5 t- M. ^2 h ^' x, D5 y For Each Sht In Worksheets
1 g3 @" a! t/ O9 T, r8 i4 ? '遍历工作表
4 C# ?8 F& R/ }; \! ` If Sht.Name <> ActiveSheet.Name Then" K+ G6 q7 M6 }/ x5 Y/ F
'如果工作表名称不等于当前表名则进行汇总动作……. O C! j, c. ~2 S! @. l. J
Set rng = Sht.UsedRange6 o+ ?/ I. k. x5 W
'定义rng为表格已用区域
; j. `& \, w- z, p k = k + 1
& H, p/ J1 u n3 Z6 l0 [% L '累计K值% T* m; |, u+ K2 Y5 A
If k = 1 Then. U) e" Z% k! f2 Y
'如果是首个表格,则K为1,则把标题行一起复制到汇总表
$ d b/ J; L5 [ h5 b) a rng.Copy) A9 ]7 V* I" m' \' e% G2 k
[a1].PasteSpecial Paste:=xlPasteValues '仅粘贴数值
; ?5 q; s3 k5 Q: v% X Else
$ n5 [1 K# C8 [; }: V '否则,扣除标题行后再复制黏贴到总表,只黏贴数值" O! A( Z( n7 t0 y
rng.Offset(n).Copy! P& T* p& m3 y5 i
Cells(ActiveSheet.UsedRange.Rows.Count + 1, 1).PasteSpecial Paste:=xlPasteValues
* i3 C5 c4 g( `9 s+ E, A End If
4 @; ~/ b: ^& k2 \8 {5 G! f End If
. f/ {: S1 Y9 J$ ?. ] Next
: L0 z7 p0 h2 f, ^7 H3 A [a1].Activate) [0 f N( I' Y. D p/ V' s
Application.ScreenUpdating = True '恢复屏幕刷新
: A( T$ U; d+ w4 OEnd Sub |
|