我想不用宏,通过函数插入空行把表一转换为表二的样式,包括空行使各班的行数一样,不知能否?请各位帮忙。
操作说明:
1、在D列每班第一行输入拟在其前插入的行数。
2、在表左侧插入空列。
3、在A3输入1,在A4输入公式“A3+D4+1”,向下复制到A13。
4、在新表A16、A17分别输入1、2,用选中A16:A17向用填充柄向下填充导A31。
5、自B16开始选中B16:C31,输入公式“=IF(ISERROR(VLOOKUP($A16,$A$3:$C$13,COLUMN(),)),"",VLOOKUP($A16,$A$3:$C$13,COLUMN(),))”,点CTRL+ENTER键,结果如黄色区域。
6、复制B16:C31,“选择性粘贴/数值/确定”,消除公式,最后将插入的A列和D列删除,结果如sheet2。
该方法不简捷,但聊胜于无,供参考吧。
★在D列标注插入空格数量:
1)在D5输入公式“=IF(B5<>B4,4-COUNTIF($B$3:$B$12,B4),"")”,向下复制到D13,结果如黄色区域。
2)复制D5:D13,“选择性粘贴/数值/确定”,消除公式。
3)选中D5:D13,“数据/分列/下一步/下一步/完成”,然后再实施上述第3步操作。
这个问题用公式不能处理。用数组公式模拟的话,数据量也不宜太大。最好的方法还是用宏。
下面是根据你的要求定制的宏:
Option Explicit
Sub 插入空行()
Application。
ScreenUpdating = False
Dim k%, i%
k = 3
With ActiveSheet
Do While k 0 And IsNumeric(。 Cells(k, 4)) Then
For i = 1 To 。
Cells(k, 4)
。Cells(k, 4)。EntireRow。Insert Shift:=xlShiftDown
k = k + 1
Next i
End If
k = k + 1
Loop
End With
Application。
ScreenUpdating = True
End Sub
具体的运行效果,看附件!。