|
本帖最后由 superle! 于 2015-1-22 10:19 编辑
J列为数据源从J2开始到J很多行,黄色背景为VBA实现的填充
以J36为准,J列最下面有值的为准(红色背景),下面的值可能会增加或是减少。可能会增加到5千行,所以要考虑。
从AB2的值开始填充为隔0,取J列的J2,J3,J4,J5,J6,J7,J8.。。。。J35的值。
从AC2的值开始填充为隔1,取J列的J2,J4,J6,J8,J10,J12,J14。。。J34的值。
AD2的值开始填充为隔2的值。取J列的J5,J9,J13的值。
注意的是,一定要从J36的值为准,J列往上取隔1到隔12的值,然后把取到的最后一个值填充到第二行1个。
执行VBA按钮时不清除黄色左右列的数据 。
黄色背景已经都模拟出来了。
superle! 发表于 2015-1-21 17:25
我说得可能有点误解了。
AB:AN列是随着J列的增加数值也会增加的,不是最多在35行内的。
已按要求修改,你测试下 - Sub t()
- Dim i&, j&, Lr&, n&, m&
- Dim arr, brr
- arr = Range("J2:J" & Cells(Rows.Count, "J").End(3).Row - 1)
- Lr = UBound(arr) '数组数
- ReDim brr(1 To Lr, 1 To 13)
- For j = 1 To 13 '隔0到隔12
- n = Lr \ j '计算数值的个数
- m = Lr + 1 - n * j '第一个数值的位置
- For i = 1 To n
- brr(i, j) = arr(m + (i - 1) * j, 1) '(i-1)*j隔数
- Next
- Next
- With Range("AB2")
- .Resize(Rows.Count - 1, 13).ClearContents '清除内容
- .Resize(UBound(brr), 13) = brr '赋值
- End With
- End Sub
复制代码
|
|