gpt4 book ai didi

vba - VBA 数组过滤器函数出现问题 : only first result is returned

转载 作者:行者123 更新时间:2023-12-02 16:01:10 24 4
gpt4 key购买 nike

我在使用 VBA 的“过滤器”功能时遇到一些问题。我正在尝试使用多个后续过滤器来逐步减少数组以包含我需要的值。然而,似乎只返回与“Match”值匹配的第一个元素,而不返回后续元素?

举个例子,当运行下面的代码时,第二个“调试调用”返回“1”,但它应该返回“2”

Function FilterAnArray()

Dim names As Variant
names = Array("Ann Smith", "Barry Jones", "John Smith", "Stephen Brown", "Wilfred Cross")
Debug.Print UBound(names)

Dim smithNames As Variant
smithNames = Filter(names, "Smith")
Debug.Print UBound(smithNames)

End Function

版本信息等

我正在运行 Excel 2016,版本 16.0.8730.2046 - 64 位。非常感谢对此问题的任何帮助!

最佳答案

它工作得很好。它返回 1,因为你有两个 Smith:

enter image description here

并且 smithNames 的上限是 1,因为它的数组是从 0 开始的。如果您想要数组元素的计数,并且不喜欢 UBound+1,您可以使用工作表函数:

Debug.Print WorksheetFunction.CountA(smithNames)

<小时/>

强烈不建议选择:

您可以考虑在模块顶部编写Option Base 1。那么数组将从 1 开始,并且将如您所期望的那样。在您的示例中,您会明白为什么不建议使用Option Base 1。如果有的话,Names 将基于 1smithNames 将基于 0。这是因为数组的分配方式不同。

enter image description here enter image description here

关于vba - VBA 数组过滤器函数出现问题 : only first result is returned,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47775206/

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