Покращення функції VLOOKUP

зміст

Як правильно упакувати парашут?

Вигода. Видання 2, перероблене.

Припустимо, у нас є така таблиця замовлень:

Покращення функції VLOOKUP

Нам потрібно знати, наприклад, яка сума третього замовлення Іванова або коли Петров виконав другу угоду. Вбудована функція VLOOKUP може шукати тільки перше входження прізвища в таблиці і не допоможе нам. Питання типу «Хто був розпорядником замовлення № 10256?» також залишиться без відповіді, т.к. вбудований VLOOKUP не може повертати значення зі стовпців ліворуч від пошукового.

Обидві ці проблеми вирішуються одним махом – давайте напишемо свою функцію, яка буде шукати не тільки перше, але, в загальному випадку, N-те входження. Крім того, він зможе шукати та видавати результати в будь-яких стовпцях. Назвемо це, скажімо, VLOOKUP2. 

Відкрийте редактор Visual Basic, натиснувши ALT+F11 або вибравши в меню Сервіс – Макрос – Редактор Visual Basic (Інструменти — Макрос — Редактор Visual Basic), вставте новий модуль (меню Вставка – модуль) і скопіюйте туди текст цієї функції:

Функція VLOOKUP2(Table As Variant, SearchColumnNum As Long, SearchValue As Variant, _ N As Long, ResultColumnNum As Long) Dim i As Long, iCount As Long Виберіть Case TypeName(Table) Case "Range" For i = 1 To Table.Rows .Count If Table.Cells(i, SearchColumnNum) = SearchValue Then iCount = iCount + 1 End If If iCount = N Then VLOOKUP2 = Table.Cells(i, ResultColumnNum) Exit For End If Next i Case "Variant()" For i = 1 To UBound(Table) If Table(i, SearchColumnNum) = SearchValue Then iCount = iCount + 1 If iCount = N Then VLOOKUP2 = Table(i, ResultColumnNum) Exit For End If Next i End Select End Function  

Закрийте редактор Visual Basic і поверніться до Excel.

Тепер закінчено Вставка – функція (Вставити — функція) в категорії Визначений користувачем (Визначений користувачем) ви можете знайти нашу функцію VLOOKUP2 і використовувати її. Синтаксис функції такий:

=VLOOKUP2(таблиця; кількість_стовпців_де_ми шукаємо; пошукове_значення; N; кількість_стовпців_від_до_отримання_значення)

Тепер обмеження стандартної функції нам не перешкода:

Покращення функції VLOOKUP

PS Особлива подяка The_Prist за покращення функції, щоб вона могла шукати в закритих книгах.

  • Пошук і заміна даних з однієї таблиці в іншу за допомогою функції VLOOKUP
  • «Лівий VLOOKUP» за допомогою функцій INDEX і MATCH

 

залишити коментар