VBA If语句将Vlookup应用于整个范围

时间:2019-05-09 15:21:36

标签: excel vba vlookup

我正在尝试根据相邻列的值来更新范围内的值,并使用VLookUp从另一个工作表中提取更新后的值。 我遇到了一个问题,即无论相邻列是否显示正确的值,VLookUp都将应用于整个范围。

我尝试对语句结构使用偏移量而不是范围和各种调整,但是我得到了不同的错误EG:数据更新,但仅显示所有匹配条件的VLookUP数据的第一个值。

Dim S1 As Worksheet
    Set S1 = Worksheets("Sheet1")
Dim rcga As Worksheet
    Set rcga = Worksheets("RCGA")
TABLEROW = Range("A" & Rows.Count).End(xlUp).Row
Dim REFRNG As Range
Dim CHNGRNG As Range
Set REFRNG = Range("L2:L" & TABLEROW)
Set CHNGRNG = Range("J2:J" & TABLEROW)
For Each cell In REFRNG
    If cell.Value = "Trust for RCGA" Then 'currently applies vlookup to whole J range
        CHNGRNG = Application.WorksheetFunction.VLookup(S1.Range("A2:A" & TABLEROW), rcga.Range("A2:P" & TABLEROW), 16, 0)
    ElseIf cell.Value = "0" Then
    End If
Next

我想在J列中使用任何值,其中L列显示“ RCGA信任”以更新RCGA工作表上的新计算值,而L列为“ 0”的所有值都保持不变

1 个答案:

答案 0 :(得分:0)

您要将整列A插入VLOOKUP的第一个参数中。

尝试:

CHNGRNG = Application.WorksheetFunction.VLookup(REFRNG.Offset(0, -11).Value, rcga.Range("A2:P" & TABLEROW), 16, 0)

要“查找”的单元格位于要检查的Each cell左侧的11个单元格中。

此外,正如@SJR指出的那样,您还应使用Excel打算使用的工作表来限定范围:

TABLEROW = (s1 or rcga).Range("A" & (s1 or rcga).Rows.Count).End(xlUp).Row
Set REFRNG = (s1 or rcga).Range("L2:L" & TABLEROW)
Set CHNGRNG = (s1 or rcga).Range("J2:J" & TABLEROW)