我正在尝试修复一个子程序,该子程序创建一个10个整数的数组,这样数组的每个元素都存储自己的索引号和所有以前索引的总和。 (索引从1开始。)数组中的值将是: 1,3,6,10,15,21,28,36,45,55
例如,第3个元素中的值6是索引值1 + 2 + 3的总和。最后,我所做的是将数组的内容复制到范围A1:J1。
我到目前为止的代码如下:
Sub SumNum()
Dim Ints(1 to 10) As Integer
Dim Sum As Integer
Dim i As Integer
i = 0
For i = LBound(Ints) to UBound(Ints)
Sum = i + Ints(i)
Range("A1").offset(0,1).Value = Sum
Next i
End Sub
从理论上看,我认为它应该可以解决,因为我有循环并将总和粘贴到每个偏移量,但是这个sub给了我错误而无法执行。任何指导将不胜感激!
编辑:当我运行我的代码时,唯一的输出是在值为10的B2上。奇怪!
答案 0 :(得分:3)
Range("A1:J1").Formula = "=(COLUMN()*(COLUMN()+1))/2"
这里有两点需要注意:
您可以直接为数组指定范围而无需循环。也就是说,在计算完阵列后,您可以说myRange.Value = myArray
。如果范围是列,则需要转置数组。
上述代码利用了一个已知的数学公式:1+2+3+...+n = (n(n+1))/2
。它不需要计算任何数组。该公式应用此公式并从每个单元格的Column
属性中获取索引。
希望这有帮助。