Array w / Nested For Loop - PullRequest
       1

Array w / Nested For Loop

0 голосов
/ 20 сентября 2019

Я делал проект ранее, который состоял из множества индексов / совпадений.Я лично люблю вложенные циклы, поэтому я хотел посмотреть, смогу ли я реализовать это на этот раз.Мой вложенный цикл состоит из i и j, где мой третий и самый внешний цикл - это моя переменная x, которая помещается внутри моего (Application.index).Я никогда не делал три петли, поэтому я не уверен, возможно ли это.Я получаю сообщение об ошибке «ошибка приложения или объекта».

Спасибо, SD

    Dim i%, j%
    Dim j&
    Dim myArr%(0 To 5)
    'myArr = Array(2, 1, 17, 18, 6, 16)
    'For x = LBound(myArr) To UBound(myArr)
    myArr(0) = 2
    myArr(1) = 1
    myArr(2) = 17
    myArr(3) = 18
    myArr(4) = 6
    myArr(5) = 16
    For x = 0 To 5
        For i = 2 To shSS.Range("A1048576").End(xlUp).Row
            For j = 1 To 16
                Sheets("Sheet1").Cells(i, j) = Application.IfError(Application.Index(shRoster.Columns(x), Application.Match(shSS.Range("D" & i + 1), shRoster.Columns(4), 0)), "-")

            If shSS.Cells(i, 11) = "Internal" Then
                shCV.Cells(i, 10) = "Y"
            Else
                shCV.Cells(i, 10) = "N"
            End If

            Next j
        Next i
    Next x

1 Ответ

0 голосов
/ 20 сентября 2019

Вместо этого:

 Sheets("Sheet1").Cells(i, j) = _
     Application.IfError(Application.Index(shRoster.Columns(x), _
     Application.Match(shSS.Range("D" & i + 1), shRoster.Columns(4), 0)), "-")

вы можете сделать что-то вроде:

Dim m

m = Application.Match(shSS.Range("D" & i + 1), shRoster.Columns(4), 0)

If Not IsError(m) Then
    Sheets("Sheet1").Cells(i, j).Value = shRoster.Columns(x).Cells(m)
Else
    Sheets("Sheet1").Cells(i, j).Value = "'-"
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...