2011-05-06 49 views
-1

請幫助我,執行Vlook向上或查找每列

舉個例子,我有一個設置

這種數據在Sheet1中

Column A 
614545 
546425 
456426 

在表4,我有一個命名錶如下:

Column A Column B Column C 

614545  AAA   1111 
564645  AXS   1254 
123545  XSF   4524 
(And so forth...) 

現在我需要的是一個代碼,將搜索相應的值的工作表1分A列於表4.如表,代碼將導致這種結果

工作表Sheet1

Column A Col B Col C 
614545  AAA  CCC 

(,...等)

我一直在努力現在解決這個問題數週。但我無法修復它。我一次只能在一個單元上執行查找功能。我需要一個遍歷整個列A(Sheet1)的代碼,並且會在表(4)的表格中返回相應的值。

請幫幫我。

+0

只要是明確的,在你的例子中,'CCC'從哪裏來?我可以看到Sheet1中的'614545'如何映射到'614545/AAA/1111',但我看不到'CCC'從哪裏來? – 2011-05-06 08:12:04

+0

這是我的不好。它應該是1111而不是ccc。對於那個很抱歉。 – light 2011-05-06 08:21:43

+0

您可能會考慮編輯您的帖子以反映需要「1111」,以便潛在的幫助者對問題和期望的解決方案有清晰的瞭解... – 2011-05-06 08:53:42

回答

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 
+0

那麼,事情是我需要一個VBA代碼。其實我已經開發了一個代碼。但這並不是真的有效。該代碼是這樣'昏暗rngFindRange作爲範圍 暗淡我作爲整數 設置rngFindRange =工作簿( 「latesttest」)。表( 「RC」),範圍( 「rctable」)。找到(範圍( 「C」) ,看着:= xlValues,LOOKAT:= xlWhole) 如果不rngFindRange是Nothing然後 範圍( 「D3」)= rngFindRange.Offset(0,1) 範圍( 「E3」)= rngFindRange.Offset(0, 2) 範圍(「F3」)= rngFindRange.Offset(0,3)'但是,你可以看到代碼僅用於單個範圍。我是一個初學者在這裏vba。所以請原諒代碼。 – light 2011-05-06 09:29:42

+0

@light - 現在用VBA解決方案更新了答案... – 2011-05-06 10:00:07

0

我想補充「VLOOKUP」在大多數情況下完全正常,但如果您的Excel數據開始變大,然後「 VLookup'臭名昭着的緩慢。 .Find方法要快得多。

此示例UDF功能 - 在Excel =AltLookup(cell,column)例如=AltLookup(A1,3)式將查找單元格A1 Sheet 1上在列A中的文字: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