Поиск справа налево (несколько диапазонов) - PullRequest
0 голосов
/ 23 мая 2018

Все, что у меня есть ниже For Each цикл, который возвращает последний столбец, который имеет значение <> 0.Это прекрасно работает, хотя я уверен, что есть более эффективный способ.

    Dim LastColFcst As Integer
    For Each p In Range("E44:P44,S44:AD44,AG44:AR44,AU44:BF44,BI44:BU44")
    If p.Value <> 0 And p.Offset(-35, 0).Value = "Forecast" Then
    LastColFcst = p.Column
    End If
    Next p

Теперь я хочу получить последний столбец со значением <> 0 для разных строк 86,88,95,99.Я могу добиться этого, скопировав и вставив мой оригинальный код для четырех строк и используя оператор IF.Однако это кажется очень неэффективным способом решения простой задачи.Пример кода ниже;** РЕДАКТИРОВАТЬ Полный образец (длинный неэффективный код выложен ниже)

    Dim LastColFcst As Integer
For Each p In Range("E86:P86,S86:AD86,AG86:AR86,AU86:BF86,BI86:BU86")
If p.Value <> 0 And p.Offset(-77, 0).Value = "Forecast" Then
LastColFcst = p.Column
End If
Next p

For Each L In Range("E88:P88,S88:AD88,AG88:AR88,AU88:BF88,BI88:BU88")
If L.Value <> 0 And L.Offset(-79, 0).Value = "Forecast" And L.Column > LastColFcst Then
LastColFcst = L.Column
End If
Next L

For Each J In Range("E95:P95,S95:AD95,AG95:AR95,AU95:BF95,BI95:BU95")
If J.Value <> 0 And J.Offset(-79, 0).Value = "Forecast" And J.Column > LastColFcst Then
LastColFcst = J.Column
End If
Next J

For Each K In Range("E97:P97,S97:AD97,AG97:AR97,AU97:BF97,BI97:BU97")
If K.Value <> 0 And K.Offset(-88, 0).Value = "Forecast" And K.Column > LastColFcst Then
LastColFcst = K.Column
End If
Next K        

Может кто-нибудь посоветовать, как лучше поступить в этом сценарии?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...