首页 > 解决方案 > 如何更改此 for 循环的列引用

问题描述

我有与此脚本一起使用的虚拟数据:它只是更新我放入工作表 2 的值,并将它们与数组乘法器一起应用于工作表 1 中rIterators匹配的任何位置。对于这个问题,这些都不是必需的,我只需要知道如何更新我的j变量引用。

目前是:

        For j = 3 To 5
            wsA.Cells(fndRow + i, j).Value = rIterator.Offset(, j - 1).Value * multplr(i)
        Next j

并且它在两个工作表中都引用了 CE 列,因为这是值对齐的地方。

如果 Sheet2 具有需要在 CE 列中更新的值,但这些列存在于 Sheet1 的 AD-AF 列中,我将如何更改?

其余代码:

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

标签: excelvba

解决方案


从我的评论中显示代码更改:

'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

推荐阅读