|
C02:monicaj
Dim arr(), brr() 'Arr为数所源,BRR为结果
Dim bcol, count As Integer 'bcol为结果的列数 count为目标区域的数组元素个数
Dim i As Integer 'Arr的行标
Dim j As Integer 'Arr的列标
Dim k As Integer 'brr的行标
Dim m As Integer 'brr的列标
Dim n As Integer 'arr中的个数
n = 0
If IsArray(rgSource) = True Then '如果选择不是单一单元格
arr = rgSource
count = UBound(arr) * UBound(arr, 2) 'arr中元素的个数
If Int(count / bGroupCount) = count / bGroupCount Then
bcol = count / bGroupCount 'arr中元素的个数/要求的行数,向上取整得到brr列数
Else
bcol = Int(count / bGroupCount) + 1
End If
ReDim brr(1 To bGroupCount, 1 To bcol) '重新定义BRR大小
For i = 1 To UBound(arr)
For j = 1 To UBound(arr, 2) '对ARR中每个元素进行遍历
n = n + 1 'ARR中元素的计数器
If n / bcol = Int(n / bcol) Then
k = n / bcol
Else
k = Int(n / bcol) + 1 'ARR中第N个元素在BRR中的行位置是n /BRR列数,向上取整
End If
If n Mod bcol = 0 Then 'ARR中第N个元素在BRR中的列位置是n /BRR取余,如可以整除,便是BRR的最大列数,BCOL。
m = bcol
Else
m = n Mod bcol
End If
brr(k, m) = arr(i, j)
Next
Next
rgDest.Resize(bGroupCount, bcol) = brr
Else '如果选择是单一单元格,直接赋值
rgDest.Value = rgSource.Value
End If
|
评分
-
查看全部评分
|