Есть ли предел для чтения массива таблицы как диапазона в Excel? - PullRequest
0 голосов
/ 16 января 2020

newb ie в макросе vba здесь, я пытаюсь поиграться с кодом vba, который я нашел в ссылке ниже, но он не работает, когда у меня огромный диапазон

У меня есть vba функция, которая работает, скажем, в диапазоне C16000: C16954, но не в диапазоне C116000: C116954, хотя они читают одинаковое количество строк

    FuzzyvLookup(B2,D16000:D16954,1) = "SOME VALUE" 
    FuzzyvLookup(B2,D116000:D116954,1) = #N/A when i expect it to be 
    FuzzyvLookup(B2,D116000:D116954,1) = "SOME VALUE"

Есть предложения о том, почему так?

Добавлена ​​ссылка на код макроса, на который я ссылался: (он действительно длинный, поэтому я не вставил его сюда!) https://www.mrexcel.com/board/threads/fuzzy-matching-new-version-plus-explanation.195635/

1 Ответ

0 голосов
/ 16 января 2020

вы можете сделать так:

Function FuzzyvLookup(myRange As range, strLookup As String, lookupType)

    ' lookup type
    ' 1 first
    ' 2 mid
    ' 3 last
    ' 0 all

    Dim a() As Long
    myRow = 2
    myCol = 2
    ReDim a(myRow - 1, myCol - 1) As Long
    a(0, 0) = 9
    a(1, 0) = 6
    a(0, 1) = 9
    a(1, 1) = 6
    Dim myVal
    myVal = ""
    For b = 1 To myRange.Rows.Count
        If lookupType = 1 And myRange.Item(b, 1) Like strLookup & "*?" Then
            myVal = myRange.Item(b, 2)
            Exit For
        End If
        If lookupType = 2 And myRange.Item(b, 1) Like "?*" & strLookup & "*?" Then
            myVal = myRange.Item(b, 2)
            Exit For
        End If
        If lookupType = 3 And myRange.Item(b, 1) Like "?*" & strLookup Then
            myVal = myRange.Item(b, 2)
            Exit For
        End If
        If lookupType = 0 And myRange.Item(b, 1) Like "*" & strLookup & "*" Then
            myVal = myRange.Item(b, 2)
            Exit For
        End If
    Next b
    FuzzyvLookup= myVal
End Function

в вашей ячейке можете проверить этот макрос:

Macro1(D16000:D16954, B2, 1) 

примечание: 1 означает сначала (начинается с символа 1 строки)

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