请帮助我,
例如,我有一种这样的数据集
在Sheet1中
Column A
614545
546425
456426
在Sheet 4中,我有一个这样的命名表:
Column A Column B Column C
614545 AAA 1111
564645 AXS 1254
123545 XSF 4524
(And so forth...)
现在我需要的是一个代码,用于搜索工作表4中表格A的相应值。例如,代码会给出这个结果
Sheet 1中
Column A Col B Col C
614545 AAA CCC
(等等......)
我几周来一直试图解决这个问题。但我无法解决它。我能够一次在一个单元格上执行查找功能。我需要一个遍历整个列A(Sheet1)的代码,并返回表(4)中表的相应值。
请帮帮我。
答案 0 :(得分:1)
试试这个 - 你需要根据你的要求更新数据范围
Sub LookUpValues()
Dim sourceRng As Range, dataTable As Range, cl As Range
Set sourceRng = Worksheets("Sheet1").Range("A1:A10")
Set dataTable = Worksheets("Sheet4").Range("A1:C100")
For Each cl In sourceRng
cl.Offset(0, 1) = WorksheetFunction.VLookup(cl, dataTable, 2, False)
cl.Offset(0, 2) = WorksheetFunction.VLookup(cl, dataTable, 3, False)
Next cl
End Sub
答案 1 :(得分:0)
在大多数情况下添加'VLookup'是完全正常的,但如果你的Excel数据开始变大,那么'VLookup'的速度非常慢。 .Find方法要快得多。
此示例UDF函数 - 在Excel =AltLookup(cell,column)
中使用公式例如=AltLookup(A1,3)
将在第A列中的Sheet1上的单元格A1中查找文本:Sheet4中的A并返回第3列或第C列
Function AltLookup(ByVal strToFind As String, ByVal column As Long)
Dim rngFind As Range
With Sheet4 'change sheet to lookup on
With .Columns("A:A") 'assuming lookup on column A
Set rngFind = .Find(What:=strToFind, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not rngFind Is Nothing Then
AltLookup = .Cells(rngFind.Row, column).Value
Else
'do nothing or.. AltLookup = vbnullstring
End If
End With
End With
End Function