我正在尝试在G列中名为“SyS”的工作表上执行列数据集的VLOOKUP。并且我想使用位于同一工作簿中的另一个名为“CONF_mapping”的工作表中的列来查看相关数据。我需要找到位于该范围内的数据(“A1:E65000”)(它位于A列,但我需要使用我的vlookup从其他列检索数据到SyS)。我的代码没有取得好成绩,请原谅,这是我在论坛上的第一个问题。
Worksheets("SyS").Select
Dim wsThis As Worksheet
Dim aCell As Range
Sheets("CONF_mapping").Columns(2).Copy Destination:=Sheets("SyS").Columns(8)
Set wsThis = Sheets("SyS")
With wsThis
For Each aCell In .Range("A1:E65000")
'.Cells(aCell.Row, 8) = "Not Found"
On Error Resume Next
.Cells(aCell.Row, 8) = Application.WorksheetFunction.VLookup( _
aCell.value, wsThat.Range("G2:G65000"), 2, False)
On Error GoTo 0
Next aCell
End With
Worksheets("SyS").Select
我找到了这段代码,但我无法让它对我有用。 我将不胜感激任何帮助。
答案 0 :(得分:0)
你错了:
VLookup(aCell.value, wsThat.Range("G2:G65000"), 2, False)
范围" G2:G65000"只有1列G,但是你试图获得不存在的第2列。
UPD: 我想你需要这样的东西:
Const COLUMN_TO_MATCH_IN_SYS = 8
Const COLUMN_TO_MATCH_IN_CONF = 1
Sub test()
Dim wsSys As Worksheet
Dim wsConf As Worksheet
Set wsSys = Sheets("SyS")
Set wsConf = Sheets("CONF_mapping")
Dim RowSys As Range
Dim RowConf As Range
For Each RowSys In wsSys.UsedRange.Rows
For Each RowConf In wsConf.UsedRange.Rows
If RowSys.Cells(1, COLUMN_TO_MATCH_IN_SYS) = _
RowConf.Cells(1, COLUMN_TO_MATCH_IN_CONF) Then
' Copy row values which is needed
RowSys.Cells(1, 6) = RowConf.Cells(1, 1) ' From column A(conf) to G(sys)
RowSys.Cells(1, 7) = RowConf.Cells(1, 2) ' From column B(conf) to H (sys)
End If
Next aCell
Next
End Sub
使用此解决方案,您不需要搜索每个单元格的范围(仅适用于每一行),因此它的工作速度将提高5倍。