我正在尝试根据相邻列的值来更新范围内的值,并使用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”的所有值都保持不变
答案 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)