如图:有两个区域,区域(I1:AL6)、区域(B9:H38),这两个区域内单元格数值均由函数获得,粘贴时需要用“选择性粘贴”。黄色底纹范围为1-30,且一一对应。区域(I...
如图:有两个区域,区域(I1:AL6)、区域(B9:H38),这两个区域内单元格数值均由函数获得,粘贴时需要用“选择性粘贴”。黄色底纹范围为1-30,且一一对应。区域(I1:AL6)内的数字只会以整列的形式出现,即K列,如果K1有数字,则K1-K6均有数字;若L1为空白,则L1-L6均为空白。左侧9-38行,若B列有数字,则B-H列均会有数字。我想将上面区域的非空数字复制粘贴到另一张表里面,按顺序排列紧凑,同时左侧相对应的单元格的数字也复制粘贴在同一张表里面,如何通过宏实现?效果如图(蓝底区域),请叫大神指导。对了,运行一次宏之后,第二次运行宏的时候,复制粘贴的内容不要将上一次的内容覆盖,而是按顺序紧凑的排列在一起,求哪位高高手帮忙,很急。多谢了
set orirg=range("l13")'基准单元格
application.calculation = xlmanual'因为表内公式多,为加快处理速度,暂停计算
for each bb in range("i3:al3")'循环检查非空区域
if len(bb)>0 then
rowpt=worksheetfunction.counta(range("l14:l50000"))'输出行定位
bb.offset(-1,0).resize(6,1).copy
orirg.offset(rowpt,9).pastespecial paste:=xlvalues, transpose:=true'转置粘贴数值
orirg.offset(rowpt,0).resize(1,7).value=range("b8:h8").offset(bb.value,1).value'直接赋值
endif
next i
application.calculation = xlautomatic
set orirg=nothing
所有的过程都以 Sub ***() 开头,End Sub结尾。
bb.offset(-1,0).resize(6,1).copy
改为
bb.offset(-2,0).resize(6,1).copy
这个过程就是一次做完的【for each bb in range("i3:al3")】就是检查i3:al3区域
刚才试过了,可行。现在关键是我希望结果出现在另一张工作表中(可以是任何位置),比如“sheet1”中,该如何修改。再就是,试的过程中,发现有时正常有时不正常,我将I13改成I33了。总体来说还是可行的。
完整结果如下:
Sub Macro1()
set orirg=sheets(a).range(b)'注:a填表单名,如"Sheet1",b填单元地址,如"a1"
application.calculation = xlmanual
for each bb in range("i3:al3")
if len(bb)>0 then
rowpt=worksheetfunction.counta(orirg.offset(1,0).resize(30000,1))'行定位
bb.offset(-2,0).resize(6,1).copy
range("u14").pastespecial paste:=xlvalues, transpose:=true'转置粘贴
orirg.offset(rowpt,9).resize(1,6).value=range("u14:z14").value'直接赋值
orirg.offset(rowpt,0).resize(1,7).value=range("b8:h8").offset(bb.value,1).value
endif
next bb
range("u14:z14").clearcontents
application.calculation = xlautomatic
set orirg=nothing
End Sub