Как написать Excel VBA кодирования для левой функции внутри Vlookup или скрыть от Excel функции VBA? - PullRequest
0 голосов
/ 26 декабря 2018

Я хотел бы использовать ниже функцию из Excel на VBA.Могу ли я найти хорошее решение?

= IFERROR (VLOOKUP (LEFT (B4,3), B2: G349,5, FALSE), "")

Буду признателен, если получурешение!

Dim lookFor As Range
Dim table_array As Range
Dim varResult As Variant
Dim table_array_col As Integer
Dim lookFor_col As Integer

On Error Resume Next

Set lookFor = Range([B4], Cells(Rows.Count, "B").End(3)) 
Set table_array = Range("B2:G349")
table_array_col = 5
varResult = Application.VLookup(left(lookFor.Value,3), table_array, table_array_col, 0)
lookFor_col = 2
lookFor.offest(0, lookFor_col) = varResult

1 Ответ

0 голосов
/ 26 декабря 2018

Использовать вариант Array.

Sub test()
    Dim lookFor As Variant
    Dim Table As Variant
    Dim vResult() As Variant
    Dim table_array_col As Integer
    Dim lookFor_col As Integer
    Dim c As Integer
    Dim LookC As Integer
    Dim i As Long, j As Long
    Dim r As Long, r2 As Long

    c = 5 '<~~ col
    LookC = 4


    lookFor = Range([B4], Cells(Rows.Count, "B").End(3))
    Table = Range("B2:G349")


    r = UBound(lookFor, k)
    r2 = UBound(Table, 1)

    ReDim vResult(1 To r, 1 To 1)

    For i = 1 To r
        For j = 1 To r2
            If Left(lookFor(i, 1), 3) = Table(j, 1) Then
                vResult(i, 1) = Table(j, c)
                Exit For
            End If
        Next j
    Next i
    Cells(2, LookC).Resize(r, 1) = vResult
End Sub
...