gpt4 book ai didi

arrays - Excel VBA : Mysterious Zero is Being Added to Array Created with "For" Loop

转载 作者:行者123 更新时间:2023-12-04 21:19:56 25 4
gpt4 key购买 nike

大家好:我正在尝试创建一个函数,当 range1 中的相应值等于条件 1 时,它会挖掘数组并添加 range2 中的值。

我对 VBA 比较陌生,所以它不是世界上最优雅的函数,但这是我的代码:

Function SingleArray(range1 As Range, range2 As Range, criteria1 As String)

Dim newrange() As Double
Dim d As Integer
Dim g As Integer
Dim i As Integer

g = Application.WorksheetFunction.CountIf(range1, criteria1)

ReDim newrange(g)

d = 1

For i = 0 To (range1.Count)
If range1(i) = criteria1 Then
newrange(d) = range2.Item(i).Value
d = d + 1
End If
Next i


SingleArray = newrange

End Function

这是我的数据样本:
range2  range1
-5000 Bob
-5000 Jim
200 Bob
500 Jim
5000 Bob
200 Bob
300 Bob
1000 Bob

当我将条件设置为“Bob”时,返回的数组如下:
{0,-5000,200,5000,200,300,1000}

我真的不知道那个零是如何进入那里的。欢迎您提供任何想法!

最佳答案

一维数组默认为从零开始的索引结构(例如 0, 1, 2, 3, ....)。您正在循环使用基于 1 的索引(例如 1、2、3、4、...)的范围。

当您声明 ReDim newrange(5)您实际上是在创建一个包含六个元素而不是五个元素的数组(例如 0、1、2、3、4、5)

通过将此编译器指令放在代码表的顶部,您可以使该代码表上的所有数组默认为基于 1 的索引。

Option Base 1

您还可以通过指定下边界和上边界来更改动态声明数组的方式。
ReDim newrange(1 to g)

关于arrays - Excel VBA : Mysterious Zero is Being Added to Array Created with "For" Loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54793905/

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