【问题标题】:VBA:: checking values from one array to anotherVBA:: 检查从一个数组到另一个数组的值
【发布时间】:2011-06-24 06:07:17
【问题描述】:

我正在尝试编写一个 VBA 代码,该代码将一个数组中的所有值与另一个数组(X 和 Y)进行交叉检查,并在重复时将值复制到一个新数组中(FinalResults)。到目前为止,我有以下代码,非常感谢有关如何正确编写它的一些指导。

Function lnArray(X as Variant, Y as Variant) As Variant
Dim counter1 As Integer
Dim data As Integer
Dim FinalResults() As Variant

For counter1 = 1 To Max
    For Each data In X
        If data.Value = Y.Value Then
            counter1 = counter1 + 1
            ReDim Preserve FinalResults(counter1)
            FinalResults(counter1) = data.Value
        End If
    Next data
Next counter1
End Function

【问题讨论】:

  • 必须保留原始数组吗?它们的尺寸是多少?
  • 我觉得这个问题上的million variations 已经在 SO 上得到了回答。你不能在其中任何一个身上找到灵感吗?大多数问题都是关于保留唯一值,而您想做相反的事情,即保留非唯一值。通过在某处添加一个合适的Not,上面链接的任何解决方案都可以适应你想要的。

标签: arrays vba loops


【解决方案1】:

我查看代码时看到的第一件事是,Max 既没有声明也没有初始化。即使我假设 Option Explicit 没有设置,这个 for-next 循环从 1 运行到 0,这意味着根本没有循环。我猜这不是你想要的?

其次,你的FinalResult数组是在这个函数中本地声明的,因此没有任何结果值可以返回给调用函数。

【讨论】:

    猜你喜欢
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 2022-11-10
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    相关资源
    最近更新 更多