VLOOKUP для пошуку декількох значень у комірці


0

У мене є, VLOOKUPщо шукає Account #та повертає Rep. Account #Поле містить історичні дані (кожен рахунок , включаючи неактивні). Як я можу налаштувати a, VLOOKUPщоб побачити витягнути ім'я представника, перевіряючи кожне Account #?

Account #       | Email            | Rep Name |   Match Name
12345           | email@email.com  | Rep Name | Rep Name Match
4564566, 45678  | email@email.com  | Rep Name |      #N/A

Ви завжди хочете збігатися за активним рахунком? Якщо так, чи завжди активний рахунок є першим? Останній? Якщо ні, то яка максимальна кількість рахунків у рядку, яка може бути включена до стовпця з номером рахунку (наприклад, другий рядок має 2)?
чаф

як сказав @chuff, вам потрібно додати більше інформації у своє запитання, як мінімум, чітко визначити критерії, які використовуються, щоб визначити, чи активний обліковий запис чи ні.
ПО

Відповіді:


0

Немає максимальної кількості облікових записів. Пошук буде перевіряти ім'я представника у списку "Активних" облікових записів (як правило, на окремій вкладці). У деяких облікових записах є 5+ облікових записів #. В експорті не існує максимально жорсткого коду.


0

Хоча існує кілька способів зробити це за допомогою вбудованих можливостей або формул Excel, жоден не особливо привабливий.

Основна ідея полягала б у тому, щоб розділити на різні комірки елементи "Account #", які насправді містять кілька облікових записів, зробити окремий пошук імені репліка для кожного з включених облікових записів, а потім вибрати успішний пошук, якщо такий є. Розділення може бути здійснено за допомогою команди "Текст до стовпців" на вкладці "Дані" або за допомогою набору формул для аналізу рядків. "Вибір" успішних пошуку може бути здійснено за допомогою вкладених IF(ISERROR(...))функцій або, можливо, більш екзотичної формули масиву.

Тут є розумною альтернативою рішення VBA.

Наступна визначена користувачем функція приймає в якості аргументів рядок (або посилання комірки на рядок), що включає одну або кілька облікових записів і посилання на діапазон пошуку; він повертає ім'я репліка, якщо в обліковому записі в рядку є відповідність. Необов’язковий третій аргумент може бути використаний для визначення роздільника між обліковими записами в рядку облікового запису. Якщо нічого не вказано, функція використовує роздільник за замовчуванням на коми і пробіл (",") за замовчуванням.

Функція поверне ім'я представника для першого знайденого відповідності облікового запису, ігноруючи будь-які збіги, які можуть бути знайдені для інших облікових записів у рядку облікового запису. Якщо збіг облікового запису не знайдено, функція повертає # VALUE! помилка.

  Option Explicit

  Function AcctRepLookup(Accts As String, RepLookUpRange As Range, Optional Separator As Variant) As Variant
     Dim acctArray As Variant
     Dim acct As Variant
     Dim lookupArray As Variant
     Dim i As Long
     If IsEmpty(Separator) Then
        Separator = ", "
     End If
     acctArray = Split(Accts, Separator)                   'put acct list into array
     lookupArray = RepLookUpRange.Value                    'put lookup table into array
     For Each acct In acctArray                            'loop through accounts
        For i = LBound(lookupArray) To UBound(lookupArray) 'loop through lookup table
           If UCase(acct) = UCase(lookupArray(i, 1)) Then
              AcctRepLookup = lookupArray(i, 2)            'a match:) exit with rep name
              Exit Function
           End If
        Next i
     Next acct
     AcctRepLookup = CVErr(xlErrValue)                     'no match:( exit with error
  End Function

Щоб встановити функцію в використовуваній робочій книзі, спершу виберіть параметр Visual Basic (перший елемент зліва) на вкладці «Розробник» Стрічки, а потім виберіть пункт Вставити / Модуль на панелі меню Вставити функцію в панель коду, що з’явиться .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.