Excel VBA Lookup - PullRequest
       7

Excel VBA Lookup

0 голосов
/ 12 сентября 2018

Попытка использовать VBA в Excel для выполнения некоторой эквивалентной функции VLookup.У меня есть пример таблицы:

enter image description here

По сути, это то, что я хочу сделать:

1) На основе значения вB12, посмотрите значение в таблице A1: A8.2) Установите в ячейке B13 возвращаемое значение поиска. 3) Если совпадение не найдено (например, B12 = 100000), выдайте сообщение об ошибке.

В настоящее время я использую несколько операторов «IF .. ElseIf» иего становится слишком громоздким для обслуживания.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Попробуйте сделать это в закрытом кодовом листе рабочего листа (щелкните правой кнопкой мыши вкладку имени рабочего листа, Просмотреть код.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = "B12" Then
        On Error GoTo meh
        Application.EnableEvents = False
        Dim m As Variant
        If IsNumeric(Target) Then
            If Target < 1 Or Target > Application.Max(Range("A2:A8")) Then
                Target.Offset(1, 0) = "out of range"
            Else
                m = Application.Match(Target, Range("A1:A8"))
                Target.Offset(1, 0) = Cells(m, "B").Value
            End If
        End If
    End If

meh:
    Application.EnableEvents = True

End Sub
0 голосов
/ 13 сентября 2018

Вы можете просто использовать формулу в ячейке B13:

=IF(B10>A8,"Error",INDEX($A$2:$B$8, SUMPRODUCT(--(A2:A8<=B10)),2))

Это включено (т. Е. Кол-во 1-9 относится к уровню 1) на основе приведенного вами примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...