在VBA中调整数组

Mik*_*ike 6 arrays excel vba excel-vba

我有3个数据数组,通过读取excel表填充,一些数据点丢失,因此刚刚输入excel为"NA"所以我想查看我的数组并找到每个这些NA的实例并从阵列中删除它们,因为信息是无用的.我需要同时更新所有三个数组.

Sub group_data()
    Dim country(), roe(), iCap() As String
    Dim i As Integer
    For i = 1 To 3357
        country(i) = Workbooks("restcompfirm.xls").Worksheets("Sheet1").Range("C1").Offset(i, 0)
        roe(i) = Workbooks("restcompfirm.xls").Worksheets("Sheet1").Range("AP1").Offset(i, 0)
        iCap(i) = Workbooks("restcompfirm.xls").Worksheets("Sheet1").Range("BM1").Offset(i, 0)
    Next i 
End Sub
Run Code Online (Sandbox Code Playgroud)

因此,如果我发现"NA"作为roe或iCap中的一个值,我想在所有阵列中摆脱那段数据.

Tod*_*ain 1

在构建数组时,我什至不会首先包含“NA”。这是您的代码,但已更改为不包含“NA”。

Sub group_data()

Dim country() As String
ReDim country(0)
Dim roe() As String
ReDim roe(0)
Dim iCap() As String
ReDim iCap(0)

Dim i As Integer
Dim increment1, increment2, increment3 As Integer
increment1 = 0
increment2 = 0
increment3 = 0

For i = 1 To 3357
    If Not Workbooks("restcompfirm.xls").Worksheets("Sheet1").Range("C1").Offset(i, 0) = "NA" Then
        ReDim Preserve country(UBound(country) + 1)
        country(increment1) = Workbooks("restcompfirm.xls").Worksheets("Sheet1").Range("C1").Offset(i, 0)
        increment1 = increment1 + 1
    End If

    If Not Workbooks("restcompfirm.xls").Worksheets("Sheet1").Range("AP1").Offset(i, 0) = "NA" Then
        ReDim Preserve roe(UBound(roe) + 1)
        roe(increment2) = Workbooks("restcompfirm.xls").Worksheets("Sheet1").Range("AP1").Offset(i, 0)
        increment2 = increment2 + 1
    End If

    If Not Workbooks("restcompfirm.xls").Worksheets("Sheet1").Range("BM1").Offset(i, 0) = "NA" Then
        ReDim Preserve iCap(UBound(iCap) + 1)
        iCap(increment3) = Workbooks("restcompfirm.xls").Worksheets("Sheet1").Range("BM1").Offset(i, 0)
        increment3 = increment3 + 1
    End If

Next i

End Sub
Run Code Online (Sandbox Code Playgroud)