VBA:试图返回一个数组,但只获得第一个值

我想这个问题已经被问了上千次,但是经过几个小时的search,我依然找不到任何帮助。 所以我需要使用一个数字向量作为input,对所有这些数字进行计算,然后将结果作为与input向量具有相同维数的向量返回。 所以我们可以说,我想采取一些数字,然后减去所有的一个,所以我的Excel表应该看起来像这样

AB 1 6 5 2 7 6 3 8 7 4 9 8 5 10 9 

其中A列是inputvector,B应该是输出。 但是我的输出只是一列零。 debugging还会告诉在输出向量中有正确的数字,但是我只能打印出第一个值,然后传送到所有单元格。 目前我的代码看起来像这样

 Public Function Vector(values As Range) As Variant Dim arraySize As Integer, i As Integer arraySize = values.rows.Count Dim returnArray() As Variant ReDim returnArray(arraySize) For i = 1 To arraySize returnArray(i - 1) = values(i, 1) - 1 Next i Vector = returnArray End Function 

使用二维数组:

 Public Function Vector(values As Range) As Variant Dim arraySize As Integer, i As Integer arraySize = values.Rows.Count Dim returnArray() As Variant ReDim returnArray(1 To arraySize, 1 To 1) For i = 1 To arraySize returnArray(i, 1) = values(i, 1) - 1 Next i Vector = returnArray End Function 

在这里输入图像描述

注意:

在工作表中input数组公式时,单击高亮度单元格B1B5 ,然后单击公式栏,然后使用Ctrl + Shift + Enterinput公式

 Public Function Vector(values As Range) As Variant Dim r As Long, c As Long, returnArray As Variant returnArray = values.Value For r = 1 To ubound(returnArray, 1) For c = 1 To ubound(returnArray, 2) returnArray(r, c) = returnArray(r, c) - 1 Next c Next r Vector = returnArray End Function