Выполнить Vlook Up или Find Per столбца - PullRequest
0 голосов
/ 06 мая 2011

Пожалуйста, помогите мне,

Взять, к примеру, у меня такой набор данных

In 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 в таблице на листе 4. Как, например, код даст этот результат

Лист1

Column A    Col B   Col C
614545      AAA     CCC

(и так далее ...)

Я пытаюсь решить эту проблему уже несколько недель. Но я просто не мог это исправить. Я могу выполнять функцию поиска только в одной ячейке за раз. Мне нужен код, который будет проходить по всему столбцу A (Sheet1) и будет возвращать соответствующие значения в таблице на листе (4).

Пожалуйста, помогите мне.

Ответы [ 2 ]

1 голос
/ 06 мая 2011

Попробуйте - вам нужно обновить диапазоны данных в соответствии с вашими требованиями

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 голосов
/ 07 мая 2011

Просто добавить «VLookup» в большинстве случаев прекрасно, но если ваши данные Excel начинают становиться большими, то «VLookup», как известно, медленно.Метод .Find намного быстрее.

В этом примере функция UDF - используйте формулу в Excel =AltLookup(cell,column) Например, =AltLookup(A1,3), чтобы найти текст в ячейке A1 на Sheet1 в столбце A: A в Sheet4 и вернуть столбец 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...