У меня есть фиктивные данные, которые я использовал с этим сценарием: он просто обновляет значения, которые я поместил на листе 2, и применяет их с множителем массива везде, где rIterators
соответствует листу1. Ничего из этого на самом деле не нужно для этого вопроса, мне просто нужно знать, как обновить мою j
ссылку на переменную.
В настоящее время это:
For j = 3 To 5
wsA.Cells(fndRow + i, j).Value = rIterator.Offset(, j - 1).Value * multplr(i)
Next j
и ссылается на столбцы C-E на обоих листах, потому что именно там значения совпадают.
Как бы изменить это, если в Sheet2 есть значения, которые необходимо обновить в столбцах C-E, но эти столбцы существуют в столбцах AD-AF в Sheet1?
Остальной код:
Sub UpdateTSRS()
Dim wbk As Workbook
Dim wsA As Worksheet, wsB As Worksheet
Dim rngA As Range, rngB As Range
Dim rIterator As Range
Dim fndRow As Long
Dim multplr As Variant
multplr = Array(1, 1.1, 1.15, 1.2, 1.3)
Set wbk = ThisWorkbook
Set wsA = wbk.Sheets("Sheet1")
Set wsB = wbk.Sheets("Sheet2")
Set rngA = wsA.Range(wsA.Range("A2"), wsA.Range("A2").End(xlDown))
Set rngB = wsB.Range(wsB.Range("A2"), wsB.Range("A2").End(xlDown))
For Each rIterator In rngB
On Error Resume Next
fndRow = Application.Match(rIterator.Value, rngA, 0) + _
rngA.Range("A1").Row - 1
If Err.Number <> 0 Then
Else
For i = 0 To 4
For j = 3 To 5
wsA.Cells(fndRow + i, j).Value = rIterator.Offset(, j - 1).Value * multplr(i)
Next j
Next i
wsA.Range(wsA.Cells(fndRow, 3), wsA.Cells(fndRow, 5)).Resize(5).Interior.Color = RGB(255, 255, 0)
End If
Err.Clear
Next rIterator
End Sub