Как изменить ссылку на столбец для цикла for - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть фиктивные данные, которые я использовал с этим сценарием: он просто обновляет значения, которые я поместил на листе 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

1 Ответ

1 голос
/ 19 апреля 2019

Отображение изменений кода из моего комментария:

'Set wsA = wbk.Sheets("Sheet1")
'Set wsB = wbk.Sheets("Sheet2")
Set wsB = wbk.Sheets("Sheet1")
Set wsA = wbk.Sheets("Sheet2")

и ваш цикл будет похож на:

For j = 3 To 5
    wsA.Cells(fndRow + i, j).Value = rIterator.Offset(, j +27 - 1).Value * multplr(i)  'i think i got that?  destination still C->E but source is AD->AF
Next j
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...