我试图保存一个比较两个数据集并将任何相同数字保存在数组中的函数的结果,但是当我使用该函数时,我只会得到一个数字,而当存在多个相同数字时,将返回该数字。我尝试使用 ctrl + shift + enter 来获取数组公式,但结果是相同的。
Set 1 Set 2 Result 278 278 56 778 778 56 56 1223 56 946 56 56
Function trials(number As Range, numbe As Range)
Dim c As Range
Dim savearray() As Variant
Dim d As Long
Dim e As Range
For Each c In Range("a3:a6")
For Each e In Range("c3:c6")
If c.Value = e.Value Then
ReDim Preserve savearray(d)
savearray(d) = c.Value
d = d + 1
trials = savearray
End If
Next e
Next c
End Function
答案 0 :(得分:0)
我可以在您的代码中看到这些问题:
number
和numbe
应该用作参数。我建议使用一些更详细的名称,例如rng1
和rng2
trials = Application.Transpose(savearray)
而不是trials = savearray
在一列的多个单元格中显示结果。 End function
之前,而不是放在循环中。您只希望将结果传递给函数一次。最重要的是,为什么很多人无法使用它,是因为您必须首先选择输出单元格,然后输入公式并按 CTRL + SHIFT + ENTER ,不要将数组公式从一个单元格拖到其他单元格。
Function trials(number As Range, numbe As Range)
Dim c As Range, e As Range
Dim savearray() As Variant
Dim d As Long
For Each c In number
For Each e In numbe
If c.Value = e.Value Then
ReDim Preserve savearray(d)
savearray(d) = c.Value
d = d + 1
End If
Next e
Next c
trials = Application.Transpose(savearray)
End Function