我在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
答案 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。我现在无法测试,因为我正在通过手机接听电话。