|
Sub test2()
Sheet2.Activate'激活sheet2工作表
Sheet2.UsedRange.Delete'删除曾经编辑过的单元格。
Application.ScreenUpdating = False'关闭屏幕更新
Dim rng As Range, cl As Range, rg As Range, arr, brr'定义变量
Dim a&, b&, i&, j&, k&, m&, n&, r&, s
r = Sheet3.Cells(Rows.Count, 6).End(3).Row'定义行号。
arr = Sheet3.Range("a2:h" & r).Value'将A-H部分区域转为数组
Set rng = Sheet5.[a1:c11]'定义区域
Set cl = rng.EntireColumn'定义区域的列
Set rg = rng.EntireRow'定义区域的行
brr = Sheet5.[a1:c11].Value'将sheet5的区域a1:c11转为数组
s = InputBox("请输入水平方向几连张", "系统提示", 5)'定义用户输入框
If IsNumeric(s) Then'如果用户输入的是数值
For i = 1 To UBound(arr)'UBound表示的是数组的上限。这里应该是行数
For j = 1 To arr(i, 6)'获取H列第i行的值
m = m + 1'自增变量
k = Application.Ceiling(m / s, 1)'取整
n = IIf(m Mod s = 0, s, m Mod s)'如果m能被s整除,则取s,否则就取m除以s后的余数。应该是用于将剩余数据按固定格式分割。比如,s=18,m=4,应该是4,4,4,4,2
a = k * 11 - 10'定义变量
b = n * 3 - 2
brr(3, 2) = arr(i, 2)'数组赋值
brr(4, 2) = arr(i, 4)
brr(5, 2) = arr(i, 5)
brr(6, 2) = arr(i, 7)
brr(7, 2) = arr(i, 8)
brr(10, 1) = arr(i, 1)
If k = 1 Then cl.Copy Cells(a, b)'将整行数据复制到指定区域
If n = 1 Then rg.Copy Cells(a, b)将整列数据复制到指定区域
rng.Copy Cells(a, b)'将整个区域进行复制
Cells(a, b).Resize(11, 3) = brr'调整区域为11行3列
Next
Next
End If
Application.ScreenUpdating = True'更新屏幕
End Sub
|
|