(1)将“B2:F2”区域中每个单元格与其下面对应的一个单元格合并 (先用录制宏看看合并怎么写)
Dim rng as Range for each rng in range("B2:F2") rng.resize(2,1).merge next
(2)将一张表中的数据,按某列(如部门)拆分到以部门命名的各张表中去
for 表2 to 表.count (先将目标表除表头外清空
call qk
) for 行2 to 末行 判断:if 行值 = 表名 then (计算目标表有多少行k 将该行copy到目标表的
k+1
行) next next
练习1:写清空的宏 sub
qk
() .clearcontents
练习2:如何根据数据中的部门列,为每个部分新建一张表,并以公司名字命名?
步骤1:将数据拆分到多张表:双重循环:每个表格与表名循环判断是否相同,相同则复制粘贴;
步骤2:复制粘贴前需清空已有内容,因此写qk的宏,call qk
思考:上述方法运行速度太慢,若先筛选再copy,速度会大大提升,如何做?
步骤3:用autofilter重写步骤1。
加大难度
:上述步骤的前提是已建好表,现考虑自己
根据源表新建表
:
增加步骤:选择源表某列,依次循环单元格-->循环表名,看该单元格是否已有对应的表,以参数k记录-->若k表示无对应表,则add表
增加步骤:进一步地,p=InputBox("请确认你要按第几列拆分:"),以按需拆分(将range改为cells,注意要
dim p as integer
)
增加步骤:按需拆分数据前,要将已有的表格全部删除(注意去掉alert);结束时:msgbox "已处理完毕"
最后步骤:添加按钮,关联宏
注:有时不能定义inputbox的数据类型,希望输入的是整数,可用k= inputbox("请输入:") val(k)将k强制转换为整数。