高手不敢当。将在下的笨办法详述如下:
(1)自己记录一个宏,完成对指定的一个book的sheet的指定行区域的复制,再选择指定的另一个book的sheet(目标)的指定单元(例如A2)进行粘贴,即完成了n个任务中的一个任务,并在A1单元中保存循环的次数值。
(2)然后编辑这个录制的宏。主要是形成循环。要解决的问题主要有4:
1、从第1个book的sheet到第n个book的循环:不存盘的关闭已被复制过了的book,打开下一个欲被复制的,于是刚打开的“下一个”就成为当前的活动的sheet了,满足录制宏所要求的待复制区域的条件,于是形成了打开不同表的循环。
2、选择目标book的(已被粘贴了数据的sheet)所在行,然后插入一个新行(将已粘贴区域推到下一行),就满足录制宏中目标区域的条件了,于是也形成了被粘贴的循环。
3、将n次循环套在录制宏的外面,即在录制宏的前后加(例如,do while),根据处理的n确定循环的次数,为每次要打开的表准备文件名(在do while前),例如
Dim wjm(1 to 5) as String
Wjm(1) = “b01”
Wjm(2) = “b02”
Wjm(3) = “b03”
Wjm(4) = “b04”
Wjm(5) = “b05”
在循环中依次打开不同的book。
4、循环结束以后,删除目标(粘贴数据)的表的第一行(空的),选择所有粘贴有数据的区域,然后按第一列递增排序(第1列中记录了粘贴的顺序)。于是,任务完成。
(3)这个办法虽然慢了点,看见屏幕不断的闪动(其实不慢),却是完全在重复手工的操作,而且只要录制了手工处理一张book的宏就可以处理指定n张book的数据。
(4)对于列或指定的区域都可如法炮制,条件是每次指定的区域都相同。
仅供参考。