努力总结我的阵容

时间:2017-04-13 01:12:45

标签: arrays vba excel-vba excel

我正在尝试修复一个子程序,该子程序创建一个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上。奇怪!

1 个答案:

答案 0 :(得分:3)

Range("A1:J1").Formula = "=(COLUMN()*(COLUMN()+1))/2"

这里有两点需要注意:

  • 您可以直接为数组指定范围而无需循环。也就是说,在计算完阵列后,您可以说myRange.Value = myArray。如果范围是列,则需要转置数组。

  • 上述代码利用了一个已知的数学公式:1+2+3+...+n = (n(n+1))/2。它不需要计算任何数组。该公式应用此公式并从每个单元格的Column属性中获取索引。

希望这有帮助。

相关问题