gpt4 book ai didi

excel - 如何从 VBA 返回数组

转载 作者:行者123 更新时间:2023-12-04 20:52:16 25 4
gpt4 key购买 nike

我正在尝试保存一个函数的结果,该函数比较两个数据集并将任何相同的数字保存在一个数组中,但是当我使用该函数时,我只得到一个数字,当有多个相同的数字时返回该数字。我尝试了 ctrl+shift+enter 的数组公式,但结果是一样的。

Set 1   Set 2    Result278       278    56778       778    5656       1223    56946        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

最佳答案

我可以在您的代码中看到这些问题:

  • 约翰科尔曼提到的 - numbernumbe应该用作参数。我会建议一些更详细的名称,例如 rng1rng2
  • 蒂姆威廉姆斯所说的以及导致您的问题的原因是该函数返回一个一维数组,默认情况下该数组在一行的多个单元格中提供输出。您需要转置数组才能使用 trials = Application.Transpose(savearray) 在一列的多个单元格中显示结果而不是 trials = savearray .
  • 第 2 点中的代码应放在 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

    关于excel - 如何从 VBA 返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56517353/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com