| ||||||||
КАТАЛОГ ТОВАРОВ Срок доставки товара в течении 1-3 дней !!!
|
Усовершенствуем функцию ВПР в Excel. Впр в экселеФункция ВПР (VLOOKUP) - СправочникФункция ВПР является одной из наиболее часто используемых при работе с данными в Excel. Функция не лишена недостатков, но ее обязательно следует освоить для понимая механизма работы с данными в Excel. Описание функции ВПРС помощью функции ВПР можно выполнить поиск в первом столбце диапазона ячеек и получить значение из любой ячейки в той же строке диапазона. Предположим, что в диапазоне A2:C10 содержится список сотрудников. Идентификаторы сотрудников хранятся в первом столбце диапазона, как показано на рисунке.Если известен идентификатор сотрудника, с помощью функции ВПР можно вернуть отдел, в котором он работает, или его имя. Чтобы получить имя сотрудника под номером 38, можно использовать формулу: =ВПР(38; A2:C10; 3; ЛОЖЬ) Эта формула находит значение 38 в первом столбце диапазона A2:C10, а затем возвращает значение, содержащееся в третьем столбце той же строки, что и у искомого значения («Алексей Орехов»).Разобраться с принципом работы данной функции легко по рисунку ниже: Принцип работы функции ВПР из категории «Ссылки и массивы» Синтаксис=ВПР(искомое_значение; таблица; номер_столбца; [интервальный_просмотр])Аргументыискомое_значениетаблицаномер_столбцаинтервальный_просмотр Обязательный. Значение, которое должно быть найдено в первом столбце таблицы или диапазона. Аргумент искомое_значение может быть значением или ссылкой. Если искомое_значение меньше, чем наименьшее значение в первом столбце аргумента таблица, функция ВПР возвращает значение ошибки #Н/Д. Обязательный. Диапазон ячеек, содержащий данные. Можно использовать ссылку на диапазон (например, A2:D8) или имя диапазона. Значения в первом столбце аргумента таблица — это значения, в которых выполняется поиск аргумента искомое_значение. Эти значения могут быть текстовыми, числовыми или логическими. Текстовые значения в нижнем и верхнем регистре считаются эквивалентными. Обязательный. Номер столбца в аргументе таблица, из которого возвращается совпадающее значение. Если номер_столбца равен 1, то возвращается значение из первого столбца аргумента таблица; если номер_столбца равен 2, — значение из второго столбца аргумента таблица и т. д.
Если аргумент интервальный_просмотр имеет значение ИСТИНА или опущен, то возвращается точное или приблизительное совпадение. Если точное совпадение не найдено, то возвращается наибольшее значение, которое меньше, чем искомое_значение. Внимание! Если аргумент интервальный_просмотр имеет значение ИСТИНА или опущен, значения в первом столбце аргумента таблица должны быть расположены в возрастающем порядке, иначе функция ВПР может вернуть неправильный результат. Если аргумент интервальный_просмотр имеет значение ЛОЖЬ, функция ВПР ищет только точное совпадение. Если в первом столбце аргумента таблица имеется несколько значений, соответствующих аргументу искомое_значение, используется первое найденное значение. Если точное совпадение не найдено, возвращается значение ошибки #Н/Д. Замечания
ПримерВидео работы функцииРазбор ВПРСравнение двух файловРешение задач #ExcelWorldChamp Дополнительные материалыКак сравнить два файла MS Excel#Excelwordlchamp 1-1 Решаем задачи первого тура Поделиться ссылкой:
msoffice-prowork.com Усовершенствуем функцию ВПР в Excel / ХабрПрочтение публикации Упрощаем бинарный поиск в Excel сподвигло на дополнительное усовершенствование функции ВПР по сравнению с приведенным в статье. Что не было учтено, и что хотелось бы добавить: 1. Универсальность, т.е. возможность вызывать функцию как для отсортированного массива, так и для неотсортированного. 2. Исключить необходимость два раза вызывать функцию бинарного поиска (ВПР). 3. Как исходная функция ВПР, так и предложенная в статье имеет следующий недостаток: номер колонки обычно фиксируется при вызове функции. Обычно жизнь не стоит на месте, и в таблицу приходится добавлять колонки в произвольное место. Если аргументы функции указаны в виде ссылок на ячейки, то Excel умеет самостоятельно изменять ссылки таким образом, чтобы ссылка продолжала ссылаться на те же данные, что и раньше. Если же ссылка задана номером колонки, то при добавлении колонок в середину таблицы, такой перенумерации не происходит и приходится осуществлять поиск использованных функций ВПР и менять вызовы вручную. Поэтому целесообразно задавать колонку с ключом и колонку с искомым значением в виде двух отдельных аргументов. 4. Сделать защиту от дурака — проверять передаваемые аргументы на корректность. В связи с этим целесообразно отделить указание на то, каким образом отсортирован массив (по возрастанию, по убыванию или не отсортирован) от желаемого результата (нужен точный результат или достаточно приближенного). Вот получившийся код с комментариями. ' VPR - улучшенная версия функций ВПР и ГПР (VLookup & HLookup) ' key - искомое значение (индекс) ' a - массив для поиска индекса ' b - массив такой же формы, для выдачи значения ' Ordered - указывает тип упорядочения массива: 1 - по возрастанию, 0 - не упорядочен, -1 - упорядочен по убыванию ' NotStrict - указывает, нужно точное или приблизительное значение: False - точное, True - достаточно приблизительного. ' Если массив не упорядочен (Ordered = 0), то всегда возвращается точное значение Function VPR(key As Variant, ByRef a As Range, ByRef b As Range, Optional Ordered As Integer = 0, Optional NotStrict As Boolean = False) As Variant ' проверяем корректность аргументов a и b - должны быть линейными, из одной области и ' с одинаковым ненулевым количеством элементов If (b.Areas.Count <> 1) Or ((b.Columns.Count > 1) And (b.Rows.Count > 1)) Then VPR = CDbl("") Exit Function End If If (a.Areas.Count <> 1) Or ((a.Columns.Count > 1) And (a.Rows.Count > 1)) Then VPR = CDbl("") Exit Function End If If (a.Count <> b.Count) Or (a.Count < 1) Then VPR = CDbl("") Exit Function End If If Ordered = 0 Then NotStrict = False End If Dim index As Long index = Application.WorksheetFunction.Match(key, a, Ordered) If (Not NotStrict) And (a(index).value <> key) Then VPR = CDbl("") Else VPR = b(index).value End If End Function
1. Возможность поиска в массиве, отсортированном по убыванию (Ordered = -1).2. Функция позволяет делать поиск если любой (или оба) из аргументов a и b являются горизонтальными рядами (т.е. обобщает и функцию горизонтального просмотра ГПР). Комментарии1. Вызов CDbl("") нужен для генерации ошибки (выдача #ЗНАЧ#).2. Используется не ВПР, а функция Match (русский аналог — ПОИСКПОЗ). Спасибо за внимание! habr.com Функция ВПР в ExcelФункция ВПР в Excel - одна из самых интересных и полезных функций для нахождения определенных значений в одной таблице и подстановки этих значений в другую таблицу. Однако, функция имеет некоторые ограничения, а также, при неправильном использовании, может выдавать некорректные результаты или приводить к ошибкам. Формула ВПРФункция ВПР предназначена для поиска и подстановки значений из одной таблицы в другую на основании какого-либо признака, объединяющего обе эти таблицы. Находится функция в категории «Ссылки и массивы». Свое название ВПР функция получила от первых букв в словах Вертикальное Первое Равенство. Смысл этой функции заключается в поиске значения в крайнем левом столбце таблицы и определении значения ячейки, находящейся в заданном столбце той же строки. Допустим, существует две таблицы. В одной таблице содержатся табельные номера работников и их имена, другая таблица состоит из табельных номеров и фамилий. Задача заключается в том, чтобы объединить эти таблицы, или другими словами, подставить в одну из этих таблиц данные из другой таблицы. Функция ВПР имеет четыре аргумента:
Результат вычисления функции виден на изображении ниже. В примере два работника с именами Иван и Сидор умышленно имеют одинаковый табельный номер. Если их поменять местами, то и результат вычисления функции ВПР будет другим, что может привести к неожиданным результатам. Функция определяет ПЕРВОЕ равенство. При использовании формул с функцией ВПР рекомендуется сделать сортировку таблицы по искомому значению, то есть, по табельному номеру в рассматриваемом примере. Ошибки #Н/Д, #ССЫЛКА! и #ЗНАЧ!Достаточно часто функция ВПР вместо ожидаемого результата выдает ошибки вида #Н/Д (значение недоступно формуле или функции). Появление таких ошибок, как правило, связано с отсутствием искомого значения в таблице, либо с неправильным вводом формулы и незнанием некоторых особенностей функции ВПР. Неправильный ввод формулыПри распространении формулы на другие ячейки, выделенные диапазоны могут быть смещены таким образом, что искомое значение оказывается за пределами таблицы. Результатом вычисления функции будет ошибка вида #Н/Д. В нашем простом примере таблица состоит всего из двух столбцов, на практике же столбцов может быть больше. Важно, чтобы, во-первых, столбец, в котором будет производиться поиск искомых значений был крайним левым, а во-вторых правильно определить номер столбца. Если в таблице два столбца, а при вводе формулы в третьем аргументе указано число, которое больше двух, то результатом вычисления функции будет ошибка типа #ССЫЛКА!, а если меньше единицы, то #ЗНАЧ! Число отформатировано как текстВ первой таблице, в ячейке с адресом «A2» число 2551 отформатировано как текст, а во второй таблице, в ячейке «D3» записано числовое значение 2551. Поскольку число 2551 не равно тексту 2551, функция выдает ошибку #Н/Д. При поиске числовых значений, необходимо позаботиться о том, чтобы и в таблице эти значения были также числовыми. Различие в написании текстовых значенийВ примере, который приведен выше, поиск в таблице осуществляется по табельному номеру, то есть по числовому значению. На практике же, вместо числовых значений могут использоваться значения текстовые. При работе с текстом нужно учитывать тот факт, что для ВПР регистр имеет значение, то есть функция различает строчные и заглавные буквы, а также буквы кириллицы и латиницы. В ячейке с адресом «A2» написана буква кириллицы, а в «D3» - буква латиницы, в результате ошибка. Если написание искомых значений различается в разных таблицах, то для корректной работы функции необходимо привести их к одинаковому виду. Лишние пробелы и другие непечатаемые символы также могут привести к неверному либо непредсказуемому результату. ЛОЖЬ и ИСТИНААргумент «Интервальный_просмотр» не является обязательным для функции ВПР. Этот аргумент может принимать два значения ЛОЖЬ (если необходимо найти точное совпадение) и ИСТИНА (если необходимо найти приблизительное совпадение). Этот момент не всегда понятен пользователям, поэтому требует уточнения, которое проще всего показать на примере. В последнем аргументе формулы установлено значение «ИСТИНА», что соответствует приблизительному поиску. Искомым значением является число 2552, но в таблице (той, которая расположена слева) искомое значение отсутствует, точного совпадения нет, поэтому функция ищет ближайшее меньшее число, то есть 2551 и возвращает значение «Иван». Если искомое значение – это текст, то при интервальном просмотре, соответствующем значению «ИСТИНА» и при отсутствии точного совпадения, функция будет искать ближайшее меньшее значение по алфавиту. Искомое значение – Петр, но в таблице нет значения Петр, поэтому функция ищет ближайшее меньшее значение по алфавиту. Буква «Ф» в алфавите находится после буквы «П», а вот «И» - до буквы «П», поэтому она и является меньшим значением. Соответственно результатом функции будет значение «Иванов». В случае, когда необходимо найти неточное совпадение с текстовым значением, необходимо использовать интервальный просмотр «ЛОЖЬ», а к искомому значению подставлять специальные символы совпадения (?-одиночный символ и *-произвольная последовательность символов). Тильда (~) ставится в том случае, если необходимо найти сами знаки (?) и (*). Несколько условий в ВПРВстречаются случаи, когда поиск необходимо осуществить по нескольким значениям. Для этого необходимо в обоих таблицах произвести сцепку нужных значений при помощи текстовой функции «Сцепить» и уже сцепленное значение указывать в качестве искомого значения. Ограничения в функции ВПРФункция «ВПР» позволяет решать широкий круг задач, однако имеет ряд ограничений. В случаях, когда в таблице несколько совпадений с искомым значением функция позволяет определить только первое (либо последнее, в зависимости от того как отсортирована таблица) совпадение. VBA-аналог функции ВПРКогда использование функции ВПР невозможно по каким-то причинам, либо функция выдает не тот результат, который нужен, можно воспользоваться надстройкой для Excel, которая по аналогии с формулой ВПР позволяет производить поиск и подстановку значений из одной таблицы в другую. надстройка для быстрого поиска и подстановки значений Аналогично функции ВПР, в диалоговом окне надстройки необходимо задать несколько параметров:
При выборе опции «Точное совпадение», программа находит в таблице точное равенство, при выборе опции «Неточное совпадение», программа приводит сравниваемые значения к нижнему регистру, удаляет лишние пробелы и определяет не равенство, а содержание искомого значения в значениях таблицы. При необходимости можно определять не только первое, а любое заданное равенство, если таковых несколько, либо вообще все совпадения через запятую. Для удобства определения номеров столбцов в диалоговом окне предусмотрена возможность переключения с текстовых названий столбцов на числовые и обратно. Кроме того, реализована возможность сохранения настроек диалогового окна для следующих сеансов работы.
macros-vba.ru Использование функции ВПР в Excel: неточное соответствиеНедавно мы посвятили статью одной из самых полезных функций Excel под названием ВПР и показали, как она может быть использована для извлечения нужной информации из базы данных в ячейку рабочего листа. Мы также упомянули, что существует два варианта использования функции ВПР и только один из них имеет дело с запросами к базе данных. В этой статье Вы узнаете другой менее известный способ применения функции ВПР в Excel. Если Вы этого ещё не сделали, то обязательно прочтите прошлую статью о функции ВПР, поскольку вся информация, изложенная далее, предполагает, что Вы уже знакомы с принципами, описанными в первой статье. При работе с базами данных, функции ВПР передаётся уникальный идентификатор, который служит для определения информации, которую мы хотим найти (например, код товара или идентификационный номер клиента). Этот уникальный код должен присутствовать в базе данных, иначе ВПР сообщит об ошибке. В этой статье мы рассмотрим такой способ использования функции ВПР, когда идентификатора не существует в базе данных вообще. Как будто функция ВПР переключилась в режим приближенной работы, и сама выбирает, какие данные предоставить нам, когда мы что-то хотим найти. В определённых обстоятельствах именно так и нужно. Пример из жизни. Ставим задачуПроиллюстрируем эту статью примером из реальной жизни – расчёт комиссионных на основе большого ряда показателей продаж. Мы начнём с очень простого варианта, и затем постепенно будем усложнять его, пока единственным рациональным решением задачи не станет использование функции ВПР. Первоначальный сценарий нашей вымышленной задачи звучит так: если продавец за год делает объём продаж более $30000, то его комиссионные составляют 30%. В противном случае, комиссия составляет, лишь 20%. Оформим это в виде таблицы: Продавец вводит данные о своих продажах в ячейку B1, а формула в ячейке B2 определяет верную ставку комиссионного вознаграждения, на которое продавец может рассчитывать. В свою очередь, полученная ставка используется в ячейке B3, чтобы рассчитать общую сумму комиссионных, которую продавец должен получить (простое перемножение ячеек B1 и B2). Самая интересная часть таблицы заключена в ячейке B2 – это формула для определения ставки комиссионного вознаграждения. Эта формула содержит функцию Excel под названием IF (ЕСЛИ). Для тех читателей, кто не знаком с этой функцией, поясню как она работает: IF(condition, value if true, value if false)ЕСЛИ(условие; значение если ИСТИНА; значение если ЛОЖЬ) Условие – это аргумент функции, который принимает значение либо TRUE (ИСТИНА), либо FALSE (ЛОЖЬ). В примере, приведённом выше, выражение B1<B5 может быть прочитано как: Правда ли, что B1 меньше B5? Или можно сказать по-другому: Правда ли, что общая сумма продаж за год меньше порогового значения? Если на этот вопрос мы отвечаем ДА (ИСТИНА), то функция возвращает value if true (значение если ИСТИНА). В нашем случае это будет значение ячейки B6, т.е. ставка комиссионных при общем объёме продаж ниже порогового значения. Если мы отвечаем на вопрос НЕТ (ЛОЖЬ), тогда возвращается value if false (значение если ЛОЖЬ). В нашем случае это значение ячейки B7, т.е. ставка комиссионных при общем объёме продаж выше порогового значения. Как Вы можете видеть, если мы берём общую сумму продаж $20000, то получаем в ячейке B2 ставку комиссионных 20%. Если же мы введём значение $40000, то ставка комиссионных изменится на 30%: Таким образом работает наша таблица. Усложняем задачуДавайте немного усложним задачу. Установим ещё одно пороговое значение: если продавец зарабатывает более $40000, тогда ставка комиссионных возрастает до 40%: Вроде бы всё просто и понятно, но наша формула в ячейке B2 становится заметно сложнее. Если Вы внимательно посмотрите на формулу, то увидите, что третий аргумент функции IF (ЕСЛИ), превратился в ещё одну полноценную функцию IF (ЕСЛИ). Такая конструкция называется вложением функций друг в друга. Excel с радостью допускает такие конструкции, и они даже работают, но их гораздо сложнее читать и понимать. Мы не будем вникать в технические подробности — почему и как это работает, и не будем вдаваться в нюансы записи вложенных функций. Ведь это статья, посвященная функции ВПР, а не полное руководство по Excel. Как бы там ни было, формула усложняется! А что, если мы введем еще один вариант ставки комиссионных, равный 50%, для тех продавцов, кто сделал объём продаж более $50000. А если кто-то продал на сумму более $60000 – тому заплатить 60% комиссионных? Теперь формула в ячейке B2, даже если она записана без ошибок, стала совершенно не читаемой. Думаю, что найдется мало желающих использовать формулы с 4-мя уровнями вложенности в своих проектах. Должен же существовать более простой способ?! И такой способ есть! Нам поможет функция ВПР. Применяем функцию ВПР к решению задачиДавайте немного изменим дизайн нашей таблицы. Мы сохраним все те же поля и данные, но расположим их по-новому, в более компактном виде: Прервитесь на минутку и убедитесь, что новая таблица Rate Table включает те же данные, что и предыдущая таблица пороговых значений. Основная идея состоит в том, чтобы использовать функцию ВПР для определения нужной тарифной ставки по таблице Rate Table в зависимости от объема продаж. Обратите внимание, что продавец может продать товаров на такую сумму, которая не равна ни одному из пяти имеющихся в таблице пороговых значений. К примеру, он мог продать на сумму $34988, а такой суммы нет. Давайте посмотрим, как функция ВПР сможет справиться с такой ситуацией. Вставляем функцию ВПРВыбираем ячейку B2 (место, куда мы хотим вставить нашу формулу), и находим VLOOKUP (ВПР) в библиотеке функций Excel: Formulas (Формулы) > Function Library (Библиотека Функций) > Lookup & Reference (Ссылки и массивы). Появляется диалоговое окно Function Arguments (Аргументы функции). По очереди заполняем значения аргументов, начиная с Lookup_value (Искомое_значение). В данном примере это общая сумма продаж из ячейки B1. Ставим курсор в поле Lookup_value (Искомое_значение) и выбираем ячейку B1. Далее нужно указать функции ВПР, где искать данные. В нашем примере это таблица Rate Table. Ставим курсор в поле Table_array (Таблица) и выделяем всю таблицу Rate Table, кроме заголовков. Далее мы должны уточнить, данные из какого столбца необходимо извлечь с помощью нашей формулы. Нас интересует ставка комиссионных, которая находится во втором столбце таблицы. Следовательно, для аргумента Col_index_num (Номер_столбца) вводим значение 2. И, наконец, вводим последний аргумент — Range_lookup (Интервальный_просмотр). Важно: именно в использовании этого аргумента заключается различие между двумя способами применения функции ВПР. При работе с базами данных аргумент Range_lookup (Интервальный_просмотр) должен всегда иметь значение FALSE (ЛОЖЬ), чтобы искать точное соответствие. В нашем же варианте использования функции ВПР, мы должны оставить это поле пустым, либо ввести значение TRUE (ИСТИНА). Крайне важно правильно выбрать этот параметр. Чтобы было понятнее, мы введём TRUE (ИСТИНА) в поле Range_lookup (Интервальный_просмотр). Хотя, если оставить поле пустым, это не будет ошибкой, так как TRUE — это его значение по умолчанию: Мы заполнили все параметры. Теперь нажимаем ОК, и Excel создаёт для нас формулу с функцией ВПР. Если поэкспериментируем с несколькими различными значениями итоговой суммы продаж, то мы убедимся, что формула работает правильно. ЗаключениеКогда функция ВПР работает с базами данных, аргумент Range_lookup (Интервальный_просмотр) должен принимать FALSE (ЛОЖЬ). А значение, введённое в качестве Lookup_value (Искомое_значение) должно существовать в базе данных. Другими словами, идёт поиск точного совпадения. В примере, что мы рассмотрели в данной статье, нет необходимости получать точное соответствие. Это тот самый случай, когда функция ВПР должна переключиться в режим приближенной работы, чтобы вернуть нам нужный результат. Например: Мы хотим определить, какую ставку использовать в расчёте комиссионных для продавца с объёмом продаж $34988. Функция ВПР возвращает нам значение 30%, что является абсолютно верным. Но почему же формула выбрала строку, содержащую именно 30%, а не 20% или 40%? Что понимается под приближенным поиском? Давайте внесём ясность. Когда аргумент Range_lookup (Интервальный_просмотр) имеет значение TRUE (ИСТИНА) или опущен, функция ВПР просматривает первый столбец и выбирает наибольшее значение, которое не превышает искомое. Важный момент: Чтобы эта схема работала, первый столбец таблицы должен быть отсортирован в порядке возрастания. Оцените качество статьи. Нам важно ваше мнение: office-guru.ru |
|
||||||
© All rights reserved | Карта сайта
|