Arrays 努力求和我的数组

Arrays 努力求和我的数组,arrays,vba,excel,Arrays,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 Inte

我试图修复一个子例程,它创建一个包含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
从理论上讲,我想应该是这样的,因为我有循环,并且把和粘贴到每个偏移量上,但是这个子程序给了我错误,无法执行。任何指导都将不胜感激

编辑:当我运行代码时,唯一的输出是B2上的值10。奇怪

Range("A1:J1").Formula = "=(COLUMN()*(COLUMN()+1))/2"
这里需要注意两件事:

  • 可以直接将范围分配给数组,而无需循环。也就是说,在计算数组之后,可以说
    myRange.Value=myArray
    。如果范围是列,则需要转置数组

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


希望这能有所帮助。

在第二行,int(1到10)作为整数,您将int()的值存储在哪里?@RichHolton。它的大小为10,因此可以有10个值,对吗?它将被初始化为全零。整数(1)将为0,整数(2)将为0,以此类推。阵列就像一个存储柜。你有10个抽屉,但里面什么都没有。如果我在下面加上这些代码行,整数(1)=1整数(2)=2整数(3)=3整数(4)=4整数(5)=5整数(6)=6整数(7)=7整数(8)=8整数(9)=9整数(10)=10用你的替换我的范围行,真的吗,我只是想知道你能否告诉我为什么“=(Column()*(Column()+1))/2”@JerrySilvera很高兴,请阅读添加的解释:)@JerrySilvera-注意:不要只是用答案中的一行替换你的范围行-用它替换你子程序的全部内容-例如
Sub-SumNum()
范围(“A1:J1”).Formula=“=(COLUMN()*(COLUMN()+1))/2”
End Sub
。(或者直接在Excel中键入公式本身[而不是代码],而不需要子程序。)