【发布时间】:2019-05-09 15:21:36
【问题描述】:
我正在尝试根据相邻列的值更新范围内的值,并使用 VLookUp 从另一个工作表中提取更新的值。 我遇到了一个问题,即无论相邻列是否显示正确的值,都将 VLookUp 应用于整个范围。
我尝试使用偏移量而不是范围并对语句结构进行各种调整,但我得到了不同的错误,例如:数据更新但只显示所有匹配条件的 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
我想在 L 列显示“信任 RCGA”的 J 列中有任何值,以更新为 RCGA 工作表上的新计算值,其中 L 列为“0”的所有值保持不变
【问题讨论】:
-
是的,你需要偏移量,而且VLOOKUP中的第一个参数不能是单元格范围。
-
您的工作表引用也不一致 - 也需要整理一下。
-
我对所有使用 VLookUp 的建议是使用
Index/Match。您只需输入所需的特定数据范围,例如Application.Index(OutputRange, Application.Match(SearchByTerm, SearchRange, Arg3)),注意 Arg3 是否与范围中的匹配项完全相关,而不是找到一个整体范围并尝试从所述范围的开头识别列。一个这样填写的例子是Application.Index(Columns("P"), Application.Match(Cells(1,1).Value, Columns("A"),0))