Хитрости »
15 Май 2011 512002 просмотров
Как найти значение в другой таблице или сила ВПР
- Задача и её решение при помощи ВПР
- Описание аргументов ВПР
- Что важно всегда помнить при работе с ВПР
- Как избежать ошибки #Н/Д(#N/A) в ВПР?
- Как при помощи ВПР искать значение по строке, а не столбцу?
- Решение при помощи ПОИСКПОЗ
- Работа с критериями длиннее 255 символов
Если в двух словах, то ВПР позволяет сравнить данные двух таблиц на основании значений из одного столбца.
Чтобы чуть лучше понять принцип работы ВПР лучше начать с некоего практического примера. Возьмем две таблицы:
рис.1
На картинке выше для удобства они показаны рядом, но на самом деле могут быть расположены на разных листах и даже в разных книгах. Таблицы по сути одинаковые, но фамилии в них расположены в разном порядке, и к тому же в одной заполнены все столбцы, а во второй столбцы ФИО и Отдел. И из первой таблицы необходимо подставить во вторую дату для каждой фамилии. Для трех записей это не проблема и руками сделать — все очевидно. Но в жизни это таблицы на тысячи записей и поиск с подстановкой данных вручную может занять не один час. Вот где ВПР(VLOOKUP) будет весьма кстати. Все, что необходимо — записать в ячейку
C2
второй таблицы(туда, куда необходимо подставить даты из первой таблицы) такую формулу:
=ВПР($A2;Лист1!$A$1:$C$4;3;0)
=VLOOKUP($A2,Лист1!$A$1:$C$4,3,0)
Записать формулу можно либо непосредственно в ячейку, либо воспользовавшись диспетчером функций, выбрав в категории Ссылки и массивы(References & Arrays) функцию ВПР(VLOOKUP) и по отдельности указав нужные критерии. Теперь копируем(
Ctrl
+
C
) ячейку с формулой(С2), выделяем все ячейки столбца
С
до конца данных и вставляем(
Ctrl
+
V
).
Теперь разберем поподробнее саму функцию, её аргументы и некоторые особенности.
ВПР ищет заданное нами значение(аргумент искомое_значение) в первом столбце указанного диапазона(аргумент таблица). Поиск значения всегда происходит сверху вниз(собственно, поэтому функция и называется ВПР: Вертикальный ПРосмотр). Как только функция находит заданное значение — поиск прекращается, ВПР берет строку с найденным значением и смотрит на аргумент номер_столбца. Именно из этого столбца берётся значение, которое мы и видим как итог работы функции. Т.е. в нашем конкретном случае, для ячейки С2 второй таблицы, функция берет фамилию «Петров С.А.»(ячейка $A2 второй таблицы) и ищет её в первом столбце указанной таблицы(Лист1!$A$1:$C$4), т.е. в столбце А. Как только находит(это ячейка А3)
ВПР может вернуть только одно значений — первое, подходящее под критерий. Если искомое значение не найдено(отсутствует в таблице), то результатом функции будет ошибка #Н/Д(#N/A). Не надо этого бояться — это даже полезно. Вы точно будете знать, каких записей нет и таким образом можете сравнивать две таблицы друг с другом. Иногда получается так, что Вы видите: данные есть в обеих таблицах, но ВПР выдает #Н/Д. Значит данные в Ваших таблицах не идентичны. В какой-то из них есть лишние неприметные пробелы(обычно перед значением или после), либо знаки кириллицы перемешаны со знаками латиницы. Так же #Н/Д будет, если критерии числа и в искомой таблице они записаны как текст(как правило в левом верхнем углу такой ячейки появляется зеленый треугольничек), а в итоговой — как числа. Или наоборот.
Описание аргументов ВПР
- Искомое_значение($A2) — это то значение из одной таблицы, которые мы ищем в другой таблице. Т.е. для первой записи второй таблицы это будет Петров С.А.. Здесь можно указать либо непосредственно текст критерия(в этом случае он должен быть в кавычках — =ВПР(«Петров С.А»;Лист1!$A$1:$C$4;3;0), либо ссылку на ячейку, с данным текстом(как в примере функции). Есть небольшой нюанс: так же можно применять символы подстановки: «*» и «?». Это очень удобно, если необходимо найти значения лишь по части строки. Например, можно не вводить полностью «Петров С.А», а ввести лишь фамилию и знак звездочки — «Петров*». Тогда будет выведена любая запись, которая начинается на «Петров». Если же надо найти запись, в которой в любом месте строки встречается фамилия «Петров», то можно указать так: «*петров*». Если хотите найти фамилию Петров и неважно какие инициалы будут у имени-отчества(если ФИО записаны в виде Иванов И.И.), то здесь в самый раз такой вид: «Иванов ?.?.».
Часто необходимо для каждой строки указать свое значение(в столбце А Фамилии и надо их все найти). В таком случае всегда указываются ссылки на ячейки столбца А. Например, в ячейке A2 записано: Иванов. Так же известно, что Иванов есть в другой таблице, но после фамилии могут быть записаны и имя и отчество(или еще что-то). Но нам нужно найти только строку, которая начинается на фамилию. Тогда необходимо записать следующим образом: A2&»*». Эта запись будет равнозначна «Иванов*». В A2 записано Иванов, амперсанд(&) используется для объединения в одну строку двух текстовых значений. Звездочка в кавычках (как и положено быть тексту внутри формулы). Таким образом и получаем:
A2&»*» =>
«Иванов»&»*» =>
«Иванов*»
А полная формула в итоге будет выглядеть так: =ВПР(A2&»*»;Лист1!$A$1:$C$4;3;0)
Очень удобно, если значений для поиска много.
Если надо определить есть ли хоть где-то слово в строке, то звездочки ставим с обеих сторон: «*»&A1&»*» - Таблица(Лист1!$A$1:$C$4) — указывается диапазон ячеек, в первом столбце которых будет просматриваться аргумент Искомое_значение. Диапазон должен содержать данные от первой ячейки с данными до самой последней. Это не обязательно должен быть указанный в примере диапазон. Если строк 100, то Лист1!$A$2:$C$100. Диапазон в аргументе таблица всегда должен быть «закреплен», т.е. содержать знаки доллара($) перед названием столбцов и перед номерами строк(Лист1!$A$1:$C$4).
- Номер_столбца(3) — указывается номер столбца в аргументе Таблица, значения из которого нам необходимо записать в итоговую ячейку в качестве результата. В примере это Дата принятия — т.е. столбец №3. Если бы нужен был отдел, то необходимо было бы указать номер столбца 2, а если бы нам понадобилось просто сравнить есть ли фамилии одной таблицы в другой, то можно было бы указать и 1. Номер столбца всегда указывается числом и не должен быть больше числа столбцов в аргументе Таблица.
если аргумент Таблица имеет слишком большое кол-во столбцов и необходимо вернуть результат из последнего столбца, то совсем необязательно высчитывать их количество. Можно использовать формулу, которая подсчитывает количество столбцов в указанном диапазоне: =ВПР($A2;Лист1!$A$1:$C$4;ЧИСЛСТОЛБ(Лист1!$A$1:$C$4);0). К слову в данном случае Лист1! тоже можно убрать, т.к. функция ЧИСЛОСТОЛБ просто подсчитывает количество столбцов в переданном ей диапазоне и неважно на каком он листе: =ВПР($A2;Лист1!$A$1:$C$4;ЧИСЛСТОЛБ($A$1:$C$4);0).
- Интервальный_просмотр(0) — очень интересный аргумент. Может быть равен либо ИСТИНА либо ЛОЖЬ. Так же допускается указать 1 или 0. 1 = ИСТИНА, 0 = ЛОЖЬ. Если в ВПР указать данный параметр равный 0 или ЛОЖЬ, то будет происходить поиск точного соответствия заданному Искомому_значению. Это не имеет никакого отношения к знакам подстановки(«*» и «?»). Если же использовать 1 или ИСТИНА, то…Совсем в двух словах не объяснить. Если вкратце — ВПР будет искать наиболее похожее значение, подходящее под Искомомое_значение. Иногда очень полезно. Правда, если использовать данный параметр, то необходимо, чтобы список в аргументе Таблица был отсортирован по возрастанию. Обращаю внимание на то, что сортировка необходима только в том случае, если аргумент Интервальный_просмотр равен ИСТИНА или 1. Если же 0 или ЛОЖЬ — сортировка не нужна. Этот аргумент необходимо использовать осторожно — не стоит указывать 1 или ИСТИНА, если нужно найти точное соответствие и уж тем более не стоит использовать, если не понимаете принцип его работы.
Подробнее про работу ВПР с интервальным просмотром, равным 1 или ИСТИНА можно ознакомиться в статье ВПР и интервальный просмотр(range_lookup)
- Таблица всегда должна начинаться с того столбца, в котором ищем Искомое_значение. Т.е. ВПР не умеет искать значение во втором столбце таблицы, а значение возвращать из первого. В лучшем случае ничего найдено не будет и получим ошибку #Н/Д(#N/A), а в худшем результат будет совсем не тот, который должен быть
- аргумент Таблица должен быть «закреплен», т.е. содержать знаки доллара($) перед названием столбцов и перед номерами строк(Лист1!$A$1:$C$4). Это и есть закрепление(если точнее, то это называется абсолютной ссылкой на диапазон). Как это делается. Выделяете текст ссылки и жмете клавишу F4 до тех пор, пока не увидите, что и перед обозначением имени столбца и перед номером строки не появились доллары. Если этого не сделать, то при копировании формулы из одной ячейки в остальные аргумент Таблица будет «съезжать» и результат может быть совсем не таким, какой ожидался(в лучшем случае получите ошибку #Н/Д(#N/A)
- номер_столбца не должен превышать общее кол-во столбцов в аргументе таблица, а сама Таблица соответственно должна содержать столбцы от первого(в котором ищем) до последнего(из которого необходимо возвращать значения). В примере указана Лист1!$A$1:$C$4 — всего 3 столбца(A, B, C). Значит не получится вернуть значение из столбца D(4), т.к. в таблице только три столбца. Т.е. если мы запишем формулу так: =ВПР($A2;Лист1!$A$1:$C$4;4;0) — мы получим ошибку #ССЫЛКА!(#REF!).
Если аргументом Таблица указан диапазон $B$1:$C$4 и необходимо вернуть данные из столбца С, то правильно будет указать номер столбца 2. Т.к. аргумент Таблица($B$1:$C$4) содержит только два столбца — В и С. Если же попытаться указать номер столбца 3(каким по счету он является на листе), то получим ошибку #ССЫЛКА!(#REF!), т.к. третьего столбца в указанном диапазоне просто нет.
Многие наверняка заметили, что на картинке у меня попутаны отделы для ФИО(в обеих таблицах ФИО относятся к разным отделам). Это не ошибка записи. В прилагаемом к статье примере показано, как можно одной формулой подставить и отделы и даты, не меняя вручную аргумент Номер_столбца: =ВПР($A2;Лист1!$A$1:$C$4;СТОЛБЕЦ();0). Такой подход сработает, если в обеих таблицах одинаковый порядок столбцов.
Как избежать ошибки #Н/Д(#N/A) в ВПР?
Еще частая проблема — многие не хотят видеть #Н/Д результатом, если совпадение не найдено. Это можно обойти при помощи специальных функций.
Для пользователей Excel 2003 и старше:
=ЕСЛИ(ЕНД(ВПР($A2;Лист1!$A$1:$C$4;3;0));»»;ВПР($A2;Лист1!$A$1:$C$4;3;0))
=IF(ISNA(VLOOKUP($A2,Лист1!$A$1:$C$4,3,0)),»»,VLOOKUP($A2,Лист1!$A$1:$C$4,3,0))
Теперь если ВПР не найдет совпадения, то ячейка будет пустой.
А пользователям версий Excel 2007 и выше будет удобнее использовать функцию
ЕСЛИОШИБКА(IFERROR)
:
=ЕСЛИОШИБКА(ВПР($A2;Лист1!$A$1:$C$4;3;0);»»)
=IFERROR(VLOOKUP($A2,Лист1!$A$1:$C$4,3,0);»»)
Подробнее про различие между использованием ЕСЛИ(ЕНД и ЕСЛИОШИБКА я разбирал в статье: Как в ячейке с формулой вместо ошибки показать 0
Но я бы не рекомендовал использовать
ЕСЛИОШИБКА(IFERROR)
, не убедившись, что ошибки появляются только для реально отсутствующих значений. Иногда ВПР может вернуть #Н/Д и в других ситуациях:
- искомое значение состоит более чем из 255 символов(решение этой проблемы приведено ниже в этой статье: Работа с критериями длиннее 255 символов)
- искомое значение является числом с большим кол-вом знаков после запятой. Excel не может правильно воспринимать такие числа и в итоге ВПР может вернуть ошибку. Правильным решением здесь будет округлить искомое значение хотя бы до 4-х или 5-ти знаков после запятой(конечно, если это допустимо):
=ВПР(ОКРУГЛ($A2;5);Лист1!$A$1:$C$4;3;0)
=VLOOKUP(ROUND($A2,2),Лист1!$A$1:$C$4,3,0) - искомое значение содержит специальные или непечатаемые символы.
В этом случае придется либо избавиться от непечатаемых символов в искомом аргументе:
=ВПР(ПЕЧСИМВ($A2);Лист1!$A$1:$C$4;3;0)
=VLOOKUP(CLEAN($A2),Лист1!$A$1:$C$4,3,0)
либо добавить перед всеми специальными символами(такими как звездочка или вопр.знак) знак тильды(~), чтобы сделать эти знаки просто знаками, а не знаками специального значения(так же работа со специальными(служебными) символами описывалась в статье: Как заменить/удалить/найти звездочку). Добавить символ перед знаком той же тильды можно при помощи функции ПОДСТАВИТЬ(SUBSTITUTE):
=ВПР(ПОДСТАВИТЬ($A2;»~»;»~~»);Лист1!$A$1:$C$4;3;0)
=VLOOKUP(SUBSTITUTE(A2,»~»,»~~»),Лист1!$A$1:$C$4,3,0)
Если необходимо добавить тильду сразу перед несколькими знаками, то делает это обычно так(на примере подстановки одновременно для тильды и звездочки):
=ВПР(ПОДСТАВИТЬ(ПОДСТАВИТЬ($A2;»~»;»~~»);»*»;»~*»);Лист1!$A$1:$C$4;3;0)
=VLOOKUP(SUBSTITUTE(SUBSTITUTE(A2,»~»,»~~»),»*»,»~*»),Лист1!$A$1:$C$4,3,0)
На самом деле ответ будет коротким — ВПР всегда ищет сверху вниз. Слева направо она не умеет. Но зато слева направо умеет искать её сестра ГПР(HLookup) — Горизонтальный
ПР
осмотр.
ГПР ищет заданное значение(аргумент
искомое_значение
) в первой строке указанного диапазона(аргумент
таблица
) и возвращает для него значение из строки таблицы, указанной аргументом номер_строки. Поиск значения всегда происходит слева направо и заканчивается сразу, как только значение найдено. Если значение не найдено, функция возвращает значение ошибки
#Н/Д(#N/A)
.
Если надо найти значение «Иванов» в строке 2 и вернуть значение из строки 5 в таблице
A2:H10
, то формула будет выглядеть так:
=ГПР(«Иванов»;$A$2:$H$10;5;0)
=HLOOKUP(«Иванов»,$A$2:$H$10,5,0)
Все правила и синтаксис функции точно такие же, как у ВПР:
-в искомом значении можно применять символы астерикса(*) и вопр.знака(?) — «Иванов*»;
-таблица должна быть закреплена —
$A$2:$H$10
;
-интервальный просмотр работает по тому же принципу(0 или ЛОЖЬ точный просмотр слева-направо, 1 или ИСТИНА — интервальный).
Общий принцип работы
ПОИСКПОЗ(MATCH)
очень похож на ВПР — функция ищет заданное значение в массиве (в столбце или строке) и возвращает его позицию(порядковый номер в заданном массиве). Т.е. ищет
Искомое_значение
в аргументе
Просматриваемый_массив
и в качестве результата выдает номер позиции найденного значения в
Просматриваемом_массиве
. Именно номер позиции, а не само значение. Если бы мы хотели применить её для таблицы выше, то она была бы такой:
=ПОИСКПОЗ($A2;Лист1!$A$1:$A$4;0)
=MATCH($A2,Лист1!$A$1:$A$4,0)
- Искомое_значение($A2) — непосредственно значение или ссылка на ячейку с искомым значением. Если опираться на пример выше — то это ФИО. Здесь все ровно так же, как и с ВПР. Так же допустимы символы подстановки * и ? и ровно в таком же исполнении.
- Просматриваемый_массив(Лист1!$A$1:$A$4) — указывается ссылка на столбец, в котором необходимо найти искомое значение. В отличии от той же ВПР, где указывается целая таблица, это должен быть именно один столбец, в котором мы собираемся искать Искомое_значение. Если попытаться указать более одного столбца, то функция вернет ошибку.Справедливости ради надо отметить, что можно указать либо столбец, либо строку
- Тип_сопоставления(0) — то же самое, что и Интервальный_просмотр в ВПР. С теми же особенностями. Отличается разве что возможностью поиска наименьшего от искомого или наибольшего.
С основным разобрались. Но ведь нам надо вернуть не номер позиции, а само значение. Значит ПОИСКПОЗ в чистом виде нам не подходит. По крайней мере одна, сама по себе. Но если её использовать вместе с функцией ИНДЕКС(INDEX)(которая возвращает из указанного диапазона значение на пересечении заданных строки и столбца) — то это то, что нам нужно и даже больше.
=ИНДЕКС(Лист1!$A$1:$C$4;ПОИСКПОЗ($A2;Лист1!$A$1:$A$4;0);2)
Такая формула результатом вернет то же, что и ВПР.
Аргументы функции ИНДЕКС
Массив(Лист1!$A$2:$C$4). В качестве этого аргумента мы указываем диапазон, из которого хотим получить значения. Может быть как один столбец, так и несколько. В случае, если столбец один, то последний аргумент функции указывать не обязательно или он всегда будет равен 1(столбец-то всего один). К слову — данный аргумент может совершенно не совпадать с тем, который мы указываем в аргументе Просматриваемый_массив функции ПОИСКПОЗ.
Далее идут Номер_строки и Номер_столбца. Именно в качестве Номера_строки мы и подставляем ПОИСКПОЗ, которая возвращает нам номер позиции в массиве. На этом все и строится. ИНДЕКС возвращает значение из Массива, которое находится в указанной строке(Номер_строки) Массива и указанном столбце(Номер_столбца), если столбцов более одного. Важно знать, что в данной связке кол-во строк в аргументе Массив функции ИНДЕКС и кол-во строк в аргументе Просматриваемый_массив функции ПОИСКПОЗ должно совпадать. И начинаться с одной и той же строки. Это в обычных случаях, если не преследуются иные цели.
Так же как и в случае с ВПР, ИНДЕКС в случае не нахождения искомого значения возвращает #Н/Д. И обойти подобные ошибки можно так же:
Для всех версий Excel(включая 2003 и раньше):
=ЕСЛИ(ЕНД(ПОИСКПОЗ($A2;Лист1!$A$1:$A$4;0));»»;ИНДЕКС(Лист1!$A$1:$C$4;ПОИСКПОЗ($A2;Лист1!$A$2:$A$4;0);2))
Для версий 2007 и выше:
=ЕСЛИОШИБКА(ИНДЕКС(Лист1!$A$1:$C$4;ПОИСКПОЗ($A2;Лист1!$A$1:$A$4;0);2);»»)
Есть у ИНДЕКС-ПОИСКПОЗ и еще одно преимущество перед ВПР. Дело в том, что ВПР не может искать значения, длина строки которых содержит более 255 символов. Это случается редко, но случается. Можно, конечно, обмануть ВПР и урезать критерий:
=ВПР(ПСТР($A2;1;255);ПСТР(Лист1!$A$1:$C$4;1;255);3;0)
но это формула массива. Да и к тому же далеко не всегда такая формула вернет нужный результат. Если первые 255 символов идентичны первым 255 символам в таблице, а дальше знаки различаются — формула этого уже не увидит. Да и возвращает формула исключительно текстовые значения, что в случаях, когда возвращаться должны числа, не очень удобно.
Поэтому лучше использовать такую хитрую формулу:
=ИНДЕКС(Лист1!$A$1:$C$4;СУММПРОИЗВ(ПОИСКПОЗ(ИСТИНА;Лист1!$A$1:$A$4=$A2;0));2)
Здесь я в формулах использовал одинаковые диапазоны для удобочитаемости, но в примере для скачивания они различаются от указанных здесь.
Сама формула построена на возможности функции СУММПРОИЗВ преобразовывать в массивные вычисления некоторых функций внутри неё. В данном случае ПОИСКПОЗ ищет позицию строки, в которой критерий равен значению в строке. Подстановочные символы здесь применить уже не получится.
Ну и все же я рекомендовал бы Вам прочитать подробнее про данные функции в справке.
В прилагаемом к статье примере Вы найдете примеры использования всех описанных случаев и пример того, почему ИНДЕКС и ПОИСКПОЗ порой предпочтительнее ВПР.
Скачать пример
Tips_All_VLookUp.xls (26,0 KiB, 17 435 скачиваний)
Так же см.:
ВПР и интервальный просмотр(range_lookup)
ВПР по двум и более критериям
ВПР с возвратом всех значений
ВПР с поиском по нескольким листам
ВПР_МН
ВПР_ВСЕ_КНИГИ
Как заменить/удалить/найти звездочку?
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика
Поиск документа Excel по содержимому текста.
Смотрите также Excel-файл, то там условии, что ExcelЮрий М макросы или дополнения, If searchdepth% = coll.Count ‘ перебираем в которых имеется
сентября — table_export_06KAsep.xls
: Я на планете — (D5) вписано
поиска настроен, жмем«Искать» регистра. внутри слова. Например, разберемся, как он мы работали. ИщемРассмотрим, ячейки есть, но корректно определит разделитель,
: Я так понимаю, или нужно самому 0 Then searchdepth% все элементы коллекции, различные статьи иРеально Буду рад дал древний файл слово. на кнопкувы переведете в
К тому же, в релевантным запросу в работает, и как
среди них. Если
как найти документ в ТЕКСТОВОМ (csv) макрос укажет на что тему можно
писать макрос? = 999 Set содержащей пути к основной файл, в любой помощи. кажется от Павла,В одной папке«OK» позицию выдачу может попасть этом случае будет им пользоваться. документ давно неExcel по содержимому текста
— их быть ячейку, как будто удалить?Guest coll = FilenamesCollection(FolderPath$, файлам НомерФайла =
которм выполняется поиск.
Иначе искать в который делает чуть с Главным файлом.
«В книге» не только содержимое считаться слово «Направо».Скачать последнюю версию открывали и его, не может. он открывал Excel-файл.
abricos29 : Комбинированный способ:
searchmask$, searchdepth%) Application.ScreenUpdating i ПутьКФайлу = В основном файле
ручную очень долго, больше — там — лежит несколькоБывают случаи, когда нужно, то поиск будет конкретной ячейки, но Если вы зададите Excel
нет в списке,таблицыСкорее всего, ВыВозможно, я не: Я подобного неПеребор файлов в = False For coll(i) ИмяФайла = вводится запрос для по причине того просто нужно лишнее подпапок с документами произвести поиск не производиться по всем и адрес элемента, в поисковике цифруПоисковая функция в программе то нажимаем на, например, когда не говорите про csv-файл, прав, но мне нашёл на форуме,
папке — избитая
i = 1 Dir(ПутьКФайлу) ДатаСоздания = поиска по остальным что таких таблиц повыкидывать, и вывод экселя. по конкретному словосочетанию, листам открытого файла. на который она «1», то в Microsoft Excel предлагает кнопку «Компьютер». помним название файла, открытый в Excel так показалось. очень лаконичный и тема. Можно найти To coll.Count filenumber FileDateTime(ПутьКФайлу) РазмерФайла =
файлам, и выдается на каждый регион подкорректировать.Пытался сам написать а найти ячейки,В параметре
ссылается. Например, в ответ попадут ячейки, возможность найти нужныеЗатем, нажимаем на кнопку документа, папки, т.д. )AB1 удобный макрос! Думаю кучу готовых кодов. = i pathtothefile FileLen(ПутьКФайлу) РазмерФайла = информация следующего характера (то есть ихА этот код макрос, но что-то
в которых находятся«Просматривать» ячейке E2 содержится которые содержат, например, текстовые или числовые «Обзор». В появившемсяПервый вариант.AB1: Добавил второй цикл: много кому можетВ коде только = coll(i) Filename FileOrFolderSize(РазмерФайла) Workbooks.Open Filename:=ПутьКФайлуВ каком файле много) явно рождён был не работает -
excel-office.ru
Поиск в программе Microsoft Excel
поисковые слова вможно изменить направление формула, которая представляет число «516». значения через окно диалоговом окне вПоиск документа: Разумеется, мы жеSub ПОИСК() Dim понадобиться, имхо. поменять исполняемую часть = Dir(pathtothefile) creationdate Workbooks(ПутьКФайлу).Activate Worksheets(Sheets(1)).Activate With найдено совпадение, 2-3Basil не в Экселе выдает ошибку.
любом порядке, даже, поиска. По умолчанию,
Поисковая функция в Excel
собой сумму ячеекДля того, чтобы перейти «Найти и заменить». строке поиска пишемExcel по названию папки. рассуждаем не абстрактно, folder_$, file_$, s$AB1Guest
Способ 1: простой поиск
= FileDateTime(pathtothefile) filesize ThisWorkbook.Worksheets(Sheets(1)) ‘ работаем предложения в котором: — потому иПодскажите, как макросом если их разделяют как уже говорилось A4 и C3.
- к следующему результату, Кроме того, в поисковую фразу илиНажимаем кнопку «Пуск», а в рамках Dim rw& Dim: Спасибо за полезный: Sub test() Dim = FileLen(pathtothefile) filesize 1 с листом найдено совпадение.Не по теме: не работает. И осуществить поиск этого другие слова и выше, поиск ведется Эта сумма равна
- опять нажмите кнопку приложении имеется возможность слово. Мы написали расположенную в левом функционала данного макроса sh ‘————————— rw макрос! Folder As String = FileOrFolderSize(filesize) Workbooks.Open ПоследняяСтрокаБД = .Range(«a»Заранее благодарен!Доброго дня. в Экселе так слова в документах символы. Тогда данные по порядку построчно. 10, и именно«Найти далее» расширенного поиска данных. «визитка». Появится список нижнем углу монитора.
- abricos29 = 4 Withabricos29 Dim wb As Filename:=pathtothefile Workbooks(pathtothefile).Activate Worksheets(Sheets(1)).Activate & .Rows.Count).End(xlUp).Row ‘sku144
Хочу сразу сказать по всем файлам экселя и вывести слова нужно выделить Переставив переключатель в это число отображается.Простой поиск данных в файлов Excel, имеющим В появившемся списке: Еще этот макрос
ThisWorkbook.Sheets(1) .UsedRange.Offset(3, 0).EntireRow.Delete: Пожалуйста, один минус String Dim objWb With ThisWorkbook.Worksheets(Sheets(1)) lastline вычисляем номер последней: Как вариант для — я вам поиск не пойдёт, в столбец G5:G16 с обеих сторон позицию в ячейке E2.Так можно продолжать до программе Excel позволяет в тексте слово нажимаем на кнопку ищет только в s = .Cells(2, всё же есть, As Workbook Dim
= Cells(Rows.Count, 1).End(xlUp).Row строки Dim Диапазон_Ячеек_для_Поиска начала получить список помочь не смогу. если ранее вручную
— названия тех знаком «*». Теперь«По столбцам» Но, если мы тех, пор, пока
- найти все ячейки, «визитка». «Этот компьютер» (в папке, надо попробовать 3).Value End With я его попытался workWb As Workbook Dim rangeofcells As As Range, РезультатПоиска файлов где нуженПонимаете, вас, как он так не файлов экселя, где в поисковой выдаче, можно задать порядок зададим в поиске отображение результатов не в которых содержитсяВнимание! Word 2013) или реализовать чтоб и If s = посадить на кнопку Dim i As Range, searchresults As As Range, АдресПервойНайденнойЯчейки поиск. Предположим, все я понял, интересуют остался настроенным, причём
Способ 2: поиск по указанному интервалу ячеек
это слово встречается будут отображены все формирования результатов выдачи, цифру «4», то начнется по новому введенный в поисковоеВнизу этого окна «Мой компьютер» (в в подпапках искал. «» Then MsgBox и вызываю в Integer Set workWb Range, addressfirstcell As As String Set
- файлы в одной продажи за период, синтаксис совсем другой.
- хотя бы один ячейки, в которых начиная с первого среди результатов выдачи кругу. окно набор символов мы выбрали место Word 2007). Будет совсем здорово. «Не заполненно поле качестве шаблона, естественно = ActiveWorkbook ‘Запоминаем String Set rangeofcells Диапазон_Ячеек_для_Поиска = .Range(.Cells(ПерваяСтрокаБД, папке с нашим
Способ 3: Расширенный поиск
а работаете выТ.е. этот код раз ? находятся данные слова столбца. будет все таВ случае, если при (буквы, цифры, слова, поиска «Все файлы
Откроется окно, вЮрий М поиска!» Exit Sub шаблон лежит теперь активную книгу ‘Показываем = Sheets(1).Cells(lastline, 10) 1), .Cells(ПоследняяСтрокаБД, 2)) запущенным. Тогда просто почему-то с отчетами проще переписать, чемKuzmich в любом порядке.В графе же ячейка E2. запуске поисковой процедуры и т.д.) без Excel». Здесь мы правом верхнем углу: Про . End If With в одном месте, диалог выбора папки Set searchresults = Set Диапазон_Ячеек_для_Поиска = определяем путь до о продажах за исправить.: Может это поможетКак только настройки поиска«Область поиска»
Как такое могло вы нажмете на учета регистра. можем выбрать другой которого, есть строкаabricos29
- Application With .FileDialog(msoFileDialogFolderPicker) а файлы могут With Application.FileDialog(msoFileDialogFolderPicker) .Title rangeofcells.Find(textsarch, , xlFormulas, Диапазон_Ячеек_для_Поиска.EntireRow Set РезультатПоиска нашего файла, затем
- отдельный день.RANhttp://www.planetaexcel.ru/techniques/12/45/ установлены, следует нажатьопределяется, среди каких получиться? Просто в кнопкуНаходясь во вкладке вид файла. Например,
поиска. В этой: Юрий спасибо за If .Show = где угодно. И = «Выберите папку, xlPart) If Not = Диапазон_Ячеек_для_Поиска.Find(ТекстДляПоиска, LookAt:=xlPart) по этому путиНе проще ли: Подумаешь! Word тожеhttp://excelvba.ru/code/FilenamesCollection на кнопку конкретно элементов производится ячейке E2 в«Найти все»«Главная» нам нужно найти строке пишем поисковую ссылку! False Then Exit гиперссылка не работает. файлы в которой searchresults Is Nothing ‘ начинаем поиск в массив собираем получить отчет о не без VBA!SergVrn«Найти всё» поиск. По умолчанию, качестве формулы содержится, все результаты выдачи, кликаем по кнопке текст в Excel’евском
фразу, слова. Мыabricos29 Sub folder_ = Кто-нибудь может подсказать нужно обработать» .ButtonName Then addressfirstcell = If Not РезультатПоиска все остальные файлы продажах сразу заadekarimov: Kuzmich, зачем мне
или это формулы, то адрес на ячейку будут представлены в«Найти и выделить» файле со словами написали «посчитать стаж».: А вот с .SelectedItems(1) End With какие изменения нужно = «Выбрать» .AllowMultiSelect searchresults.address linenumber = Is Nothing Then где нужен будет
интересующий период? Чтобы: Доброго времени суток. список файлов в«Найти далее» есть те данные, A4, который как виде списка в, которая расположена на визитка. Тогда мы Во время ввода поиском в подпапках folder_ = folder_ внести в строку = False If searchresults.Row Range(«a» & ‘ если нашли поиск. Перебираем элементы была одна таблица,Работаю в компании, папках, если я, чтобы перейти к которые при клике раз включает в нижней части поискового ленте в блоке выберем функцию «Все поисковой фразы сразу не осилил и & IIf(Right(folder_, 1) с добавлением гиперссылки, .Show Then Folder Rows.Count).End(xlUp).Offset(1).Resize(, 5).Value = хоть одну подходящую массива в цикле а данные которая занимается ежедневными задавал вопрос -
поисковой выдаче. по ячейке отображаются себя искомую цифру окна. В этом инструментов
файлы». Появится список идет поиск. после прочтения статьи. = .PathSeparator, «», чтобы она выдавала = .SelectedItems(1) Else _ Array(filenumber, Filename, ячейку АдресПервойНайденнойЯчейки = — каждый элементодной продажами. В процессе по поиску одногоКак видим, программа Excel
в строке формул. 4. списке находятся информация«Редактирование» всех разных файловПолучился такой результат. Кто-нибудь может подсказать
.PathSeparator) .ScreenUpdating = верный путь до Exit Sub End pathtothefile, creationdate, filesize, РезультатПоиска.Address ‘ запоминаем открываем, определяем количество
таблицы в любом создания отчета по СЛОВА. представляет собой довольно Это может быть
Но, как отсечь такие, о содержимом ячеек. В появившемся меню со словом «визитка»Нажимаем на нужный документ, как интегрировать код False End With файла, ибо сейчас With ‘Начинаем читать searchresults) ActiveSheet.Hyperlinks.Add Range(«b» Адрес Первой Найденной вкладок и запускаем случае легче обрабатывать продожам сталкиваюсь сbuchlotnik простой, но вместе слово, число или и другие заведомо
- с данными, удовлетворяющими выбираем пункт — и текст он откроется. из статьи по file_ = Dir(folder_ если макрос и файлы из папки
& Rows.Count).End(xlUp), pathtothefile, Ячейки НомерСтроки = вложенный цикл с (если это вообще необходимостью поиска Торгового: не-а, в папках с тем очень ссылка на ячейку. неприемлемые результаты выдачи запросу поиска, указан«Найти…» в Word, иВнимание! ссылке выше в & «*.xls*») Do файл находятся в wb = Dir(Folder «», _ «Открыть
РезультатПоиска.Row ‘ получаем
lumpics.ru
Поиск текста в нескольких файлах Excel
перебором вкладок и понадобится).
представителя (ТП) ии подпапках функциональный набор инструментов
При этом, программа, поиска? Именно для их адрес расположения,
. Вместо этих действий файл Excel, иЧем точнее укажем
обсуждаемый макрос. Вероятно While file_ <>
разных местах гиперссылка
& Application.PathSeparator & файл» & vbNewLine номер строки, в
поиском на нихА вот такой его данные по- вообще-то это поиска. Для того,
выполняя поиск, видит этих целей существует а также лист
можно просто набрать картинки с названием место хранения документа, ещё нужно будет «» DoEvents If выглядит так: Адрес
«*.xls») While Len(wb) & Filename Do
которой найдена подходящая нужного. Если найдено,
planetaexcel.ru
Поиск слова — по нескольким файлам экселя (Макросы/Sub)
подход, когда одному продажам, который могут
список тех файлов чтобы произвести простейший
только ссылку, а расширенный поиск Excel. и книга, к на клавиатуре сочетание
«визитка», т.д. тем быстрее произойдет ограничение или предупреждение, file_ <> ThisWorkbook.Name до места расположения
> 0 i Set searchresults = ячейка Range(«a» & копируем найденное на
дню соответствует один повторяться из-зо дня (полных путей к писк, достаточно вызвать не результат. ОбПосле открытия окна которым они относятся. клавишКак найти файл поиск документа.
иначе нечаянно выделил Then Workbooks.Open folder_
макросаИмя файла.xls
= i +
rangeofcells.FindNext(searchresults) If Not Rows.Count).End(xlUp).Offset(1).Resize(, 5).Value = главный документ. лист excel или, в день или ним), которые и поисковое окно, ввести
этом эффекте велась«Найти и заменить» Для того, чтобыCtrl+F определенного типа, смотритеНапример, мы указали папку с 1000 & file_ WithWith ThisWorkbook.Sheets(1) .Cells(rw, 1 wb = searchresults Is Nothing _ Array(НомерФайла, ИмяФайла,scofield-92 еще хуже, одна же 1 раз нужно проверить -
в него запрос, речь выше. Длялюбым вышеописанным способом, перейти к любому
. в статье «Поиск такой путь – файлов и завис. ActiveWorkbook For Each 1) = ActiveWorkbook.Name Folder & Application.PathSeparator Then linenumber = ПутьКФайлу, ДатаСоздания, РазмерФайла,: Как выполнить поиск книга excel, и в месяц ( ваша конструкция для и нажать на того, чтобы производить жмем на кнопку из результатов выдачи,
После того, как вы документа Word по
«Этот компьютер» -Файлов порядка 100 штук sh In .Sheets .Hyperlinks.Add Anchor:=.Cells(rw, 1), & wb Set searchresults.Row Range(«a» & РезультатПоиска) ‘ если файлов понял, но
при этом (!) по разным причинам,
этого не годится кнопку. Но, в поиск именно по«Параметры» достаточно просто кликнуть
перешли по соответствующим тексту» тут. Принцип «Документы» (мы помним,
(содержание порядка 30000 Set c = Address:=ActiveWorkbook.Name, SubAddress:=c.Address End objWb = Workbooks.Open(wb) Rows.Count).End(xlUp).Offset(1).Resize(, 5).Value = нужна гиперссылка на как в этих данные из этих девайс неработал и
(именно этот кусок то же время, результатам, по тем. по нему левой пунктам на ленте, один. что документ находится строк в каждом) sh.Cells.Find(What:=s, After:=sh.Cells(1, 1), With здесь твой код
_ Array(filenumberГ*, Filename, файл во втором файлпх искать нужный
книг надо еще тд). Хотелось бы кода не работает),
excelworld.ru
Поиск значения в Таблицах в разных файлах Excel
существует возможность настройки данным, которые отображаются
В окне появляется целый кнопкой мыши. После или нажали комбинациюВ Excel можно в папке «Документы») нужен поиск по LookIn:=xlValues, LookAt:=xlPart) Ifabricos29 objWb.Close False wb pathtothefile, creationdate, filesize, столбце ActiveSheet.Hyperlinks.Add Range(«b» текст не могу и обрабатывать, мне автоматизировать поиск ТП а эти - индивидуального поиска с в ячейке, а ряд дополнительных инструментов
этого курсор перейдет
«горячих клавиш», откроется искать данные функциями, – «Excel» (в
всем этим таблицам, Not c Is: А вот, получилось, = Dir ‘читаем searchresults) ActiveSheet.Hyperlinks.Add Range(«b» & Rows.Count).End(xlUp), ПутьКФайлу, разобрать( представляется в корне и его данные. работают; или нужно большим количеством различных не в строке для управления поиском. на ту ячейку окно можно искать, выбирать, папке «Документы» есть хотя бы с Nothing Then With кому интересно, нужно следующий файл Wend & Rows.Count).End(xlUp), pathtothefile, «», _ «Открытьsku144 неверным.Суть задачи до последнего бита параметров и дополнительных формул, нужно переставить По умолчанию все Excel, по записи«Найти и заменить»
переносить данные в две папки «Word» указанием файла, но ThisWorkbook.Sheets(1) .Cells(rw, 1) исправить кусок кода End Sub «», _ «Открыть
файл» & vbNewLine: Вот например http://www.planetaexcel.ru/forum/?PAGE_NAME=read&FID=1&TID=45516
kuklptable_export_03KAsep.xls за 3
разжёвывать? настроек. переключатель из позиции эти инструменты находятся которой пользователь сделалво вкладке другое место, в
и «Excel». Мы в идеале с
= folder_ &
из макроса выше
abricos29 файл» & vbNewLine & ИмяФайла Do
там можно посмотреть: сентября + table_export_04KAsep.xlsSergVrnАвтор: Максим Тютюшев«Формулы» в состоянии, как
щелчок.«Найти» другую таблицу, бланк, помним, что документ, выводом данных во ActiveWorkbook.Name .Hyperlinks.Add Anchor:=.Cells(rw, на этот, после: Всем привет, пытался & Filename End ‘ ищем следующую примеры
adekarimov за 4 сентября: buchlotnik, приведенные примерыoleghв позицию при обычном поиске,Если у вас довольно. Она нам и т.д. формулами. Какими который мы ищем, всплывающем окне и 1), Address:=folder_ &
этого гиперссылка работает реализовать поиск одного If Loop While ячейку Set РезультатПоискаscofield-92, если нельзя средствамину и за — не ищут: Добрый день!
«Значения» но при необходимости масштабная таблица, то нужна. В поле способами можно искать находится в конкретной т.д. ActiveWorkbook.Name, SubAddress:=c.Address End независимо от нахождения значения сразу в
CyberForum.ru
Поиск значений в нескольких файлах! (Формулы/Formulas)
searchresults.address <> addressfirstcell = Диапазон_Ячеек_для_Поиска.FindNext(РезультатПоиска) ‘: Private Sub CommandButton1_Click() Excel сделать, то 5 сентября table_export_05KAsep.xls, заданного слова.Не подскажите есть. Кроме того, существует можно выполнить корректировку. в таком случае«Найти»
данные в Excel,
папке «Excel»).ctrl+f прошу не With rw = файлов: нескольких файлах с
End If End АдресПервойНайденнойЯчейки End If
excelworld.ru
Поиск в файлах excel по содержимому
ТекстДляПоиска = «*Антон*» можно попробовать сделать
а при созданииbuchlotnik
ли такая функция возможность поиска поПо умолчанию, функции не всегда удобновводим слово, символы,
смотрите в статьеЕсли документ находится предлагать. (весь файл rw + 1With ThisWorkbook.Sheets(1) .Cells(rw,
выводом результатов на With Range(«a» & ‘ отключение режима [c1] = «C:UsersАдминистраторDesktop»
с помощью VBA
такой же таблицы: ваши слова? вам в Excel? примечаниям. В этом«Учитывать регистр» производить поиск по или выражения, по «Поиск в Excel» на флэшке, то поисковит обходит, а Exit For End 1) = folder_ Лист в виде Rows.Count).End(xlUp).Offset(1).Resize(, 5).Value = пропуска ошибок End ‘ Ищем файлы (другими словами - на 6 сентябряподсказалиНапример у меня случае, переключатель переставляеми всему листу, ведь которым собираемся производить и в перечне
указываем (выделяем) флэшку. мне нужно искать If Next .Close & ActiveWorkbook.Name .Hyperlinks.Add гиперссылок. Наткнулся в _ Array(filenumber, Filename, With Range(«a» &
в заданной папке макросы). «половину
есть 20 файлов в позицию«Ячейки целиком» в поисковой выдаче поиск. Жмем на статей по этой Сначала, естественно, вставим допустим в одном False End With Anchor:=.Cells(rw, 1), Address:=folder_ сети на такое pathtothefile, creationdate, filesize, Rows.Count).End(xlUp).Offset(1).Resize(, 5).Value = по заданной маске,Как-то так. ВсеTotal MTDрешения — по Excel,«Примечания»отключены, но, если может оказаться огромное кнопку теме, расположенном в флэшку в ноутбук. столбце, что сокраило End If file_ & ActiveWorkbook.Name, SubAddress:=c.Address решение, оно ищет searchresults, linenumber) DoEvents _ Array(НомерФайла, ИмяФайла, ‘ и выводим файлы д.б. в» на ТП-нескольким файламмне нужно быстро. мы поставим галочки количество результатов, которые«Найти далее» конце статьи. : ) бы время запроса) = Dir Loop End With и находит корректно, ActiveWorkbook.Close False Next ПутьКФайлу, ДатаСоздания, РазмерФайла, на лист список одной папке. КнопкаМАУСЫМБАЕВА ОЛЬГА, вам же подавай найти в какомЕщё более точно поиск около соответствующих пунктов, в конкретном случае, или на кнопкуПоработали — пораВторой вариант.Пробовал прописывать в file_ = Dir(folder_AB1 но при переходе On Error GoTo РезультатПоиска, НомерСтроки) DoEvents их параметров. ‘ Свод собирает данныесуммируется « либо всё готовое, файле можно задать, нажав то в таком не нужны. Существует«Найти всё» отдохнуть. )) АПоиск книги екселе функцией поиска, & «*.csv») Do: Работает, спасибо! по гиперссылкам почти 0 Range(«a:e»).EntireColumn.AutoFit End ‘ временно передаём Просматриваются папки с со всех файлов,Total PC либо вы начинаетенаходится текст: «Отчет на кнопку случае, при формировании способ ограничить поисковое. если серьёзно, то,Excel по тексту в на 20-ти файлах While file_ <>AB1 на всё выдаёт SubПоправил, но как управление ОС ActiveWorkbook.Close заданной глубиной вложения. кнопка Итоги суммирует» и предыдущий день в не сильно №3″.«Формат» результата будет учитываться пространство только определеннымПри нажатии на кнопку в Excel есть ней работает, если больше, «» DoEvents If: Подскажите, пожалуйста, как
ошибку «не удаётся определить диапозон в
False Next On Dim coll As уникальные на другой « вежливой манере критиковатьСпасибо.
. введенный регистр, и диапазоном ячеек.«Найти далее» много возможностей, кроме. то сильно долго file_ <> ThisWorkbook.Name добавить в макрос открыть указанный файл»! котором производится поиск, Error GoTo 0 Collection, ПутьКПапке$, МаскаПоиска$, лист. Можно былоTotal MTD помогающих (это касаетсяGuestПри этом открывается окно точное совпадение. ЕслиВыделяем область ячеек, вмы перемещаемся к стандартных функций Excel,Нам нужно найти соображает… Then Workbooks.Open folder_ второе расширение для В итоге я и запись в Range(«a:e»).EntireColumn.AutoFit ‘ автоподбор ГлубинаПоиска% On Error все делать одним» , но так не только этой: Как вариант, стандартными формата ячеек. Тут вы введете слово которой хотим произвести первой же ячейке, которые можно применить книгу Excel, вГоворят, что без & file_ With поиска (например, «*.csv»)? создал новый файл нашк главную книгу, ширины столбцов End Resume Next ПутьКПапке$ махом, но лень как в table_export_05KAsep.xls темы). Не хотите средствами windows. можно установить формат с маленькой буквы, поиск. где содержатся введенные в своей работе. которой есть слово загрузки в БД ActiveWorkbook For EachAndreTM с именем «1.xlsx» а не в SubПодскажите что не = [c1] ‘zickland ТП- список файлов -открываем папку с ячеек, которые будут то в поисковуюНабираем на клавиатуре комбинацию группы символов. Сама Например, как можно «январь». Пишем это не обойтись….Кто может sh In .Sheets: Как вы собираетесь и вписал в
открытую так в этой берём из ячейки: Здравствуйте! Нужно изМАУСЫМБАЕВА ОЛЬГА
не надо, разбирайтесь 20 документами, нажимаем участвовать в поиске. выдачу, ячейки содержащие клавиш ячейка становится активной. использовать шрифт для слово в строке рассказать как это
Set c =
CyberForum.ru
Поиск и замена в нескольких XLS файлах
сделать гиперссылку на него всего одно
sku144 строке, при отладке c1 МаскаПоиска$ =
определенного списка найтиотсутствует, тогда функция сами. ctrl+f->выбираем документы->далее дополнительные Можно устанавливать ограничения
написание этого словаCtrl+F
Поиск и выдача результатов построения графика в поиска (смотрите первый и с чем
sh.Cells.Find(What:=s, After:=sh.Cells(1, 1), «ячейку CSV» ?
слово для поиска: Если вам нужен он не находит «*.*xl*» ‘ берём и выделить или поиска должна перейтиRAN параметры поиска, в по числовому формату, с большой буквы,, после чего запуститься производится построчно. Сначала ячейке, т.д. Такой вариант, который мы едят??? LookIn:=xlValues, LookAt:=xlPart) IfСделайте из текстовых — Тест, вот поиск по всем данные, хотя они из ячейки c2 как-то обозначить значения на поиск в: Легко. них: по выравниванию, шрифту, как это было знакомое нам уже обрабатываются все ячейки способ мы рассмотрели рассмотрели выше).Разбирался всегда со Not c Is файлов книги Excel почему то по ячейкам, используйте «Cells» там есть
planetaexcel.ru
Поиск одного значения в нескольких файлах
ГлубинаПоиска% = 2 из нескольких файлов? таблице table_export_04KAsep.xls заМакрсом поочередно открытьВ пункте «Слово границе, заливке и бы по умолчанию, окно первой строки. Если на примере созданияПолучится такой результат. всем сам, теперь Nothing Then With — затем как ссылке на этот вместо «Диапазон_Ячеек_для_Поиска»sku144 ‘ берём из Объединение файлов для 4 сентября и все документы, в или фраза в защите, по одному уже не попадут.«Найти и заменить» данные отвечающие условию простой игры. СмотритеТретий вариант. жду помощи в ThisWorkbook.Sheets(1) .Cells(rw, 1) обычно… файл пройти получается,Set РезультатПоиска =: охх, кириллические переменные
ячейки c3 If дальнейшего поиска не тд пока не которых нужно выполнить документе»: Отчет №3 из этих параметров, Кроме того, если. Дальнейшие действия точно
найдены не были, статью «Игра вКак найти нужный документ этом не легком
= folder_ &AB1 но опять же Cells.Find(ТекстДляПоиска, LookAt:=xlPart) ‘scofield-92 ГлубинаПоиска% = 0 подходит так как
найдет совпадения с поиск, в каждомВ пункте «Поиск
или комбинируя их включена функция такие же, что программа начинает искать Excel». из открытого документа вопросе. ActiveWorkbook.Name .Hyperlinks.Add Anchor:=.Cells(rw,: Я использовал «*.csv» с глюком, при начинаем поиск …: Ну это бралось Then ГлубинаПоиска% = файлов может быть ФИО Торгового Представителя из этих документов, в»: выбираем(если вдруг вместе.«Ячейки целиком» и при предыдущем во второй строке,В документах Microsoft Excel,Excel.Сергей каханский 1), Address:=folder_ &
вместо «*.xls*» - переходе в файл Set РезультатПоиска = с различный сайтов, 999 ‘ без
очень много! (ТП) и прибавит на каждом листе по каким тоЕсли вы хотите использовать, то в выдачу способе. Единственное отличие и так далее, которые состоят из
В открытом документе: эту задачу можно ActiveWorkbook.Name, SubAddress:=c.Address End все работает как искомое слово исчезает! Cells.FindNext(РезультатПоиска)а вот первая
не мое воплощение)) ограничения по глубине
Пример: его « провести поиск «этого причинам там стоит формат какой-то конкретной
будут добавляться только будет состоять в пока не отыщет большого количества полей,
Excel переходим на реализовать с помощью With rw = надо, и ячейку
Попытки понять чем попавшаяся страница из я половину не ‘ считываем вИз файла «список»Total MTD
слова». не текущая) папку ячейки, то в
элементы, содержащие точное том, что поиск удовлетворительный результат.
часто требуется найти закладку «Файл» (в макроса, который будет rw + 1 определяет корректно другие файлы отличаются гугла как копировать понимаю как работает колекцию coll нужные
нужно найти в» к «Если нашли -
с 20 документами. нижней части окна
наименование. Например, если выполняется только вПоисковые символы не обязательно определенные данные, наименование Excel 2013) или последовательно открывать каждый Exit For EndХотя, мне достаточно от вновьсозданного не данные с книгиPrivate Sub CommandButton1_Click() имена файлов Set файлах «Для сопоставленияTotal PC вывести имя файлаЭто действительно простейший нажмите на кнопку вы зададите поисковый указанном интервале ячеек. должны быть самостоятельными строки, и т.д. нажимаем на кнопку файл, производить необходимые If Next .Close имени файла, в увенчались успехом. на книгу textsarch = «*антон*» coll = FilenamesCollection(ПутьКПапке$, 1, 2, 3″».Цитата вариант.«Использовать формат этой ячейки…» запрос «Николаев», тоКак уже говорилось выше, элементами. Так, если Очень неудобно, когда «Office» в левом действия и закрывать False End With котором найден текст.abricos29http://sirexcel.ru/makrosi_vba/kak_s…igi_v_druguyu/ [c1] = «C:Users» МаскаПоиска$, ГлубинаПоиска%) Application.ScreenUpdating одинаковые значения?Во первых проблемаSergVrn, 01.12.2017 вolegh. ячейки, содержащие текст при обычном поиске в качестве запроса приходится просматривать огромное верхнем углу (в его. Только опишите End If file_Юрий М: Извиняюсь, затупил, файлdimatel2013 Dim coll As = False ‘zickland создания такой функции 17:59, в сообщении: да, спасибоПосле этого, появляется инструмент «Николаев А. Д.», в результаты выдачи будет задано выражение количество строк, чтобы Excel 2007). на примере одного = Dir Loop: В .csv НЕТ с макросом и: Добрый день!
Collection, FolderPath$, searchmask$, отключаем обновление экрана: Еще файлы! поиска в разных № 1 ()SergVrn в виде пипетки.
в выдачу уже попадают абсолютно все «прав», то в найти нужное слово
В появившемся диалоговом файла, что и Application.ScreenUpdating = True ячеек. файлы в которых
Нужно сделать замену searchdepth% On Error ‘ выводим результатыscofield-92 таблицах как описал в столбец G5:G16: Здравствуйте!
С помощью него добавлены не будут.
ячейки, содержащие последовательный выдаче будут представлены или выражение. Сэкономить
окне нажимаем на как должно быть Beep MsgBox «Готово!»AB1 ищем должны быть в нескольких .xls Resume Next FolderPath$ (список файлов, и: Добрый день. выше а такжеЕсли не нашли,Ищу ответ на можно выделить туПо умолчанию, поиск производится набор поисковых символов
planetaexcel.ru
Как произвести поиск по нескольким Excel файлам?
все ячейки, которые время и нервы функцию «Открыть». Появится организовано, что ищем End Sub: Если данный макрос на одном уровне, файлах. = [c1] searchmask$ их характеристик) наПодскажите, пожалуйста, как
такие таблици будут выводить имя файла непростой вопрос. ячейку, формат которой только на активном в любом виде содержат данный последовательный
поможет встроенный поиск список последних книг и как выводимЮрий М при поиске открывает в одной папке!
Подскажите, какие есть = «*.*xl*» ‘ лист For i реализовать следующую задачу: добавляться ежедневно. не нужно.
В файле «ГЛАВНЫЙ вы собираетесь использовать. листе Excel. Но, не зависимо от набор символов даже
Microsoft Excel. Давайте Excel, с которыми результаты поиска.: Если Вы про файлы, то при Макрос работает отлично. варианты — готовые searchdepth% = 1 = 1 ToИмеются файлы excel,,Таблица за 6Hugo ФАЙЛ.xls» в ячейкуПосле того, как формат
если параметр
Да, ошибся. Меньший файл 15 000 строк, а не 5000. Больший 30 000 строк.
Вот выкладываю несколько строк так, как они лежат в excel. (всего 3 столбца)
Меньший файл выглядит так:
20100114 192000 7482
20100114 192100 7483
20100114 192200 7483,5
20100114 192500 7484
20100114 192800 7480
20100114 193300 7480
20100114 194000 7480
20100114 195200 7475
20100114 195900 7473
20100114 200800 7490
20100114 202200 7485
20100114 202300 7485
20100114 202500 7489,5
20100114 202700 7481
20100114 202800 7481
20100114 202900 7482
20100114 203000 7490
обратите внимание на второй столбец. Так выражен формат времени — часы, минуты секунды. Изменение данных каждую минуту. Далее видим, что данные не всегда идут с разницей в минуту, бывают интервалы и это нормально, то есть так и должно остаться.
Чтобы понять суть моего вопроса, нужно посмотреть на строки другого (большего по размеру) файла со следующими строками:
20100114 192100 8761,25
20100114 192200 8772
20100114 192300 8772,5
20100114 192400 8774
20100114 192500 8773
20100114 192600 8772,25
20100114 192700 8770,75
20100114 192800 8767,75
20100114 192900 8768,5
20100114 193000 8771,25
20100114 193100 8774,25
20100114 193200 8773,5
20100114 193300 8771
20100114 193400 8771,25
20100114 193500 8772
20100114 193600 8771
20100114 193700 8766,75
20100114 193800 8766,5
20100114 193900 8768,5
20100114 194000 8765,5
20100114 194100 8762,75
20100114 194200 8761,5
20100114 194300 8762
20100114 194400 8765,75
20100114 194500 8766,75
20100114 194600 8765,5
20100114 194700 8766
20100114 194800 8766
20100114 194900 8765,5
20100114 195100 8765,5
20100114 195200 8766,5
20100114 195400 8767
20100114 195600 8766,5
20100114 195700 8767
20100114 195800 8765,5
20100114 195900 8765
20100114 200000 8765
20100114 200100 8765,5
20100114 200200 8767,5
20100114 200300 8767
20100114 200400 8768
20100114 200500 8768
20100114 200600 8770
20100114 200700 8771,75
20100114 200800 8770,75
20100114 200900 8768,5
20100114 201000 8770
20100114 201100 8770,5
20100114 201200 8769,5
20100114 201300 8769
20100114 201400 8769,5
20100114 201500 8770,5
20100114 201600 8771
20100114 201700 8771,25
20100114 201900 8772
20100114 202000 8773,5
20100114 202100 8769
20100114 202200 8767,5
20100114 202300 8768
20100114 202600 8766,5
20100114 202700 8766,25
20100114 202800 8768
20100114 202900 8769,5
20100114 203000 8771
Мы видим, что пропусков нет, то есть второй столбец в этом же интервале времени представлен без пропусков, то есть каждую минуту.
И таких расхождений много в обеих файлах.
А теперь нужно, чтобы больший файл соответствовал по строкам (время) чётко как в меньшем файле, потому как нет у меня данных данных за отсутствующие интервалы времени в меньшем файле.
Т.е. к примеру есть строка в меньшем файле —
20100114 192500 7484
Под таким же номером должна быть и строка в большем файле и она есть —
20100114 192500 8773
но дальше, в меньшем файле идет строка —
20100114 192800 7480
(пропуск трех минут)
а в большем файле идет строка —
20100114 192600 8772,25
что не соответствует по времени со строкой в меньшем файле, а раз несоответствует, нужно ее просто удалить и сделать так, что следующей строкой в большем файле была строка, совпадающая по времени с меньшим файлом, т. е вот такая —
20100114 192800 8767,75
Вот такая ситуация.
Поиск в excel в нескольких файлах
поиск сразу в нескольких документах *.xls
Пример: надо найти текст «45454» сразу в нескольких *.xls документах в разных папках.
Что посоветуете?! Нужно очень срочно!
Я так и искал, но толку ноль. Ищет только в имени файла.
Вот, ****!! Сел за другой комп — стал искать!!
Странно, прежде чем тебе написать проверил у себя 3 раза,
первый раз искал «xls» и слово «свою фамилию»
второй раз искал «xls» и слово «.»
третий раз искал «xls» и слово «а.»
По каждому запросу выдавал мне кучу файлов.
Ferrum_78RUS добавил 15.05.2007 в 17:19
Тогда делай так
-в exel
-файл
-поиск файлов
-раширенный поиск файлов
-настраивай параметры поиска
-несколько минут ожидания и готово.
Одновременный поиск в нескольких таблицах Excel
Определенно легче вести поиск по одной пусть большой, но целой таблице или в смежных диапазонах ячеек, чем по нескольким разделенным на части таблицами разбросанных по разным несмежным диапазонам или даже по отдельным листам. Даже если выполнить автоматический поиск одновременно по нескольким таблицам, то могут возникнуть существенные препятствия. А слаживать все данные в одну таблицу – это сложно, иногда практически не реально. На конкретном примере продемонстрируем правильное решение для одновременного поиска по нескольким таблицам в Excel.
Одновременный поиск по нескольким диапазонам
Для наглядного примера создадим три простые отдельные таблицы расположенных в несмежных диапазонах одного листа:
Следует выполнить поиск суммы необходимой для производства 20-ти штук продуктов. К сожалению, эти данные находятся в разных столбцах и строках. Поэтому в первую очередь нужно проверить сколько потребуется времени для производства этих продуктов (первая таблица).
На основе полученных данных необходимо сразу перейти к поиску по другой таблице и найти какое количество работников должно быть вовлечено к данному объему производства. Полученный результат должен сравнивается с данными третей таблицы. Таким образом мы за одно операцию поиска по трем таблицам сразу определим необходимые затраты (сумму).
Среднестатистический пользователь Excel искал бы решение с помощью формул основанных таких функциях как ВПР. И выполнял бы поиск в 3 этапа (отдельно для каждой таблицы). Оказывается, можно получить сразу готовый результат выполнив поиск только в 1 этап с помощью специальной формулы. Для этого:
- В ячейке E6 введите значение 20, которое является условием для поискового запроса.
- В ячейке E7 введите следующую формулу:
Производственная себестоимость для 20 шт. определенного товара.
Как работает формула с ВПР в нескольких таблицах:
Принцип действия данной формулы основан на поочередном поиске всех аргументов для главной функции ВПР (первой). Сначала третья функция ВПР ищет по первой таблице количество времени необходимое для производства 20 штук продукта указанного в качестве значения для ячейки E6 (которое потом можно изменять при необходимости). Потом вторая функция ВПР ищет значение для первого аргумента главной функции.
В результате поиска третьей функции мы получаем значение 125, которое является первым аргументом для второй функции. Получив все параметры, вторая функция ищет во второй таблице количество требуемых работников для производства. В результате возвращено значение 5, которое дальше будет использовано главной функцией. На основе всех полученных данных формула возвращает финальный результат вычисления. А именно сумму 1750$ необходимую для производства 20 штук определенного товара.
По этом уже принципу можно использовать формулы для функции ВПР из нескольких листов.
Поиск в excel в нескольких файлах
Полезные программы для офиса: пакетная работа с файлами
Twins File Merger 3.65
Это удобный инструмент для объединения нескольких файлов в один большой. Программа позволяет объединять файлы разных форматов, поэтому с ее помощью можно создать как огромный текстовый файл, так и CD с музыкой в режиме нон-стоп. Twins File Merger имеет удобные инструменты для управления списком файлов и настраиваемый интерфейс.
сайт 1,7 Mб
Text Magician 1.0
Бесплатная программа для редактирования большого количества текстовых файлов одновременно. Она позволяет объединять или, наоборот, разрезать файлы, удалять или заменять заданный текст, изменять регистр букв, начинать каждое слово в новой строке с большой буквы, добавлять текст в начало или конец строк, удалять ненужные пробелы, строки, участки текста.
сайт 280 Кб
ZipScan 2.2
Небольшая утилита для поиска файлов в архивах, в том числе в самораспаковывающихся. Программа понимает форматы ZIP, CAB, RAR, JAR, ACE, TAR и GZ. Вы можете искать текстовые фрагменты или файлы заданного размера. Когда программа найдет файлы, их можно просмотреть или сразу же извлечь из архивов.
сайт 700 Кб
Replace Tool 1.71
Удобная утилита для автоматической замены одного или нескольких символов в большом количестве файлов одновременно. Программа работает с текстовыми и HTML-файлами. При помощи окна Replace Tool можно добавлять в список файлы, которые находятся в разных папках, после чего программе можно давать задания. Программа имеет простой интерфейс и может запоминать очередность заданий. Replace Tool также имеет функцию отката, которая позволяет восстановить данные в файлах в случае необходимости.
сайт 996 Kб
InfoRapid Search & Replace 3.1
Система поиска файлов, которая предлагается пользователям Windows, зачастую не может быстро и корректно найти результат ввиду своих ограниченных возможностей. В этом случае имеет смысл использовать альтернативный софт. Одна из таких утилит — InfoRapid Search & Replace. Ее мощная система поиска позволяет точно и быстро определять запрашиваемую информацию, которая соответствует заданным критериям. Благодаря встроенным текстовым конвертерам эта утилита подходит для поиска и просмотра содержания HTML- и RTF-документов. В обычных текстовых файлах можно заменять определенный текст на новый, указанный в настройках программы. Кроме этого, InfoRapid Search & Replace поддерживает функцию поиска в документах WinWord, Excel, Lotus.
сайт 991 Кб
Actual Search and Replace 2.6.3
При работе с текстовыми документами иногда приходится вносить изменения одновременно в несколько документов (например, если требуется в нескольких документах исправить написание определенной фамилии). В такой ситуации может помочь программа Actual Search & Replace — инструмент для поиска и замены слов или фраз в массиве текстовых файлов. Поиск и замена осуществляется в указанной вами папке по заданной маске. Найденные результаты будут выведены на экран так, как это делается поисковым сервером в Интернете, в виде серии результатов. Результат поиска может быть записан и сохранен в отдельный файл. Для изменения файлов используется встроенный редактор.
сайт 770 Кб
A.F.9 1.2
Эта бесплатная программа с загадочным названием позволяет редактировать файлы, заменяя любые символы. При этом программа имеет несколько отличий от привычной функции замены, присутствующей во многих текстовых редакторах. Во-первых, с ее помощью можно редактировать большое количество файлов одновременно, а также заменять сразу несколько фраз. Программа поддерживает редактирование файлов любого формата и размера.
сайт 992 Кб
WordPipe 4.1
Программа для поиска и замены символов в нескольких документах MS Word одновременно. Программа поддерживает все стандартные функции замены «Ворда», в том числе подстановочные знаки, формы слов, «слово целиком» и пр. В программу также входит дополнительный модуль TextPipe Pro, позволяющий изменять документы по выбранному фильтру: удаление нескольких пробелов, идущих подряд, исправление знаков пунктуации и пр. сайт 1,03 Mб
FindReplaceExcel 2.15
Программа для поиска и замены различных данных в файлах Excel. Она поможет найти текст, значения и комментарии и заменить их, даже не требуя от вас открытия рабочих книг. Программа может искать диапазоны в рабочих листах или только на определенных листах в книге, производить поиск по нескольким дискам. Она также поддерживает поиск данных, которые не полностью совпадают с запросом, и поиск с учетом регистра. Чтобы в результате работы программы не произошло потери данных, перед внесением в документы изменений она автоматически создает копию.
сайт 2,2 Мб
Drag Drop and Replace 1.0
Программа для быстрого поиска и замены текста. Пригодится в первую очередь тем, кому нужно время от времени изменять данные в большом количестве файлов — например, веб-мастерам. Drag Drop and Replace справляется с файлами размером до 4 Гб, позволяет просмотреть текст перед заменой, а также поддерживает выполнение нескольких заданий и операции с несколькими файлами одновременно.
сайт 340 Кб
Mass Text Replacer 1.0.0
Программа для поиска информации в большом количестве файлов одновременно и их замены. Mass Text Replacer позволяет выбирать файлы по одному или же указывать целые директории. Она будет особенно полезна веб-мастерам, которым часто приходится вносить одни и те же изменения в большое количество файлов. Mass Text Replacer также пригодится программистам и писателям. Программа позволяет вставлять в файлы участки текста любой величины или же элементы веб-страниц (например, таблицы).
сайт 2,92 Mб
FindersKeepers 2.02
Программа, предназначенная для поиска текста в файлах, его замены и выполнения других операций с найденными файлами. В частности, Finders Keepers позволяет просматривать или запускать все найденные файлы, архивировать их, редактировать текстовые файлы. При этом исходные копии всех файлов, в которые вносятся изменения, будут сохранены. Поиск осуществляется несколькими способами, причем движок поиска настолько совершенен, что позволяет найти слова даже если в них допущены орфографические ошибки.
сайт 2,2 Mб
Criline Search and Replace 3.3
Criline Replacer — это программа для быстрого поиска определенного текста в нескольких файлах одновременно и замены его другим. Поддерживается большое количество типов файлов, имеется очень быстрый алгоритм поиска и, кроме того, программа очень проста в использовании. Criline Replacer может сэкономить массу времени программистам и веб-мастерам.
сайт 1,1 Mб
SearchMaestro 1.0
Программа для поиска файлов и просмотра их содержимого. SearchMaestro позволяет сохранять и впоследствии загружать заданные настройки, экспортировать результаты поиска в файлы *.csv или *.xml. Вы сможете не только просматривать содержимое файлов, но и автоматически заменять выбранные символы другими. SearchMaestro также предоставляет возможность создания файлов VBScript и JavaScript для многоразового использования. сайт 2,7 Mб
Verbs 1.01
Механизм поиска файлов операционной системы Windows несовершенен и имеет ряд упущений. Программа Verbs восполнит этот пробел. Эта утилита предназначена для поиска документа, содержащего ключевое слово. Принцип работы Verbs очень прост. После того, как программа получит запрос на поиск ключевого слова, она обращается к базе данных в виде созданного заранее каталога всех документов. Найденный файл откроется в ассоциируемом приложении. Программа учитывает изменения, которым подвергаются файлы в процессе работы пользователя, и периодически обновляет каталог — базу данных.
сайт 1,8 Mб
FileEngineer 2.01
Простая утилита для работы с файлами. С ее помощью можно выполнять несколько основных операций: искать текст в файлах, заменять одни участки текста другими и переименовывать несколько файлов одновременно. При выполнении последней операции файлам даются одинаковые названия, которые отличаются лишь числами. Хотя программу нельзя назвать многофункциональной, со своей задачей она справляется хорошо и быстро.
сайт 2 Mб
Advanced Excel Find & Replace 2.4
Программа, которая расширяет стандартные возможности одной из утилит пакета Microsoft Office — Excel. Интегрируясь в оболочку популярной программы для работы с таблицами, данная утилита позволяет усовершенствовать механизм поиска в программе. Advanced Excel Find совместима с версями Excel 2000, 2002 и 2003. С ее помощью можно искать данные по нескольким листам и рабочим книгам. Вы можете одновременно задать поиск в формулах, значениях и комментариях.
сайт 985 Кб
ExcelExplorer 1.01
Программа для удобного и быстрого управления файлами Excel. Используя ExcelExplorer, вы сможете просматривать, перемещать, удалять или переименовывать файлы, даже если Excel не установлен у вас на компьютере. Интерфейс программы представлен двумя панелями. С левой стороны располагается список файлов в виде древовидной структуры, в правой — содержимое выбранного файла. Редактировать файл можно тут же.
сайт 1,9 Мб
Поиск текста в нескольких файлах Excel
Я использую Microsoft Office 2007. Как я могу искать в нескольких файлах Excel?
В папке, в которой хранятся файлы, нажмите Ctrl + f, чтобы использовать окно поиска в папке. Затем выполните поиск
для поиска этой строки в файлах в текущем каталоге.
Используйте IceTeaReplacer . Это бесплатная программа.
Поиск & Замените файлы .docx, .xlsx и .xls
IceTeaReplacer — простой, но мощный инструмент для поиска внутри несколько Microsoft Office Word 2007 (docx), Excel 2007 (xlsx) и Файлы Excel 2003 (xls) в каталоге (и это подкаталоги) и заменить предоставленную фразу. Поддерживает UTF-8.
>
Существует также более мощная альтернатива с различными функциями, но она является коммерческой: ExcelPipe .
После поиска в Интернете, я обнаружил, что не существует универсального решения проблемы поиска нескольких таблиц Excel в Интернете, поэтому я решил написать свою собственную таблицу Excel, которая ищет другие таблицы Excel, которые можно найти здесь .
Обратите внимание, что он был протестирован только в Excel 2010, но он должен работать в 2007 году и более ранних версиях. Если нет, не стесняйтесь изменять код, как вы считаете нужным.
Электронная таблица использует пользовательскую форму и использует код VBA (который вы можете использовать для любых целей). Естественно, макросы и т. Д. Должны быть включены, чтобы это работало, и форма появляется при открытии электронной таблицы (вы можете получить доступ к коду, нажав Alt + F11, перейдя к пользовательской форме и дважды щелкнув кнопку «Начать поиск» в окна дизайна).
Полное описание функций и функций можно найти в файле чтения Github, но в основном это позволяет вам указать два условия текстового поиска для поиска в пределах указанного каталога (к которому вы можете перейти), он может искать рекурсивно этот каталог, и открытые электронные таблицы, защищенные паролем (если вы предоставляете пароль).
Он будет искать отдельные листы в каждой книге при поиске на уровне ячейки. В зависимости от размера рабочей книги для сканирования каждой книги может потребоваться примерно одна секунда.
Он отображает все результаты поиска в боковом окне, включая любые электронные таблицы, которые он не смог открыть. Эти результаты можно сохранить в текстовом файле для последующей справки.
Пользовательская форма должна быть относительно понятной, однако readme для нее на Github очень подробно описывает, как ее использовать. Опять же, свободный для использования, это с открытым исходным кодом.
В Excel 2003 у вас была опция дополнительного поиска в меню файла, где вы могли искать файлы. Я больше не могу найти этот вариант в 2007 году, поэтому я думаю, что он ушел.
Если у вас есть Vista или Windows 7, вы сможете использовать встроенный поиск окна. В более старых версиях вы можете установить поисковое приложение, например Поиск рабочего стола Windows , Google Desktop Search , Copernic , . они могут свободно использовать.
Получение списка файлов в папке
В Excel, путём проведения нехитрых махинаций, имеется возможность получения списка файлов, находящихся в папке компьютера. Для этого копируем путь к файлам в папке и вставляем его в нужную ячейку, при этом в конце пути необходимо указать маску поиска файлов вида:
2. *.xl* – все файлы Excel (xls, xlsx, xlsm, xlsb и т.д.);
3. *.exe – все исполняемые файлы (программы);
4. *.docx (doc, docm) – все документы Word. Добавив ключевое слово Рок*.docx в список войдут все названия файлов, начинающиеся со слова «Рок».
Дальше нажатием Ctrl+F3 или на вкладке «Формулы» — «Диспетчер имён», в открывшемся окне создадим новое имя Список_файлов и введём в строку Диапазон следующую формулу =ФАЙЛЫ(Лист1!$A$1) где «Лист1» – это название листа, а «А1» – ячейка с адресом
Теперь в созданном нами названии «Список_файлов» уже содержатся нужные имена файлов, осталось их оттуда извлечь. Для этого используем в ячейке А3 следующую формулу и протянем её вниз: =ЕСЛИОШИБКА(ИНДЕКС(Список_файлов;СТРОКА()-2);””)
Функция ЕСЛИОШИБКА нужна, чтобы спрятать ошибку #ССЫЛКА, которая возникает, когда мы протягиваем формулу «с запасом», т.е. на больший по размеру диапазон, чем количество имеющихся у нас файлов.
Функция ИНДЕКС извлекает из массива элемент по номеру, например, формула =ИНДЕКС(Список_файлов; 5) выдаст имя пятого по счету файла в папке.
Функция СТРОКА, выдает порядковый номер текущей строки, из которого мы вычитаем 2, т.к. первая ячейка, куда выводится имя, в нашем случае А3.
`ls /path/to/dir | grep -e ‘regex’`
Это смотря для чего.
У меня описанное ТС-ом работает в макросе сбора данных из текстовых файлов генерируемых CMM машиной.
Файл с макросом копируется в папку с выбранной горой текстовых отчетов и макрос делает из кучи барахла удобокопируемые данные.
Если бы делал для себя- может и морочился бы с текстовым файлом и батниками. Но задача была сделать файл для работы необученого ничему оператора. Чтобы нажал кнопку и всё получилось.
Использование экселя для получения данных, безусловно, удобно когда потом эти же данные надо обрабатывать в экселе. Но в общем случае использовать. Эксель для получения списка файлов менее удобно, чем воспользоваться программами, которые прямо для этого и предназначены (не уверен что dir это программа, а не команда оболочки — сам я по юниксам).
P.S. Конкретно в вашем случае я бы складывал это все в какую-нибудь СУБД, после чего эти данные можно удобно обработать и проанализировать, скорее всего гораздо быстрее, чем в экселе, если данных ДЕЙСТВИТЕЛЬНО много (гигабайты и больше). Я бы смотрел в сторону Clickhouse.
В моем случае это был статистический контроль.
Данные доступны были или в ПДФ-ках, из каждой надо было скопировать 10-20 числовых значений и вставить в ексель. Таких ПДФ-ок приходилось в день открывать сотруднику порядка 50-100 штук. И создание отчета занимало несколько дней (ведь была еще и другая работа). И отследить ошибки вообще было нереально. И еще оборудование генерило текстовые файлы. Вот из них и кромсал данные макрос.
Получилось достаточно удобно. Деталь промеряли- текстовики скинули в отдельную папку — туда же ексель-файл- нажали на кнопочку и всего 1 раз скопировали-вставили куда надо.
Выделить дубликаты значений в двух файлах. |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Содержание
- Функция ВПР в Экселе – быстрый перенос данных
- Видео — «Быстрый перенос данных с помощью функции ВПР в Экселе»
- Функция ВПР в Экселе: пошаговая инструкция
- Особенности использования формулы ВПР в Excel
- Интервальный просмотр в функции ВПР
- Синтаксис и описание функции ВПР в Excel
- Как использовать именованный диапазон или таблицу в формулах ВПР
- Функция ВПР в Excel – Присвоение имени диапазону
- Функция ВПР в Excel – Пример функции ВПР с именем диапазона
- Функция ВПР в Excel – Пример функции ВПР с именем таблицы
- Постановка задачи
- Ошибки #Н/Д и их подавление
- Аргументы функции
- Как пользоваться функцией ВПР в Excel
- Быстрое сравнение двух таблиц с помощью ВПР
- Как работает функция ВПР в Excel: несколько примеров для «чайников».
- Использование точного и приблизительного поиска.
- Использование нескольких условий.
- Заключение
Функция ВПР в Экселе – быстрый перенос данных
Самое простое применение функция ВПР это быстрый перенос данных из одной таблицы в другую.
Например, у вас есть большой прайс на 500 позиций и запрос от покупателя, скажем на 50 позиций (в реальности и прайс и запрос могут быть гораздо больше, но принцип от этого не меняется).
Вам нужно быстро найти цены на эти 50 позиций. Разумеется, можно отдельно искать каждую позицию в большом прайсе и потратить на это 30 – 60 минут, а можно сделать это менее чем за минуту при помощи функции ВПР.
Итак, у нас в прайсе 500 позиций. Позиции обозначаются следующим образом, буквами обозначается вид позиции, а цифрами модификация.
Например, «Стул_1» и «Стул_21» это два совершенно разных стула.
Цены в прайсе указаны для примера и вряд ли имеют отношение к реальным ценам.
Обозначим задачу.
В ООО «ЫкэА» пришел запрос от «Петровича».
Петрович человек простой, любит всё делать быстро, но не очень чётко. Поэтому его запросы отличаются особым сумбуром в позициях.
Однако это нас не страшит, во-первых, у нас есть ВПР, во-вторых мы и не такое видали.
Петрович требует, чтобы мы очень быстро проставили цены в его запросе. Ждать он намерен максимум 5 минут. Ведь другие поставщики уже завалили его предложениями.
Нам не хочется терять такого клиента и мы практически мгновенно открываем прайс:
Получается у нас должно быть открыто два файла (две книги в Эксель). Запрос от Петровича и Прайс.
Это как раз то что необходимо, осталось только перенести цены из прайса в запрос.
Для этого перейдем в таблицу запроса и в первой ячейке столбца «Цены» (D4) введем «=впр» и два раза кликнем на значок функции:
Сразу же после этого, в строке формулы нужно поставить курсор внутри надписи ВПР и нажать Fx, перед вами появится окно с аргументами функции ВПР:
В аргументах функции вы говорите Экселю что и где нужно искать:
Искомое значение — это значение (в данном случае наименование), цену которого вы хотите найти в прайсе. Соответственно кликайте на первую ячейку столбца «Наименование».
Далее, сразу переходите в «Прайс»:
Теперь в аргументах функции заполните следующие поля:
Таблица — выделяете столбцы, которые содержат искомые наименования и цены, таким образом, чтобы наименования были крайним левым столбцом.
Так работает функция ВПР — ищет искомые значения в крайнем левом столбце (для ВПР это столбец №1). Когда ВПР находит искомое значение он начинает смотреть правее, в тот столбец, который вы указали в «Номере столбца».
Там вы должны указать столбец, содержащий необходимые для переноса данные. В нашем случае это цены и в нашем случае это столбец под номером два, относительно той таблицы, которую вы указали в аргументах.
Интервальный просмотр — ставьте 0. Ноль обозначает точное соответствие.
После заполнения аргументов функции нажимайте «Ок» и если всё сделано верно, то в столбце «Цена» (файл «Запрос от Петровича»), появится цена.
Вам нужно протянуть цены на оставшиеся ячейки:
Коллеги, вот и всё, вы овладели функцией ВПР.
Очень важное замечание!
Обратите внимание на то, что сейчас мы работали в двух разных файлах (книгах).
Когда работа идёт в двух разных книгах, Эксель автоматически закрепляет таблицу в функции ВПР:
Делает это он при помощи значка $, который проставляет перед столбцами и строками таблицы.
Это позволяет не съезжать формуле когда вы протягиваете её вниз. Это очень актуально когда вы работаете в рамках одного листа или одной книги (в этом случае Эксель автоматически Не закрепляет ячейки).
Давайте посмотрим что получиться если протянуть формулу «без закрепления»:
Обратите внимание, что для первой ячейки всё в порядке и диапазон B3:C502 точно соответствует той таблице, которую мы выделили для поиска данных, однако (без закрепления) так будет не всегда, по мере «протягивания» формулы ВПР вниз, будет смещаться и таблица, пока однажды, мы не увидим вот такую странную надпись #Н/Д:
#Н/Д значит что функция ВПР не смогла найти цену Стул_13 в прайсе и это не мудрено, ведь диапазон таблицы в формуле ВПР уехал ниже этого значения:
Посему, если не хотите чтобы от вас уезжали, закрепляйте диапазон.
Очень важное замечание №2
Как вы заметили, формулы ссылаются на определённые ячейки, другими словами между формулами и исходными данными есть связь. Стоит изменить исходные данные и значения в формулах сразу изменятся.
Особенно остро это чувствуется в ВПР. Если вы вдруг забудетесь и в исходной табличке добавите лишний столбец в «неположенном месте», то в формула ВПР выдаст совсем неожиданные значения.
Поэтому, если вам не нужна связь между таблицами, рекомендую формулы превратить в данные.
Для этого нужно выделить столбец с формулами, нажать Ctrl+C и в левом верхнем углу выбрать «Вставить» — «Вставить значения».
Для тех кто не любит изучать картинки, я записал небольшое видео в котором показываю всё то, что мы проговорили выше (кроме вставки значений):
Видео — «Быстрый перенос данных с помощью функции ВПР в Экселе»
Перенос данных при помощи ВПР, можно использовать не только для того, чтобы быстро получать данные из одной таблицы в другой, но и для того, чтобы сравнивать две таблицы.
Это очень актуально для тех кто работает в закупках и отправляет заказы поставщику.
Обычно происходит следующая ситуация. Вы отправляете заказ поставщику, через некоторое время получаете ответ в виде счёта и сверяете заказ с счётом.
Всё ли есть в счёте, в нужном ли количестве, по правильным ли ценам и т.д.
Функция ВПР в Экселе: пошаговая инструкция
Представим, что перед нами стоит задача определить стоимость проданных товаров. Стоимость рассчитывается, как произведение количества и цены. Сделать это очень легко, если количество и цены находятся в соседних колонках. Однако данные могут быть представлены не в столь удобном виде. Исходная информация может находиться в совершенно разных таблицах и в другом порядке. В первой таблице указаны количества проданных товаров:
Во второй – цены:
Если перечень товаров в обеих таблицах совпадает, то, зная магическое сочетание Ctrl+C и Ctrl+V, данные о ценах можно легко подставить к данным о количестве. Однако очередность позиций в обеих таблицах не совпадает. Тупо скопировать цены и подставить к количеству не получится.
Поэтому мы не можем прописать формулу умножения и «протянуть» вниз на все позиции.
Что делать? Надо как-то цены из второй таблицы подставить к соответствующему количеству в первой, т.е. цену товара А к количеству товара А, цену Б к количеству Б и т.д.
Вот так.
Функция ВПР в Эксель легко справится с задачей.
Добавим вначале в первую таблицу новый столбец, куда будут подставляться цены из второй таблицы.
Для вызова функции с помощью Мастера нужно активировать ячейку, где будет прописана формула и нажать кнопку f(x) в самом начале строки формул. Появится диалоговое окно Мастера, где из списка всех функций нужно выбрать ВПР.
Кликаем по надписи «ВПР». Открывается следующее диалоговое окно.
Теперь нужно заполнить предлагаемые поля. В первом окошке «Искомое_значение» нужно указать критерий для ячейки, в которую мы вписываем формулу. В нашем случае это ячейка с наименованием товара «А».
Следующее поле «Таблица». В нем нужно указать диапазон данных, где будет осуществляться поиск нужных значений. В нашем случае это вторая таблица с ценой. При этом крайний левый столбец выделяемого диапазона должен содержать те самые критерии, по которым осуществляется поиск (столбец с наименованиями товаров). Затем таблица выделяется вправо минимум до того столбца, где находятся искомые значения (цены). Можно и дальше вправо выделить, но это уже ни на что не влияет. Главное, чтобы выделенная таблица начиналась со столбца с критериями и захватывала нужный столбец с данными. Также следует обратить внимание на тип ссылок, они должны быть абсолютными, т.к. формула будет копироваться в другие ячейки.
Следующее поле «Номер_столбца» — это число, на которое столбец с искомыми данными (ценами) отстоит от столбца с критерием (наименованием товара) включительно. То есть отсчет идет, начиная с самого столбца с критерием. Если у нас во второй таблице оба столбца находятся рядом, то нужно указать число 2 (первый – критерий, второй — цены). Часто бывает, что данные отстоят от критерия на 10 или 20 столбцов. Это не важно, Excel все сосчитает.
Последнее поле «Интервальный_просмотр», где указывается тип поиска: точное (0) или приблизительное (1) совпадение критерия. Пока ставим 0 (или ЛОЖЬ). Второй вариант рассмотрен ниже.
Нажимаем ОК. Если все правильно и значение критерия есть в обеих таблицах, то на месте только что введенной формулы появится некоторое значение. Остается только протянуть (или просто скопировать) формулу вниз до последней строки таблицы.
Теперь легко рассчитать стоимость простым умножением количества на цену.
Формулу ВПР можно прописать вручную, набирая аргументы по порядку, и разделяя точкой с запятой (см. видеоурок ниже).
Функция ВПР имеет свои особенности, о которых следует знать.
1. Первую особенность можно считать общей для функций, которые используются для многих ячеек путем прописывания формулы в одной из них и дальнейшим копированием в остальные. Здесь нужно обращать внимание на относительность и абсолютность ссылок. Конкретно в ВПР критерий (первое поле) должно иметь относительную ссылку (без знаков $), так как у каждой ячейки свой собственный критерий. А вот поле «Таблица» должно иметь абсолютную ссылку (адрес диапазона прописывается через $). Если этого не сделать, то при копировании формулы диапазон «поедет» вниз и многие значения просто не найдутся, так как искать будет негде.
2. Номер столбца, указываемый в третьем поле «Номер_столбца» при использовании Мастера функций, должен отсчитываться, начиная с самого критерия.
3. Функция ВПР из диапазона с искомыми данными выдает первое сверху значение. Это значит, что, если во второй таблице, откуда мы пытаемся «подтянуть» некоторые данные, присутствуют несколько ячеек с одинаковым критерием, то в рамках выделенного диапазона ВПР захватит первое сверху значение. Об этом следует помнить. К примеру, если мы хотим к цене товара подтянуть количество из другой таблицы, а там этот товар встречается несколько раз (в нескольких строках), то к цене подтянется первое сверху количество.
4. Последний параметр формулы, который 0 (нуль), ставить нужно обязательно. Иначе формула может криво работать.
5. После использования ВПР саму формулу лучше сразу удалить, оставив только полученные значения. Делается это очень просто. Выделяем диапазон с полученными значениями, нажимаем «копировать» и на это же место с помощью специальной вставки вставляем значения. Если таблицы находятся в разных книгах Excel, то очень удобно разорвать внешние связи (оставив вместо них только значения) с помощью специальной команды, которая находится по пути Данные → Изменить связи.
После вызова функции разрывания внешних связей появится диалоговое окно, где нужно нажать кнопку «Разорвать связь» и затем «Закрыть».
Это позволит удалить сразу все внешние ссылки.
Интервальный просмотр в функции ВПР
Наступило время обсудить последний аргумент функции ВПР. Как правило, указываю 0, чтобы функция искала точное совпадение критерия. Но есть вариант приблизительного поиска, это называется интервальный просмотр.
Рассмотрим алгоритм работы ВПР при выборе интервального просмотра. Прежде всего (это обязательно), столбец с критериями в таблице поиска должен быть отсортированы по возрастанию (если числа) или по алфавиту (если текст). ВПР просматривает список критериев сверху и ищет равный, а если его нет, то ближайший меньший к указанному критерию, т.е. на одну ячейку выше (поэтому и нужна предварительная сортировка. После нахождения подходящего критерия ВПР отсчитывает указанное количество столбцов вправо и забирает оттуда содержимое ячейки, что и является результатом работы формулы.
Проще понять на примере. По результатам выполнения плана продаж каждому торговому агенту нужно выдать заслуженную премию (в процентах от оклада). Если план выполнен менее, чем на 100%, премия не положена, если план выполнен от 100% до 110% (110% не входит) – премия 20%, от 110% до 120% (120% не входит) – 40%, 120% и более – премия 60%. Данные находятся в следующем виде.
Требуется подставить премию на основании выполнения планов продаж. Для решения задачи в первой ячейке пропишем следующую формулу:
=ВПР(B2;$E$2:$F$5;2;1)
и скопируем вниз.
На рисунке ниже изображена схема, как работает интервальный просмотр функции ВПР.
Джеки Чан выполнил план на 124%. Значит ВПР в качестве критерия ищет во второй таблице ближайшее меньшее значение. Это 120%. Затем отсчитывает 2 столбца и возвращает премию 60%. Брюс Ли план не выполнил, поэтому его ближайший меньший критерий – 0%.
Синтаксис и описание функции ВПР в Excel
Итак, так как второе название этой статьи «Функция ВПР в Excel для чайников», начнем с того что узнаем, что же такое функция ВПР и что она делает? Функция ВПР на английском VLOOKUP, ищет указанное значение и возвращает соответствующее значение из другого столбца.
Как работает функция ВПР? Функция ВПР в Excel выполняет поиск по вашим спискам данных на основе уникального идентификатора и предоставляет вам часть информации, связанную с этим уникальным идентификатором.
Буква «В» в ВПР означает «вертикальный». Она используется для дифференциации функции ВПР и ГПР, которая ищет значение в верхней строке массива («Г» обозначает «горизонтальный»).
Функция ВПР доступна во всех версиях Excel 2016, Excel 2013, Excel 2010, Excel 2007, Excel 2003.
Синтаксис функции ВПР выглядит следующим образом:
ВПР(искомое_значение;таблица;номер_столбца;[интервальный_просмотр])
Как видите, функция ВПР имеет 4 параметра или аргумента. Первые три параметра обязательные, последний – необязательный.
- искомое_значение – это значение для поиска.
Это может быть либо значение (число, дата или текст), либо ссылка на ячейку (ссылка на ячейку, содержащую значение поиска), или значение, возвращаемое некоторой другой функцией Excel. Например:
- Поиск числа: =ВПР(40; A2:B15; 2) – формула будет искать число 40.
- Поиск текста: =ВПР(«яблоки»; A2:B15; 2) – формула будет искать текст «яблоки». Обратите внимание, что вы всегда включаете текстовые значения в «двойные кавычки».
- Поиск значения из другой ячейки: =ВПР(C2; A2:B15; 2) – формула будет искать значение в ячейке C2.
- таблица – это два или более столбца данных.
Помните, что функция ВПР всегда ищет искомое значение в первом столбце таблицы. Ваш таблица может содержать различные значения, такие как текст, дата, числа или логические значения. Значения нечувствительны к регистру, что означает, что прописные и строчные буквы считаются идентичными.
Итак, наша формула =ВПР(40; A2:B15; 2) будет искать «40» в ячейках от A2 до A15, потому что A – это первый столбец таблицы A2: B15.
- номер_столбца – номер столбца в таблице, из которой должно быть возвращено значение в соответствующей строке.
Самый левый столбец в указанной таблице равен 1, второй столбец – 2, третий – 3 и т. д.
Итак, теперь вы можете прочитать всю формулу =ВПР(40; A2:B15; 2). Формула ищет «40» в ячейках от A2 до A15 и возвращает соответствующее значение из столбца B (потому что B является вторым столбцом в указанной таблице A2:B15).
4. интервальный_просмотр определяет, ищете ли вы точное соответствие (ЛОЖЬ) или приблизительное соответствие (ИСТИНА или опущено). Этот последний параметр является необязательным, но очень важным.
Как использовать именованный диапазон или таблицу в формулах ВПР
Если вы собираетесь использовать один и тот же диапазон поиска в нескольких формулах ВПР, вы можете создать именованный диапазон для него и ввести имя непосредственно в аргументе таблица вашей формулы ВПР.
Чтобы создать именованный диапазон, просто выберите ячейки и введите любое имя в поле «Имя», слева от панели «Формула».
Функция ВПР в Excel – Присвоение имени диапазону
Теперь вы можете написать следующую формулу ВПР, чтобы получить цену Продукта 1:
=ВПР(«Продукт 1»;Продукты;2)
Функция ВПР в Excel – Пример функции ВПР с именем диапазона
Большинство имен диапазонов в Excel применяются ко всей книге, поэтому вам не нужно указывать имя рабочего листа, даже если ваш диапазон поиска находится на другом листе. Такие формулы гораздо более понятны. Кроме того, использование именованных диапазонов может быть хорошей альтернативой абсолютным ссылкам на ячейки. Поскольку именованный диапазон не изменяется, когда формула копируется в другие ячейки, и вы можете быть уверены, что ваш диапазон поиска всегда останется верным.
Если вы преобразовали диапазон ячеек в полнофункциональную таблицу Excel (вкладка «Вставка» –> «Таблица»), вы можете выбрать диапазон поиска с помощью мыши, а Microsoft Excel автоматически добавит имена колонок или имя таблицы в формулу:
Функция ВПР в Excel – Пример функции ВПР с именем таблицы
Полная формула может выглядеть примерно так:
=ВПР(“Продукт 1”;Таблица6[[Продукт]:[Цена]];2)
или даже =ВПР(“Продукт 1”;Таблица6;2).
Как и именованные диапазоны, имена столбцов являются постоянными, а ссылки на ячейки не изменятся независимо от того, где копируется формула ВПР.
Постановка задачи
Итак, имеем две таблицы – таблицу заказов и прайс-лист:
Задача – подставить цены из прайс-листа в таблицу заказов автоматически, ориентируясь на название товара с тем, чтобы потом можно было посчитать стоимость.
Ошибки #Н/Д и их подавление
Функция ВПР (VLOOKUP) возвращает ошибку #Н/Д (#N/A) если:
- Включен точный поиск (аргумент Интервальный просмотр=0) и искомого наименования нет в Таблице.
- Включен приблизительный поиск (Интервальный просмотр=1), но Таблица, в которой происходит поиск не отсортирована по возрастанию наименований.
- Формат ячейки, откуда берется искомое значение наименования (например B3 в нашем случае) и формат ячеек первого столбца (F3:F19) таблицы отличаются (например, числовой и текстовый). Этот случай особенно характерен при использовании вместо текстовых наименований числовых кодов (номера счетов, идентификаторы, даты и т.п.) В этом случае можно использовать функции Ч и ТЕКСТ для преобразования форматов данных. Выглядеть это будет примерно так:
=ВПР(ТЕКСТ(B3);прайс;0) - Функция не может найти нужного значения, потому что в коде присутствуют пробелы или невидимые непечатаемые знаки (перенос строки и т.п.). В этом случае можно использовать текстовые функции СЖПРОБЕЛЫ (TRIM) и ПЕЧСИМВ (CLEAN) для их удаления:
=ВПР(СЖПРОБЕЛЫ(ПЕЧСИМВ(B3));прайс;0)
=VLOOKUP(TRIM(CLEAN(B3));прайс;0)
Для подавления сообщения об ошибке #Н/Д (#N/A) в тех случаях, когда функция не может найти точно соответствия, можно воспользоваться функцией ЕСЛИОШИБКА (IFERROR). Так, например, вот такая конструкция перехватывает любые ошибки создаваемые ВПР и заменяет их нулями:
=ЕСЛИОШИБКА(ВПР(B3;прайс;2;0);0)
=IFERROR(VLOOKUP(B3;прайс;2;0);0)
Аргументы функции
- lookup_value (искомое_значение) – это величина для поиска, из крайнего левого столбца таблицы. Это может быть значение, ссылка на ячейку или текстовая строка. В примере со студентами это их фамилии;
- table_array (таблица) – это диапазон данных, в котором будет осуществлен поиск. Это может быть ссылка на диапазон ячеек или именованный диапазон. В примере с таблицей со студентами, это будет вся таблица, которая содержит оценку и фамилии студентов;
- col_index (номер_столбца) – это порядковый номер столбца в диапазоне с данными, из которого будет получена искомая величина;
- [range lookup] ([интервальный_просмотр]) – этот аргумент указывает на точность совпадения данных при поиске. Укажите “0” – если точное, “1” – если приблизительное совпадение.
Как пользоваться функцией ВПР в Excel
Допустим, на склад предприятия по производству тары и упаковки поступили материалы в определенном количестве.
Стоимость материалов – в прайс-листе. Это отдельная таблица.
Необходимо узнать стоимость материалов, поступивших на склад. Для этого нужно подставит цену из второй таблицы в первую. И посредством обычного умножения мы найдем искомое.
Алгоритм действий:
- Приведем первую таблицу в нужный нам вид. Добавим столбцы «Цена» и «Стоимость/Сумма». Установим денежный формат для новых ячеек.
- Выделяем первую ячейку в столбце «Цена». В нашем примере – D2. Вызываем «Мастер функций» с помощью кнопки «fx» (в начале строки формул) или нажав комбинацию горячих клавиш SHIFT+F3. В категории «Ссылки и массивы» находим функцию ВПР и жмем ОК. Данную функцию можно вызвать перейдя по закладке «Формулы» и выбрать из выпадающего списка «Ссылки и массивы».
- Откроется окно с аргументами функции. В поле «Искомое значение» – диапазон данных первого столбца из таблицы с количеством поступивших материалов. Это те значения, которые Excel должен найти во второй таблице.
- Следующий аргумент – «Таблица». Это наш прайс-лист. Ставим курсор в поле аргумента. Переходим на лист с ценами. Выделяем диапазон с наименованием материалов и ценами. Показываем, какие значения функция должна сопоставить.
- Чтобы Excel ссылался непосредственно на эти данные, ссылку нужно зафиксировать. Выделяем значение поля «Таблица» и нажимаем F4. Появляется значок $.
- В поле аргумента «Номер столбца» ставим цифру «2». Здесь находятся данные, которые нужно «подтянуть» в первую таблицу. «Интервальный просмотр» – ЛОЖЬ. Т.к. нам нужны точные, а не приблизительные значения.
Нажимаем ОК. А затем «размножаем» функцию по всему столбцу: цепляем мышью правый нижний угол и тянем вниз. Получаем необходимый результат.
Теперь найти стоимость материалов не составит труда: количество * цену.
Функция ВПР связала две таблицы. Если поменяется прайс, то и изменится стоимость поступивших на склад материалов (сегодня поступивших). Чтобы этого избежать, воспользуйтесь «Специальной вставкой».
- Выделяем столбец со вставленными ценами.
- Правая кнопка мыши – «Копировать».
- Не снимая выделения, правая кнопка мыши – «Специальная вставка».
- Поставить галочку напротив «Значения». ОК.
Формула в ячейках исчезнет. Останутся только значения.
Быстрое сравнение двух таблиц с помощью ВПР
Функция помогает сопоставить значения в огромных таблицах. Допустим, поменялся прайс. Нам нужно сравнить старые цены с новыми ценами.
- В старом прайсе делаем столбец «Новая цена».
- Выделяем первую ячейку и выбираем функцию ВПР. Задаем аргументы (см. выше). Для нашего примера: . Это значит, что нужно взять наименование материала из диапазона А2:А15, посмотреть его в «Новом прайсе» в столбце А. Затем взять данные из второго столбца нового прайса (новую цену) и подставить их в ячейку С2.
Данные, представленные таким образом, можно сопоставлять. Находить численную и процентную разницу.
Как работает функция ВПР в Excel: несколько примеров для «чайников».
Предположим, нам необходимо из списка сотрудников выбрать данные определенного человека. Посмотрим, какие здесь есть тонкости.
Во-первых, нужно сразу определиться: точный либо приблизительный поиск нам нужен. Ведь они предъявляют разные требования к подготовке исходных данных.
Использование точного и приблизительного поиска.
Посмотрите, какие результаты выборки цен мы получаем с использованием приблизительного поиска на неупорядоченном массиве данных.
Обратите внимание, что четвертый параметр равен 1.
Кое-что из результатов определено верно, но в большинстве случаев – ошибки. Функция продолжает просматривать данные столбца D с наименованиями товаров до тех пор, пока не встретит значение больше, чем заданное ей в качестве критерия поиска. Тогда она останавливается и возвращает цену.
Поиск цены на египетские бананы закончился на первой же позиции, так как во второй записаны сливы. А это слово по правилам алфавита стоит ниже, чем «Бананы Египет». Значит, дальше искать не нужно. Получили 145. И не важно, что это цена абрикосов. Поиск цены на сливы происходил до тех пор, пока в D15 не встретилось слово, которое по алфавиту стоит ниже: яблоки. Остановились и взяли цену из предыдущей строки.
А теперь взгляните, как должно было все происходить, если все делать верно. Всего лишь делаем сортировку, как указано стрелкой.
Вы спросите: «А зачем тогда этот неточный просмотр, если с ним столько проблем?»
Он отлично подходит для выбора значений из определенных интервалов.
Допустим, у нас установлена скидка для покупателей в зависимости от количества приобретенного товара. Нужно быстро рассчитать, сколько процентов положено на совершенную покупку.
Если у нас количество товара 11 единиц, то мы просматриваем столбец D до тех пор, пока не встретим число, большее 11. Это 20 и находится оно в 4-й строке. Останавливаемся здесь. Значит, наша скидка расположена в 3-й строке и равна 3%.
Использование нескольких условий.
Еще один простой пример для «чайников» – как использовать при выборе нужного значения несколько условий?
Предположим, у нас есть список имен и фамилий. Нам нужно найти нужного человека и вывести сумму его дохода.
В F2 используем следующую формулу:
=ВПР(D2&” “&E2;$A$2:$B$21;2;0)
Разберем пошагово, как в этом случае работает ВПР.
В начале мы формируем условие. Для этого при помощи оператора & «склеиваем» вместе имя и фамилию, а между ними вставляем пробел.
Не забываем при этом пробел заключить в кавычки, иначе Excel не воспримет его как текст.
Затем в таблице с доходами ищем ячейку с именем и фамилией, разделенными пробелом.
Дальше все происходит по уже отработанной схеме.
Можно попробовать подстраховаться на тот случай, если между именем и фамилией введено несколько пробелов. Знак пробела в формуле заменяем на знак подстановки «*».
Приметно так – D2&”*”&E2
Заключение
Таким образом, функция ВПР – один из самых полезных инструментов при работе в Excel, когда нужно сопоставить данные двух таблиц и перенести значения из одной в другую при совпадении заданных значений. Правильное использование данной функции позволит сэкономить немало времени и сил, позволив автоматизировать процесс заполнения данных и исключив возможные ошибки из-за опечаток и т.д.
Источники
- https://pavel-istomin.ru/funkciya-vpr-v-eksele/
- https://statanaliz.info/excel/funktsii-i-formuly/funktsiya-excel-vpr-vlookup-i-gpr-hlookup/
- https://naprimerax.org/funktciia-vpr-v-excel
- https://www.planetaexcel.ru/techniques/2/106/
- https://excelhack.ru/funkciya-vlookup-vpr-v-excel/
- https://exceltable.com/funkcii-excel/funkciya-vpr-v-excel
- https://mister-office.ru/funktsii-excel/vlookup-excel-5-example.html
- https://MicroExcel.ru/funkcziya-vpr/
Jojojojo 0 / 0 / 0 Регистрация: 17.03.2015 Сообщений: 68 |
||||
1 |
||||
03.12.2016, 21:32. Показов 19415. Ответов 6 Метки нет (Все метки)
Доброго всем вечера.
Очень давно был опыт работы с макросами, но размышляя над этой задачей даже не знаю как это правильно сделать.
0 |
15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
|
03.12.2016, 21:50 |
2 |
Jojojojo, во второй таблице в свободном столбце (F, судя по описанию) формулу В свободном столбце большой таблицы формулу Код =ЕЧИСЛО(ПОИСКПОЗ(B1&C1&D1&E1;[ИмяВторогоФайла.xls]ИмяЛиста!F:F;0)) Отфильтровать по ИСТИНА, покрасить видимые.
1 |
0 / 0 / 0 Регистрация: 17.03.2015 Сообщений: 68 |
|
03.12.2016, 22:57 [ТС] |
3 |
Казанский, Большое спасибо, но в процессе тестов выявилась проблема опечатков в некоторых ячейках. 1 список вручную отрабатывал в течении 2-3 часов, было 130 совпадений, а при данном методе прошло только 119, 11 из-за ошибок в написании.
0 |
15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
|
04.12.2016, 17:02 |
4 |
Jojojojo, файл-пример приложите (или 2 файла в архиве). Код =ИЛИ(ЕСЛИ(E2=Лист2!$E$2:$E$3;(B2=Лист2!$B$2:$B$3)*(C2=Лист2!$C$2:$C$3)+(C2=Лист2!$C$2:$C$3)*(D2=Лист2!$D$2:$D$3)+(B2=Лист2!$B$2:$B$3)*(D2=Лист2!$D$2:$D$3))) Здесь Лист2 — лист, в котором ищутся совпадения. Вместо «3» везде должен быть номер последней строки (мне хватило фантазии на 2 строки данных).
1 |
0 / 0 / 0 Регистрация: 17.03.2015 Сообщений: 68 |
|
04.12.2016, 20:01 [ТС] |
5 |
Казанский, Выслал архив в личку
0 |
Jojojojo 0 / 0 / 0 Регистрация: 17.03.2015 Сообщений: 68 |
||||
08.12.2016, 10:32 [ТС] |
6 |
|||
Так и не дождавшись ответа работа дошла до момента, когда нужно в одном документе сравнивать значения на Лист1 А1 с массивом значений Лист2 столбец А, и если есть совпадения то на листе 1 в столбце I ставить заранее вводимое число.
но он даже не пытается рассматривать это как формулу
0 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
08.12.2016, 10:54 |
7 |
Чтоб рассматривал нужно:
1 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
08.12.2016, 10:54 |
Помогаю со студенческими работами здесь Объединение строк в разных таблицах по условию Объединение строк в разных таблицах по условию SQL- запрос. Поиск одинаковых значений полей в таблицах Есть 3 таблицы: 1.проданные товары, 2.продавец, 3.покупатель: Поиск совпадений в разных таблицах sql Подскажите, пожалуйста, решение. Есть 2 таблицы А и В. Количество полей… Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 7 |
Самый быстрый ВПР
Если в ваших таблицах всего лишь несколько десятков строк, то, скорее всего, эта статья не будет для вас актуальной. На таких небольших объемах данных любой способ будет работать достаточно шустро, чтобы вы этого не замечали. Если же число строк в ваших списках измеряется тысячами, да и самих таблиц не одна-две, то время мучительного ожидания на пересчете формул в Excel может доходить до нескольких минут.
В этом случае, правильный выбор функции, применяемой для связывания таблиц, играет решающую роль — разница в производительности между ними, как мы увидим далее, может составлять более 20 раз!
Когда я писал свою первую книжку пять лет назад, то уже делал сравнительный скоростной тест различных способов поиска и подстановки данных функциями ВПР, ИНДЕКС+ПОИСКПОЗ, СУММЕСЛИ и др. С тех пор сменилось три версии Office, появились надстройки Power Query и Power Pivot, кардинально изменившие весь процесс работы с данными. А в прошлом году ещё и обновился вычислительный движок Excel, получив поддержку динамических массивов и новые функции ПРОСМОТРХ, ФИЛЬТР и т.п.
Так что пришла пора снова взяться за секундомер и выяснить — кто же самый быстрый. Ну и, заодно, проверить — какие способы поиска и подстановки данных в Excel вы знаете 🙂
Подопытный кролик
Тест будем проводить на следующем примере:
Это книга Excel с одним листом, где расположены две таблицы: отгрузки (500 000 строк) и прайс-лист (600 строк). Наша задача — подставить цены из прайс-листа в таблицу отгрузок. Для каждого способа будем вводить формулу в ячейку С2 и копировать вниз на весь столбец, замеряя время, которое потребуется Excel, чтобы просчитать весь столбец из полумиллиона ячеек. Полученные значения, безусловно, зависят от множества факторов (поколение процессора, объем оперативной памяти, текущая загрузка системы, версия Office и т.д.), но нам важны не конкретные цифры, а, скорее, их сравнение друг с другом. Важно понимать прожорливость каждого способа и их ограничения.
Способ 1. ВПР
Сначала — классика 🙂 Легендарная функция вертикального просмотра — ВПР (VLOOKUP) , которая приходит в голову первой в подобных ситуациях:
- B2 — искомое значение, т.е. название товара, который мы хотим найти в прайс-листе
- $G$2:$H$600 — закреплённая знаками доллара (чтобы не сползала при копировании формулы вниз) абсолютная ссылка на прайс
- 2 — номер столбца в прайс-листе, откуда мы хотим взять цену
- 0 или ЛОЖЬ — переключение в режим поиска точного соответствия, когда любое некорректное название товара (например, ФОНЕРА) в столбце B в таблице отгрузок приведёт к появлению ошибки #Н/Д как результата работы функции.
Время вычисления = 4,3 сек.
Способ 2. ВПР с выделением столбцов целиком
Многие пользователи, применяя ВПР, во втором аргументе этой функции, где нужно задать поисковую таблицу (прайс), выделяют не ограниченный диапазон ( $G$2:$H$600 ), а сразу столбцы G:H целиком. Это проще, быстрее, позволяет не думать про F4 и то, что завтра прайс-лист может быть на несколько строк больше. Формула в этом случае выглядит тоже компактнее:
В старых версиях Excel такое выделение не сильно влияло на скорость вычислений, но сейчас (неожиданно для меня, признаюсь) результат получился в разы хуже предыдущего.
Время вычисления = 14,5 сек.
Способ 3. ИНДЕКС и ПОИСКПОЗ
Следующей после ВПР ступенью эволюции для многих пользователей Microsoft Excel обычно является переход на использование связки функций ИНДЕКС (INDEX) и ПОИСКПОЗ (MATCH) . Выглядит эта формула так:
Функция ИНДЕКС извлекает из заданного в первом аргументе диапазона (столбца $H$2:$H$600 с ценами в прайс-листе) содержимое ячейки с заданным номером. А номер этот, в свою очередь, определяется функцией ПОИСКПОЗ, у которой три аргумента:
- Что нужно найти — название товара из B2
- Где мы это ищем — столбец с названиями товаров в прайсе ( $G$2:$G$600 )
- Режим поиска: 0 — точный, 1 или -1 — приблизительный с округлением в меньшую или большую сторону, соответственно.
Формула выходит чуть сложнее, но, при этом имеет несколько ощутимых преимуществ перед классической ВПР, а именно:
- Не нужно отсчитывать номер столбца (как в третьем аргументе ВПР).
- Можно извлекать данные, которые находятся левее столбца, где просходит поиск.
По скорости, однако же, этот способ проигрывает ВПР почти в два раза:
Время вычисления = 7,8 сек.
Если же, вдобавок, полениться и выделять не ограниченные диапазоны, а столбцы целиком:
. то результат получается совсем печальный:
Время вычисления = 28,5 сек.
28 секунд, Карл! В 6 раз медленнее ВПР!
Способ 4. СУММЕСЛИ
Если нужно найти не текстовые, а именно числовые данные (как в нашем случае — цену), то вместо ВПР вполне можно использовать функцию СУММЕСЛИ (SUMIF) . Изначально она задумывалась как инструмент для выборочного суммирования данных по условию (найди и сложи мне все продажи кабелей, например), но можно заставить её искать нужный нам товар и в прайс-листе. Если грузы в нём не повторяются, то суммировать будет не с чем и эта функция просто выведет искомое значение:
- Первый аргумент СУММЕСЛИ — это диапазон проверяемых ячеек, т.е. названия товаров в прайсе ( $G$2:$G$600 ).
- Второй аргумент ( B2 ) — что мы ищем.
- Третий аргумент — диапазон ячеек с ценами $H$2:$H$600 , числа из которых мы хотим просуммировать, если в соседних ячейках проверяемого диапазона есть искомое значение.
Очевидным минусом такого подхода является то, что он работает только с числами. Также этот способ не удобен, если прайс-лист находится в отдельном файле — придется всё время держать его открытым, т.к. функция СУММЕСЛИ не умеет брать данные из закрытых книг, в отличие от ВПР, для которой это не проблема.
В плюсы же можно записать удобство при поиске сразу по нескольким столбцам — для этого идеально подходит более продвинутая версия этой функции — СУММЕСЛИМН (SUMIFS) . Скорость вычислений же, при этом, весьма посредственная:
Время вычисления = 12,8 сек.
При выделении столбцов целиком, т.е. использовании формулы вида =СУММЕСЛИ( G:G ; B2 ; H:H ) всё ещё хуже:
Время вычисления = 41,7 сек.
Это самый плохой результат в нашем тесте.
Способ 5. СУММПРОИЗВ
Этот подход сейчас встречается не часто, но всё ещё достаточно регулярно. Обычно так любят извращаться пользователи старой школы, ещё хорошо помнящие те времена, когда в Excel было всего 255 столбцов и 56 цветов 🙂
Суть этого метода заключается в использовании функции СУММПРОИЗВ (SUMPRODUCT) , изначально предназначенной для поэлементного перемножения нескольких диапазонов с последующим суммированием полученных произведений. В нашем случае, вместо одного из массивов будет выступать условие, а вторым будут цены:
Выражение ($G$2:$G$600=B2) , по сути, проверяет каждое название груза в прайс-листе на предмет соответствия искомому значению (ФАНЕРА ПР). Результатом каждого сравнения будет логическое значение ИСТИНА (TRUE ) или ЛОЖЬ (FALSE) , что в Excel интерпретируется как 1 и 0, соответственно. Последующее умножение этих нулей и единиц на цены оставит в живых цену только того товара, который нам, в данном случае, и нужен.
Эта формула является, по сути, формулой массива, но не требует нажатия обычного для них сочетания клавиш Ctrl + Shift + Enter , т.к. функция СУММПРОИЗВ поддерживает массивы уже сама по себе. Возможно, по этой же причине (формулы массива всегда медленнее, чем обычные) такой скорость пересчёта такой формулы — не очень:
Время вычисления = 11,8 сек.
- Совместимость с любыми, самыми древними версиями Excel.
- Возможность задавать сложные условия (и несколько)
- Способность этой формулы работать с данными из закрытых файлов, если добавить перед ней двойное бинарное отрицание (два подряд знака «минус»). СУММЕСЛИМН таким похвастаться не может.
Способ 6. ПРОСМОТР
Ещё один относительно экзотический способ поиска и подстановки данных, наравне с ВПР — это использование функции ПРОСМОТР (LOOKUP) . Только не перепутайте её с новой, буквально, на днях появившейся функцией ПРОСМОТРХ (XLOOKUP) — про неё мы поговорим дальше особо. Функция ПРОСМОТР существовала в Excel начиная с самых ранних версий и тоже вполне может решить нашу задачу:
- B2 — название груза, которое мы ищем
- $G$2:$G$600 — одномерный диапазон-вектор (столбец или строка), где мы ищем совпадение
- $H$2:$H$600 — такого же размера диапазон, откуда нужно вернуть найденный результат (цену)
На первый взгляд всё выглядит очень удобно и логично, но всю картину портят два неочевидных момента:
- Эта функция требует обязательной сортировки прайс-листа по возрастанию (алфавиту) и без этого не работает.
- Если в таблице отгрузок искомое значение будет написано с опечаткой (например, АГ Е ДОЛ вместо АГИДОЛ), то функция ПРОСМОТР выдаст не ошибку #Н/Д, а цену для ближайшего предыдущего товара:
При работе с неидеальными данными в реальном мире это гарантированно создаст проблемы, как вы понимаете.
Скорость же вычислений у функции ПРОСМОТР (LOOKUP) весьма приличная:
Время вычисления = 7,6 сек.
Способ 7. Новая функция ПРОСМОТРХ
Эта функция пришла с одним из недавних обновлений пока только пользователям Office 365 и пока отсутствует во всех остальных версиях (Excel 2010, 2013, 2016, 2019). По сравнению с классической ВПР у этой функции есть масса преимуществ (упрощенный синтаксис, возможность искать не только сверху-вниз, возможность сразу задать значение вместо #Н/Д и т.д.) Формула для решения нашей задачи будет выглядеть в этом случае так:
Если не брать в расчёт необязательные 4,5,6 аргументы, то синтаксис этой функции полностью совпадает с её предшественником — функцией ПРОСМОТР (LOOKUP) . Скорость вычислений при тестировании на наши 500000 строк тоже оказалась аналогичной:
Время вычисления = 7,6 сек.
Почти в два раза медленнее, чем у ВПР, вместо которой Microsoft предлагает теперь использовать ПРОСМОТРХ. Жаль.
И, опять же, если полениться и выделить диапазоны в прайс-листе целыми столбцами:
. то скорость падает до совершенно неприличных уже значений:
Время вычисления = 28,3 сек.
А если на динамических массивах?
Прошлогоднее (осень 2019) обновление вычислительного движка Microsoft Excel добавило ему поддержку динамических массивов (Dynamic Arrays), о которых я уже писал. Это принципиально новый подход к работе с данными, который можно использовать почти с любыми классическими функциями Excel. На примере ВПР это будет выглядеть так:
Разница с классическим вариантом в том, что первым аргументом ВПР здесь выступает не одно искомое значение (а формулу потом нужно копировать вниз на остальные строки), а сразу весь массив из полумиллиона грузов B2:B500000, цены для которых мы хотим найти. Формула при этом сама распространяется вниз, занимая требуемое количество ячеек.
Скорость пересчета в таком варианте меня, откровенно говоря, ошеломила — пауза между нажатием на Enter после ввода формулы и получением результатов почти отсутствовала.
Время вычисления = 1 сек.
Что интересно, и новая ПРОСМОТРХ, и старая ПРОСМОТР, и связка ИНДЕКС+ПОИСКПОЗ в таком режиме тоже были очень быстрыми — время вычислений не больше 1 секунды! Фантастика.
А вот олдскульные подходы на основе СУММПРОИЗВ и СУММЕСЛИ(МН) с динамическими массивами работать отказались 🙁
Что с умными таблицами?
Обрадовавшись фантастическим результатам, полученным на динамических массивах, я решил вдогон попробовать протестировать разницу в скорости при работе с обычными и «умными» таблицами. Я имею ввиду те самые «красивые таблицы», в которые вы можете преобразовать ваш диапазон с помощью команды Форматировать как таблицу на вкладке Главная (Home — Format as Table) или с помощью сочетания клавиш Ctrl + T .
Если предварительно превратить наши отгрузки и прайс в «умные» (по умолчанию они получат имена Таблица1 и Таблица2, соответственно), то формула с той же ВПР будет выглядеть как:
- [@Груз] — ссылка на ячейку B2, означающая, в данном случае, что нужно взять значение из той же строки из столбца Груз текущей умной таблицы.
- Таблица2 — ссылка на прайс-лист
Жирным плюсом такого подхода будет возможность легко добавлять данные в наши таблицы в будущем. При дописывании новых строк в отгрузки или к прайс-листу, наши «умные» таблицы будут растягиваться автоматически.
Скорость же, как выяснилось, тоже вырастает очень значительно и примерно равна скорости работы на динамических массивах:
Время вычисления = 1 сек.
У меня есть подозрение, что дело тут не в самих «умных» таблицах, а всё в том же обновлении вычислительного движка, т.к. на старых версиях Excel такого прироста в скорости на умных таблицах я не помню.
Бонус. Запрос Power Query
Замерять, так замерять! Давайте, для полноты картины, сравним наши перечисленные способы еще и с запросом Power Query, который тоже может решить нашу задачу. Кто-то скажет, что некорректно сравнивать пересчёт формул с механизмом обновления запроса, но мне, откровенно говоря, просто самому было интересно — кто быстрее?
- Превращаем обе наши таблицы в «умные» с помощью команды Форматировать как таблицу на вкладке Главная (Home — Format as Table) или с помощью сочетания клавиш Ctrl + T .
- По очереди загружаем таблицы в Power Query с помощью команды Данные — Из таблицы / диапазона (Data — From Table/Range) .
- После загрузки в Power Query возвращаемся обратно в Excel, оставляя загруженные данные как подключение. Для этого в окне Power Query выбираем Главная — Закрыть и загрузить — Закрыть и загрузить в. — Только создать подключение (Home — Close&Load — Close&Load to. — Only create connection) .
- После того, как обе исходные таблицы будут загружены как подключения, создадим ещё один, третий запрос, который будет объединять их между собой, подставляя цены из прайса в отгрузки. Для этого на вкладке Данные выберем Получить данные / Создать запрос — Объединить запросы — Объединить (Get Data / New Query — Merge queries — Merge) :
В отличие от формул, запросы Power Query не обновляются автоматически «на лету», а требуют щелчка правой кнопкой мыши по таблице (или запросу в правой панели) и выбору команды Обновить (Refresh) . Также можно воспользоваться командой Обновить все (Refresh All) на вкладке Данные (Data) .
Время обновления = 8,2 сек.
Итоговая таблица и выводы
Если вы честно дочитали до этого места, то какие-то выводы, наверное, уже сделали самостоятельно. Если же пропустили все детали и сразу перешли к итогам, то вот вам общая результирующая таблица по скорости всех методов:
Само-собой, у каждого из нас свои предпочтения, задачи и тараканы, но для себя я сформулировал выводы после этого тестирования так:
ВПР с несколькими условиями: 5 примеров.
Очень часто наши требования к поиску данных не ограничиваются одним условием. К примеру, нам нужна выручка по магазину за определенный месяц, количество конкретного товара, проданного определенному покупателю и т.д. Обычными средствами функции ВПР эту задачу решить сложно и даже не всегда возможно. Ведь там предусмотрено использование только одного критерия поиска.
Мы предложим вам несколько вариантов решения проблемы поиска по нескольким условиям.
ВПР по нескольким условиям с использованием дополнительного столбца.
Задачу, рассмотренную в предыдущем примере, можно решить и другим способом – без использования формулы массива. Ведь работа с массивами многим представляется сложной и недоступной для понимания. Дополнительный столбец для поиска по нескольким условиям будет в определенном отношении более простым вариантом.
Итак, необходимо выбрать значение выручки за определенный месяц, год и по нужному магазину. В итоге имеем 3 условия отбора.
Сразу по трем столбцам функция ВПР искать не может. Поэтому нам нужно объединить их в один. И, поскольку поиск производится всегда в крайнем левом (первом) столбце, то нужно добавить его в нашу таблицу тоже слева.
Вставляем перед таблицей с данными дополнительный столбец A. Затем при помощи оператора & объединяем в нем содержимое B,C и D. Записываем в А7
и копируем в находящиеся ниже ячейки.
Формула поиска в D4 будет выглядеть:
В диапазон поиска включаем и наш дополнительный столбец. Критерий поиска – также объединение 3 значений. И извлекаем результат из 5 колонки.
Все работает, однако вид несколько портит дополнительный столбец. В крайнем случае, его можно скрыть, используя контекстное меню по нажатию правой кнопки мыши.
Вид станет приятнее, а на результаты это никак не повлияет.
ВПР по двум условиям при помощи формулы массива.
У нас есть таблица, в которой записана выручка по каждому магазину за день. Мы хотим быстро найти сумму продаж по конкретному магазину за определенный день.
Для этого в верхней части нашего листа запишем критерии поиска: дата и магазин. В ячейке B3 будем выводить сумму выручки.
Формула в B3 выглядит следующим образом:
Обратите внимание на фигурные скобки, которые означают, что это формула массива. То есть наша функция ВПР работает не с отдельными значениями, а разу с массивами данных.
Разберем процесс подробно.
Мы ищем дату, записанную в ячейке B1. Но вот только разыскивать мы ее будем не в нашем исходном диапазоне данных, а в немного видоизмененном. Для этого используем условие
То есть, в том случае, если наименование магазина совпадает с критерием в ячейке B2, мы оставляем исходные значения из нашего диапазона. А если нет – заменяем их на пробелы. И так по каждой строке.
В результате получим вот такой виртуальный массив данных на основе нашей исходной таблицы:
Как видите, строки, в которых ранее был «Магазин 1», заменены на пустые. И теперь искать нужную дату мы будем только среди информации по «Магазин 2». И извлекать значения выручки из третьей колонки.
С такой работой функция ВПР вполне справится.
Такой ход стал возможен путем применения формулы массива. Поэтому обратите особое внимание: круглые скобки в формуле писать руками не нужно! В ячейке B3 вы записываете формулу
И затем нажимаете комбинацию клавиш CTRL+Shift+Enter. При этом Excel поймет, что вы хотите ввести формулу массива и сам подставит скобки.
Таким образом, функция ВПР поиск по двум столбцам производит в 2 этапа: сначала мы очищаем диапазон данных от строк, не соответствующих одному из условий, при помощи функции ЕСЛИ и формулы массива. А затем уже в этой откорректированной информации производим обычный поиск по одному только второму критерию при помощи ВПР.
Чтобы упростить работу в будущем и застраховать себя от возможных ошибок при добавлении новой информации о продажах, мы рекомендуем использовать «умную» таблицу. Она автоматически подстроит свой размер с учетом добавленных строк, и никакие ссылки в формулах не нужно будет менять.
Вот как это будет выглядеть.
ВПР по нескольким критериям с применением массивов — способ 2.
Выше мы уже рассматривали, как при помощи формулы массива можно организовать поиск ВПР с несколькими условиями. Предлагаем еще один способ.
Условия возьмем те же, что и в предыдущем примере.
Формулу в С4 введем такую:
Естественно, не забываем нажать CTRL+Shift+Enter.
Теперь давайте пошагово разберем, как это работает.
Наше задача здесь – также создать дополнительный столбец для работы функции ВПР. Только теперь мы создаем его не на листе рабочей книги Excel, а виртуально.
Как и в предыдущем примере, мы ищем текст из объединенных в одно целое условий поиска.
Далее определяем данные, среди которых будем искать.
Конструкция вида A7:A20&B7:B20&C7:C20;D7:D20 создает 2 элемента. Первый – это объединение колонок A, B и C из исходных данных. Если помните, то же самое мы делали в нашем дополнительном столбце. Второй D7:D20 – это значения, одно из которых нужно в итоге выбрать.
Функция ВЫБОР позволяет из этих элементов создать массив. как раз и означает, что нужно взять сначала первый элемент, затем второй, и объединить их в виртуальную таблицу – массив.
В первой колонке этой виртуальной таблицы мы будем искать, а из второй – извлекать результат.
Таким образом, для работы функции ВПР с несколькими условиями мы вновь используем дополнительный столбец. Только создаем его не реально, а виртуально.
Двойной ВПР при помощи ИНДЕКС + ПОИСКПОЗ
Далее речь у нас пойдет уже не о функции ВПР, но задачу мы будем решать ту же самую. В качестве критерия поиска нам опять нужно использовать несколько условий.
Формула в С4 теперь выглядит так:
И не забываем при вводе нажать CTRL+Shift+Enter! Это формула массива.
Теперь давайте разбираться, как это работает.
Функция ИНДЕКС в нашем случае позволяет извлечь элемент из списка по его порядковому номеру. Список – это диапазон D7:D20, где записаны суммы выручки. А вот порядковый номер, который нужно извлечь, мы определяем при помощи ПОИСКПОЗ.
Синтаксис здесь следующий:
ПОИСКПОЗ(что_ищем; где_ищем; тип_поиска)
Тип поиска ставим 0, то есть точное совпадение. В нашем случае мы будем искать 1. Далее мы определим массив, в котором будем работать.
Выражение (A7:A20=C1)*(B7:B20=C2)*(C7:C20=C3) позволит создать виртуальную таблицу примерно такого вида:
Как видите, первоначально мы последовательно сравниваем каждое значение с нашим критерием отбора. В столбце А у нас записаны месяцы – сравниваем их с месяцем-критерием из ячейки C1. В случае совпадения получаем ИСТИНА, иначе – ЛОЖЬ. Аналогично последовательно проверяем год и название магазина. А затем просто перемножаем значения. Поскольку логические переменные для Excel – это либо 0, либо 1, то произведение их может быть равно 1 только в том случае, если мы имеем по каждой колонке ИСТИНА (то есть,1). Во всех остальных случаях получаем 0.
Убеждаемся, что цифра 1 встречается только единожды.
При помощи ПОИСКПОЗ определяем, на какой позиции она находится. На какой позиции находится 1, на той же позиции находится в массиве и искомая сумма выручки. В нашем случае это 10-я.
Далее при помощи ИНДЕКС извлекаем 10-ю по счету выручку.
Таким образом мы выбрали значение по нескольким условиям без использования функции ВПР.
Достойная замена – функция СУММПРОИЗВ.
У нас есть данные о продажах нескольких менеджеров в различных регионах. Нужно сделать выборку по дате, менеджеру и региону.
Работает как формула массива, хотя по факту таковой не является. В этом заключается замечательное свойство функции СУММПРОИЗВ, о которой мы еще много будем говорить в других статьях.
Последовательно по каждой строке диапазона от 2-й до 27-й она проверяет совпадение каждого соответствующего значения с критерием поиска. Эти результаты перемножаются между собой и в итоге еще умножаются на сумму выручки. Если среди трех условий будет хотя бы одно несовпадение, то итогом будет 0. В случае совпадения сумма выручки трижды умножится на 1.
Затем все эти 27 произведений складываются, и результатом будет выручка нужного менеджера в каком-то регионе за определенную дату.
В качестве бонуса можно продолжить этот пример и рассчитать общую сумму продаж менеджера в определенном регионе.
Для этого из формулы просто уберем сравнение по дате.
Кстати, возможен и другой вариант расчета с этой же функцией:
Итак, мы рассмотрели примеры использования функции ВПР с двумя и с несколькими условиями. А также обнаружили, что этой ценной функции есть замечательная альтернатива.
Примеры использования функции ВПР:
Как объединить две или несколько таблиц в Excel — В этом руководстве вы найдете некоторые приемы объединения таблиц Excel путем сопоставления данных в одном или нескольких столбцах. Как часто при анализе в Excel вся необходимая информация собирается на одном…
2 способа извлечь данные из разных таблиц при помощи ВПР. — Задача: Данные, которые нужно найти и извлечь при помощи функции ВПР, находятся в нескольких таблицах. Эти таблицы имеют одинаковую структуру (то есть, одни и те же столбцы, расположенные в одном…
/> Вычисление номера столбца для извлечения данных в ВПР — Задача: Наиболее простым способом научиться указывать тот столбец, из которого функция ВПР будет извлекать данные. При этом мы не будем изменять саму формулу, поскольку это может привести в случайным ошибкам.… 4 способа, как сделать левый ВПР в Excel. — Функция ВПР – одна из самых популярных, когда нужно найти и извлечь из таблицы какие-либо данные. Но при этом она имеет один существенный недостаток. Поиск она производит в крайнем левом…
Формула ВПР в Excel для сравнения двух таблиц — 4 способа — Сравнение таблиц – это задача, которую в Excel приходится довольно часто решать. Например, у нас есть старый прайс-лист и его новая версия. Нужно просмотреть, цены на какие товары изменились и…
Почему не работает ВПР в Excel? — Функция ВПР – это очень мощный инструмент поиска. Но если он по каким-то причинам завершился неудачно, то вы получите сообщение об ошибке #Н/Д (#N/A в английском варианте). Давайте постараемся вместе…
Функция ВПР в Excel: пошаговая инструкция с 5 примерами — ВПР — это функция Excel для поиска и извлечения данных из определенного столбца в таблице. Она поддерживает приблизительное и точное сопоставление, а также подстановочные знаки (* и ?). Значения поиска…
Формула ВПР в Excel — 22 факта, которые нужно знать. — В процессе работы в Excel часто возникает задача извлечения нужных данных из рабочих таблиц. Для этой цели в Excel предусмотрена формула ВПР (VLOOKUP в английском варианте). И хотя ВПР относительно…
Суть запроса на выборку – выбрать из исходной таблицы строки, удовлетворяющие определенным критериям (подобно применению стандартного Фильтра ). Произведем отбор значений из исходной таблицы с помощью формул массива . В отличие от применения Фильтра ( CTRL+SHIFT+L или Данные/ Сортировка и фильтр/ Фильтр ) отобранные строки будут помещены в отдельную таблицу.
В этой статье рассмотрим наиболее часто встречающиеся запросы, например: отбор строк таблицы, у которых значение из числового столбца попадает в заданный диапазон (интервал); отбор строк, у которых дата принаждежит определенному периоду; задачи с 2-мя текстовыми критериями и другие. Начнем с простых запросов.
1. Один числовой критерий (Выбрать те Товары, у которых цена выше минимальной)
Пусть имеется Исходная таблица с перечнем Товаров и Ценами (см. файл примера, лист Один критерий — число ).
Необходимо отобразить в отдельной таблице только те записи (строки) из Исходной таблицы, у которых цена выше 25.
Решить эту и последующие задачи можно легко с помощью стандартного фильтра . Для этого выделите заголовки Исходной таблицы и нажмите CTRL+SHIFT+L . Через выпадающий список у заголовка Цены выберите Числовые фильтры. , затем задайте необходимые условия фильтрации и нажмите ОК.
Будут отображены записи удовлетворяющие условиям отбора.
Другим подходом является использование формул массива . В отличие от фильтра отобранные строки будут помещены в отдельную таблицу — своеобразный Отчет , который, например, можно отформатировать в стиль отличный от Исходной таблицы или производить другие ее модификации.
Критерий (минимальную цену) разместим в ячейке Е6 , таблицу для отфильтрованных данных — в диапазоне D10:E19 .
Теперь выделим диапазон D11:D19 (столбец Товар) и в Строке формул введем формулу массива :
Вместо ENTER нажмите сочетание клавиш CTRL+SHIFT+ENTER .
Те же манипуляции произведем с диапазоном E11:E19 куда и введем аналогичную формулу массива :
В результате получим новую таблицу, которая будет содержать только товары, у которых цены попадают в интервал, указанный в ячейках Е5 и Е6 .
Чтобы показать динамизм полученного Отчета (Запроса на выборку) введем в Е6 значение 65. В новую таблицу будет добавлена еще одна запись из Исходной таблицы, удовлетворяющая новому критерию.
Если в Исходную таблицу добавить новый товар с Ценой в диапазоне от 25 до 65, то в новую таблицу будет добавлена новая запись.
В файле примера также содержатся формулы массива с обработкой ошибок, когда в столбце Цена содержится значение ошибки, например #ДЕЛ/0! (см. лист Обработка ошибок ).
Следующие задачи решаются аналогичным образом, поэтому не будем их рассматривать так детально.
3. Один критерий Дата (Выбрать те Товары, у которых Дата поставки совпадает заданной)
Пусть имеется Исходная таблица с перечнем Товаров и Датами поставки (см. файл примера, лист Один критерий — Дата ).
Для отбора строк используются формулы массива, аналогичные Задаче1 (вместо критерия =$B$12:$B$20)*(СТРОКА($B$12:$B$20)-СТРОКА($B$11));$J$12-СТРОКА(A12)+СТРОКА($B$11)+1))
Примечание : После ввода формулы вместо клавиши ENTER (ВВОД) нужно нажать сочетание клавиш CTRL+SHIFT+ENTER. Это сочетание клавиш используется для ввода формул массива.
Скопируйте формулу массива вниз на нужное количество ячеек. Формула вернет только те значения Товаров, которые были поставлены в диапазоне указанных дат. В остальных ячейках будут содержаться ошибки #ЧИСЛО! Ошибки в файле примера (Лист 4.Диапазон Дат) скрыты с помощью Условного форматирования .
Аналогичную формулу нужно ввести и для дат в столбец E.
В ячейке J12 вычислено количество строк исходной таблицы, удовлетворяющих критериям:
Решение2 : Для отбора строк можно использовать формулы массива, аналогичные Задаче2 (т.е. формулы массива, возвращающие несколько значений ):
Для ввода первой формулы выделите диапазон ячеек G12:G20 . После ввода формулы вместо клавиши ENTER (ВВОД) нужно нажать сочетание клавиш CTRL+SHIFT+ENTER.
Решение3 : Если столбец Дат СОРТИРОВАН, то можно не использовать формулы массива.
Сначала необходимо вычислить первую и последнюю позиции строк, которые удовлетворяют критериям. Затем вывести строки с помощью функции СМЕЩ() .
Этот пример еще раз наглядно демонстрирует насколько предварительная сортировка данных облегчает написание формул.
5. Один критерий Дата (Выбрать те Товары, у которых Дата поставки не раньше/ не позже заданной)
Пусть имеется Исходная таблица с перечнем Товаров и Датами поставки (см. файл примера, лист Один критерий — Дата (не позже) ).
Для отбора строк, дата которых не раньше (включая саму дату), используется формула массива:
= ИНДЕКС(A12:A20;НАИМЕНЬШИЙ(ЕСЛИ($E$7 C15;И($B$7>=B15;$B$7 =$B$13:$B$21)*($B$13:$B$21>0);СТРОКА($B$13:$B$21);»»);СТРОКА($B$13:$B$21)-СТРОКА($B$12)) -СТРОКА($B$12))
Условие $E$7=$A$13:$A$21 гарантирует, что будут отобраны товары только определенного типа. Условие $E$8>=$B$13:$B$21 гарантирует, что будут отобраны даты не позже заданной (включая). Условие $B$13:$B$21>0 необходимо, если в диапазоне дат имеются пустые ячейки. Знак * (умножение) используется для задания Условия И (все 3 критерия должны выполняться для строки одновременно).
Примечание . Случай, когда список несортирован, рассмотрен в статье Поиск ДАТЫ (ЧИСЛА) ближайшей к заданной, с условием в MS EXCEL. Несортированный список .
7. Один Текстовый критерий (Выбрать Товары определенного вида)
Пусть имеется Исходная таблица с перечнем Товаров и Ценами (см. файл примера, лист Один критерий — Текст ).
Задача решается аналогично Задачам 1 и 3. Более подробное решение см. в статье Поиск ТЕКСТовых значений в MS EXCEL с выводом их в отдельный список. Часть1. Обычный поиск .
8. Два Текстовых критерия (Выбрать Товары определенного вида, поставленные в заданный месяц)
Пусть имеется Исходная таблица с перечнем Товаров и Ценами (см. файл примера, лист 2 критерия — текст (И) ).
Для отбора строк используется формула массива:
Выражение ($F$6=$A$11:$A$19)*($F$7=$B$11:$B$19) задает оба условия (Товар и Месяц).
Выражение СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК($A$11:$A$19))) формирует массив последовательных чисел , т.е. номера строк в таблице.
9. Два Текстовых критерия (Выбрать Товары определенных видов)
Пусть имеется Исходная таблица с перечнем Товаров и Ценами (см. файл примера, лист 2 критерия — текст (ИЛИ) ).
В отличие от Задачи 7 отберем строки с товарами 2-х видов ( Условие ИЛИ ).
Для отбора строк используется формула массива:
= ИНДЕКС(A$11:A$19; НАИБОЛЬШИЙ((($E$6=$A$11:$A$19)+($E$7=$A$11:$A$19))*(СТРОКА($A$11:$A$19)-СТРОКА($A$10)); СЧЁТЕСЛИ($A$11:$A$19;$E$6)+СЧЁТЕСЛИ($A$11:$A$19;$E$7)-ЧСТРОК($A$11:A11)+1))
Условие ($E$6=$A$11:$A$19)+($E$7=$A$11:$A$19) гарантирует, что будут отобраны товары только заданных видов из желтых ячеек (Товар2 и Товар3). Знак + (сложение) используется для задания Условие ИЛИ (должен быть выполнен хотя бы 1 критерий).
Вышеуказанное выражение вернет массив . Умножив его на выражение СТРОКА($A$11:$A$19)-СТРОКА($A$10) , т.е. на массив последовательных чисел , получим массив позиций (номеров строк таблицы), удовлетворяющих критериям. В нашем случае это будет массив .
С помощью функции НАИБОЛЬШИЙ() выведем 3 значения из позиции 5 (строка 15 листа), 6 (16) и 7 (17), т.е. значения Товар2, Товар2 и Товар3. Для этого используем выражение СЧЁТЕСЛИ($A$11:$A$19;$E$6)+СЧЁТЕСЛИ($A$11:$A$19;$E$7)-ЧСТРОК($A$11:A11)+1 , которое последовательно (начиная со строки 11) будет возвращать числа 3; 2; 1; 0; -1; -2; . Формула НАИБОЛЬШИЙ(. ;3) вернет число 5, НАИБОЛЬШИЙ(. ;2) вернет число 6, НАИБОЛЬШИЙ(. ;1) вернет число 7, а НАИБОЛЬШИЙ(. ;0) и далее вернет ошибку, которую мы скроем условным форматированием .
И наконец, с помощью функции ИНДЕКС() последовательно выведем наши значения из соответствующих позиций: = ИНДЕКС(A$11:A$19;5) вернет Товар2, = ИНДЕКС(A$11:A$19;6) вернет Товар2, = ИНДЕКС(A$11:A$19;7) вернет Товар3.
10. Отбор значений с учетом повторов
В разделе Отбор на основании повторяемости собраны статьи о запросах с группировкой данных. Из повторяющихся данных сначала отбираются уникальные значения, а соответствующие им значения в других столбцах — группируются (складываются, усредняются и пр.).
Наиболее популярные статьи из этого раздела:
В качестве примера приведем решения следующей задачи: Выбрать Товары, цена которых лежит в определенном диапазоне и повторяется заданное количество раз или более.
В качестве исходной возьмем таблицу партий товаров.
Предположим, что нас интересует сколько и каких партий товаров поставлялось по цене от 1000р. до 2000р. (критерий 1). Причем, партий с одинаковой ценой должно быть минимум 3 (критерий 2).
Решением является формула массива:
Эта формула возвращает номера строк, которые удовлетворяют обоим критериям.
Формула =СУММПРОИЗВ(($C$14:$C$27>=$B$7)*($C$14:$C$27 =$B$10)) подсчитывает количество строк, которые удовлетворяют критериям.
В файле примера на листе «10.Критерий — колич-во повторов» настроено Условное форматирование , которое позволяет визуально определить строки удовлетворяющие критериям, а также скрыть ячейки, в которых формула массива возвращает ошибку #ЧИСЛО!
11. Используем значение критерия (Любой) или (Все)
В фильтре Сводных таблиц MS EXCEL используется значение (Все), чтобы вывести все значения столбца. Другими словами, в выпадающем списке значений критерия содержится особое значение, которое отменяет сам критерий (см. статью Отчеты в MS EXCEL , Отчет №3).
В файле примера на листе «11. Критерий Любой или (Все)» реализован данный вариант критерия.
Формула в этом случае должна содержать функцию ЕСЛИ() . Если выбрано значение (Все), то используется формула для вывода значений без учета данного критерия. Если выбрано любое другое значение, то критерий работает обычным образом.
Остальная часть формулы аналогична рассмотренным выше.
12. Актуальная цена
Пусть для товара ежедневно заполняется таблица цен (цена может меняться, но не каждый день). Нужно найти актуальнуй цену, т.е. цену на последнюю дату. Если товар всего один, то можно отсортировать по дате и в последней строке будет нужная актуальная цена. Если товаров много, то нужно сначала выбрать Автофильтром нужный товар, затем опять отсортировать по цене.
Чтобы иметь перечень товаров с актуальными ценами придется использовать формулы:
2) определяем последнюю (максимальную) дату для каждого товара с помощью формулы массива =МАКС((Таблица1[товар]=E8)*Таблица1[дата])
3) наконец, выводим актуальную цену =СУММЕСЛИМН(Таблица1[цена];Таблица1[товар];E8;Таблица1[дата];F8)
Для товара не должно быть повторов дат, иначе цены будут суммироваться (если повторяется последняя дата).