Подобряване на функцията 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 Към 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

 

Оставете коментар