VBA数组,问问大神
excel吧
全部回复
仅看楼主
level 7
假如有个数组A
1, 6, 4, 5
4, 8, 9, 2
7, 2, 3, 1
每一行看作一个整体,相加得到一个值B
按B值的大小,将该行的数值放入新数组S中
比如B值最小的第三行放入S,第二小行的放入S中两次,最大的放入三次。
新数组S有6行4列数据
有没有大神
For循环只想到每个行放入一次,如何多次放进去?大小顺序如何解决?
2022年12月13日 10点12分 1
level 11
好奇怪的需求,不知道理解得对不对,动图
2022年12月13日 12点12分 2
是的,是这样的
2022年12月14日 02点12分
level 10
不会多重for循环么
2022年12月13日 12点12分 3
level 13
Sub tt()
Dim c()
a = [{1,6,4,5;4,8,9,2;7,2,3,1}]
ReDim b(1 To UBound(a), 1 To 2)
For i = 1 To UBound(a)
b(i, 1) = a(i, 1) + a(i, 2) + a(i, 3) + a(i, 4)
b(i, 2) = Array(a(i, 1), a(i, 2), a(i, 3), a(i, 4))
Next i
For i = 1 To UBound(b) - 1
For j = i + 1 To UBound(b)
If b(i, 1) > b(j, 1) Then
ls1 = b(i, 1)
ls2 = b(i, 2)
b(i, 1) = b(j, 1)
b(i, 2) = b(j, 2)
b(j, 1) = ls1
b(j, 2) = ls2
End If
Next j
Next i
For i = 1 To UBound(b)
For j = 1 To i
x = x + 1
ReDim Preserve c(1 To x)
c(x) = b(i, 2)
Next j
Next i
c = WorksheetFunction.Transpose(WorksheetFunction.Transpose(c))
[a1].Resize(UBound(c), UBound(c, 2)) = c
End Sub
2022年12月13日 12点12分 4
[欢呼]谢谢大神,理解了
2022年12月14日 02点12分
1