Поиск и запись нескольких записей с одним и тем же именем из электронной таблицы - PullRequest
0 голосов
/ 13 июня 2019

Я хочу, чтобы пользователь ввел свое имя пользователя и выполнял поиск, после чего поиск приведет к выводу связанных с ним данных из другой таблицы в таблицу, из которой они искали.Я знаю, что мне нужен цикл с vlookup, но я не знаю, как его структурировать.

Я разработал vlookup, необходимый для поиска пользователя, и он выводит его данные, но только одну строку,и пользователь может иметь 8 строк, связанных с его информацией.

Dim wfUser As String
wfSAP = Application.WorksheetFunction.VLookup(uc, Range("wfData"), 1, False)

Dim wfRole As String
wfRole = Application.WorksheetFunction.VLookup(uc, Range("wfData"), 2, False)


    With Range("userData")
        .Offset(0, 0) = wfUser
        .Offset(0, 1) = wfRole
    End With
End If

Он находит только первое вхождение своего имени пользователя и записи, в отличие от всех строк, связанных с именем пользователя

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Я предполагаю, что некоторые из ваших переменных либо не совпадают, либо не определены в приведенном вами примере, но попробуйте что-то вроде этого:

Dim wfArr(), uc As String, i As Long, f As Integer

f = 0
uc = "User"

'load your wfData range to an array
wfArr = Range("wfData").Value

'loop through the array to find all occurances of specified user
For i = LBound(wfArr, 1) To UBound(wfArr, 1)

    'if the user matches, write the values to userData Range
    If wfArr(i, 1) = uc Then
        Range("userData").Offset(f, 0) = uc
        Range("userData").Offset(f, 1) = wfArr(i, 2)
        f = f + 1
    End If
Next i
0 голосов
/ 13 июня 2019

Попробуйте:

Sub lookupData()
'/9757102/poisk-i-zapis-neskolkih-zapisei-s-odnim-i-tem-zhe-imenem-iz-elektronnoi-tablitsy

Dim arrWfData As Variant: arrWfData = Range("wfData") 'allocate the data to an array
Dim R As Long, X As Long

For R = LBound(arrWfData) To UBound(arrWfData) 'for each row in the array
    If arrWfData(R, 1) = uc Then 'if it matches with <uc>
        With Range("userData") 'allocate the values
            .Offset(X, 0) = arrWfData(R, 1)
            .Offset(X, 1) = arrWfData(R, 2)
        End With
        X = X + 1
    End If
Next R

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