Все, что у меня есть ниже 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
Может кто-нибудь посоветовать, как лучше поступить в этом сценарии?