我无法解决以下问题,非常感谢您的帮助。
我有一个二维数组,看起来像下面这样; PFAllArr 我想从中创建一个新数组(PFArr),但是不包括已删除 =“yes”的行。我可以使这个新数组与原始数组大小相同,只需留下空白行即可删除数据,但是该数组将在代码中用于多个循环,因此我希望尽可能地使其紧凑。
使用下面的代码,我尝试获取已删除= 0的元素数量(我要保留的)......使用循环。
然后重新定义新数组的大小。
然后它应该使用第二个循环将旧数组的相关元素分配到新数组中。但是它没有按预期将元素分配到数组中,似乎循环正常运行,只是没有添加新元素。有什么想法?
我有一个二维数组,看起来像下面这样; PFAllArr 我想从中创建一个新数组(PFArr),但是不包括已删除 =“yes”的行。我可以使这个新数组与原始数组大小相同,只需留下空白行即可删除数据,但是该数组将在代码中用于多个循环,因此我希望尽可能地使其紧凑。
使用下面的代码,我尝试获取已删除= 0的元素数量(我要保留的)......使用循环。
然后重新定义新数组的大小。
然后它应该使用第二个循环将旧数组的相关元素分配到新数组中。但是它没有按预期将元素分配到数组中,似乎循环正常运行,只是没有添加新元素。有什么想法?
Sub AddSelectDataFromBigArrayToSmallOne()
Dim PFAllArr As Variant
Dim PFArr As Variant
Dim c1, i1, c2, i2 As Long
PFAllArr = Sheets("PF File Simple").Range("A2").CurrentRegion.Value
'get number of elements i want to transfer to new array
c1 = 1
For i1 = LBound(PFAllArr) To UBound(PFAllArr)
If PFAllArr(i1, 2) = 0 Then
c1 = c1 + 1
End If
Next i1
'Make new array this size
ReDim PFArr(LBound(PFAllArr) To c1, 1 To 4)
'Assign elements from old array nto new one
c2 = 1
For i2 = LBound(PFAllArr) To UBound(PFAllArr)
If PFAllArr(i2, 2) = 0 Then
PFArr(c2, 3) = PFAllArr(i2, 3)
PFArr(c2, 4) = PFAllArr(i2, 4)
c2 = c2 + 1
End If
Debug.Print c2, PFArr(c2, 3), PFArr(c2, 4)
Next i2
End Sub
c1
等于 0 开始。 - urdearboy