将数组与标量相乘并添加VBA

时间:2012-10-19 17:03:47

标签: arrays excel vba

我在Excel工作表中有两列数据大小相等但都只包含数字。

我正在尝试编写一个宏,将这两个集合放入数组中,然后对它们执行计算。具体来说,ArrayA + 3*ArrayB然后将结果放回到新列中的工作表中。下面是我到目前为止的代码。

Dim ArrayA As Variant
Dim ArrayB As Variant
Dim ArrayC As Variant

ArrayA = Worksheets("Sheet1").Range("A1:A5")
ArrayB = Worksheets("Sheet1").Range("B1:B5")

'this is where things go bad
ArrayC = ArrayA + 3 * ArrayB

1 个答案:

答案 0 :(得分:3)

你需要先制作一系列价值观。然后确保你对阵列进行了重新开发。

Dim ArrayA As Variant
Dim ArrayB As Variant
Dim ArrayC() As Variant

ArrayA = Worksheets("Sheet1").Range("A1:A5").Value
ArrayB = Worksheets("Sheet1").Range("B1:B5").Value

'this is where things go bad
'ArrayC = ArrayA + 3 * ArrayB

'manually make array C the same size as array A
ReDim ArrayC(LBound(ArrayA, 1) To UBound(ArrayA, 1), 1 To 1)

Dim i As Long 'variable to count which section of the array we are on

' loop through each spot int he array and perform the math
For i = LBound(ArrayA, 1) To UBound(ArrayA, 1)
    ArrayC(i, 1) = ArrayA(i, 1) + 3 * ArrayB(i, 1)
Next i

Worksheets("Sheet1").Range("C1:C5").Value = ArrayC

注意以上代码未经测试,因此我可能会在某处输入错字。此外,使用redim时,您可能需要声明ArrayC的数据类型而不是variant。我现在无法测试,因为我正在通过手机接听电话。