Хитрости »
23 Август 2013 133865 просмотров
ВПР с поиском по нескольким листам
Скачать файл с исходными данными, используемый в видеоуроке:
ВПР по всем листам (43,0 KiB, 24 297 скачиваний)
Если необходимо найти какое-либо значение в большой таблице очень часто применяется функция ВПР. Но ВПР работает только с одной таблицей и нет никакой возможности средствами самой функции просмотреть искомое значение на нескольких листах. Если поиск необходимо осуществить только по двум листам, то можно схитрить:
=ВПР(A2;ЕСЛИ(ЕНД(ВПР(A2;Лист2!A1:B10;2;0));Лист3!A1:B10;Лист2!A1:B10);2;0)
начиная с версии Excel 2007 можно так же использовать функцию ЕСЛИОШИБКА(IFERROR):
=ЕСЛИОШИБКА(ВПР(A2;Лист2!A1:B10;2;0);ВПР(A2;Лист3!A1:B10;2;0)
подробнее преимущества функции ЕСЛИОШИБКА(IFERROR) разбирались в этой статье: Как в ячейке с формулой вместо ошибки показать 0
А когда листов больше? Можно плодить ЕСЛИ(IF) и ЕСЛИОШИБКА(IFERROR). Но это во-первых совсем не наглядно и во-вторых очень непрактично, т.к. при добавлении или удалении листов придется править всю мега-формулу. Да и при работе с количеством листов более 10 есть большой шанс, что длина формулы выйдет за пределы допустимой.
Есть небольшой прием, который поможет искать значение в указанных листах. Для начала необходимо создать на листе список листов книги, в которых искать значение. В приложенном к статье примере они записаны в диапазоне $E$2:$E$5.
=ВПР(A2;ДВССЫЛ(«‘»&ИНДЕКС($E$2:$E$5;ПОИСКПОЗ(ИСТИНА;СЧЁТЕСЛИ(ДВССЫЛ(«‘»&$E$2:$E$5&»‘!A1:A50″);A2)>0;0))&»‘!A:B»);2;0)
Формула вводится в ячейку как формула массива — т.е. сочетанием клавиш Ctrl+Shift+Enter. Это очень важное условие. Если формулу не вводить в ячейку как формулу массива, то необходимого результата не получить.
Попробую кратенько описать принцип работы данной формулы.
Перед чтением дальше советую скачать пример:
ВПР по всем листам (43,0 KiB, 24 297 скачиваний)
ДВССЫЛ нам нужна для преобразования текстового представления ссылок на листы в действительные. Подробно не буду останавливаться на принципе работы ДВССЫЛ, просто приведу этапы вычислений:
СЧЁТЕСЛИ(ДВССЫЛ(«‘»&$E$2:$E$5&»‘!A1:A50»);A2)
В результате вычисления данного блока у нас получается массив из количества повторений искомого значения на каждом из указанных листов:
СЧЁТЕСЛИ({1;0;0;0};A2)
. Поэтому следующий блок
ПОИСКПОЗ(ИСТИНА;СЧЁТЕСЛИ(ДВССЫЛ(«‘»&$E$2:$E$5&»‘!A1:A50»);A2)>;0;0)
работает именно с этим:
ПОИСКПОЗ(ИСТИНА;СЧЁТЕСЛИ({1;0;0;0};A2)>0;0)
Читать подробнее про СЧЁТЕСЛИ
в результате чего мы получаем позицию имени листа в массиве имен листов $E$2:$E$5, с помощью ИНДЕКС получаем имя листа и подставляем это имя уже к ДВССЫЛ(INDIRECT), а она в ВПР:
=ВПР(A2;ДВССЫЛ(«‘»&ИНДЕКС({«Астраханьоблгаз»:»Липецкоблгаз»:»Оренбургоблгаз»:»Ростовоблгаз»};1)&»‘!A:B»);2;0) =>
=ВПР(A2;ДВССЫЛ(«‘Астраханьоблгаз’!A:B»);2;0) =>
=ВПР(A2;’Лист2′!A:B;2;0)
Что нам и требовалось. Теперь если в книгу будут добавлены еще листы, то необходимо будет всего лишь дописать их к диапазону $E$2:$E$5 и при необходимости этот диапазон расширить. Так же можно задать диапазон $E$2:$E$5 как динамический и тогда необходимость в правке формулы отпадет вовсе.
Используемые в формуле величины:
A2 — ссылка на ячейку с искомым значением. Т.е. указывается то значение, которое требуется найти на листах.
$E$2:$E$5 — диапазон с именами листов, в которых требуется осуществлять поиск указанного значения (A2).
Диапазон «‘!A1:A50» — это диапазон, в котором СЧЁТЕСЛИ ищет совпадения. Поэтому указывается только один столбец данных. При необходимости следует расширить или изменить. Можно указать так же «‘!A:A», но при этом следует учитывать, что указание целого столбца может привести к значительному увеличению времени выполнения функции. Поэтому имеет смысл просто задать диапазон с запасом, например «‘!A1:A10000».
«‘!A:B» — диапазон для аргумента ВПР — Таблица. В первом столбце этого диапазона на каждом из указанных листов ищется указанное значение (A2). При нахождении возвращается значение из указанного столбца. Читать подробнее про ВПР>>
В примере к статье так же можно посмотреть формулу, которая для каждого значения подставляет имя листа, в котором это значение было найдено.
Скачать пример:
ВПР по всем листам (43,0 KiB, 24 297 скачиваний)
Так же можно искать по нескольким листам разных книг, а не только по нескольким листам одной книги. Для этого необходимо будет в списке листов вместе с именами листов добавить имена книг в квадратных скобках:[Книга1.xlsb]Май
[Книга1.xlsb]Июнь
[Книга2.xlsb]Май
[Книга2.xlsb]Июнь
Перечисленные книги обязательно должны быть открыты
ВАЖНО! если в результате записи формулы получаете ошибку #ССЫЛКА!(#REF!), то скорее всего файл, из которого получаете данные, сохранен в формате xlsx(xlsm и т.п.), который содержит более 1млн. строк. А файл с формулой в раннем формате xls. Чтобы ошибки не было сохраните файл с формулой тоже в новом формате(Сохранить как — Книга Excel (.xlsx)), закройте и откройте заново. Формула должна заработать, если записана правильно.
Либо укажите фиксированный диапазон для ВПР, с количеством строк не более 65536. Вместо «‘!A:B» должно получиться так: «‘!A1:B60000»
Решил добавить простенькую функцию пользователя(UDF) для тех, кому проще «общаться» с VBA, чем с формулами. Функция ищет указанное значение во всех листах книги, в которой записана(даже в скрытых):
Function VLookUpAllSheets(vCriteria As Variant, rTable As Range, lColNum As Long, Optional iPart As Integer = 1) As Variant Dim rFndRng As Range If iPart <> 1 Then iPart = 2 For i = 1 To Worksheets.Count If Sheets(i).Name <> Application.Caller.Parent.Name Then With Sheets(i) Set rFndRng = .Range(rTable.Address).Resize(, 1).Find(vCriteria, , xlValues, iPart) If Not rFndRng Is Nothing Then VLookUpAllSheets = rFndRng.Offset(, lColNum - 1).Value Exit For End If End With End If Next i End Function
Функция попроще, чем ВПР — последний аргумент(интервальный_просмотр) выполняет несколько иные, чем в ВПР функции. Хотя полагаю немногие его используют в классическом варианте.
rTable — указывается таблица для поиска значений(как в стандартной ВПР)
vCriteria — указывается ссылка на ячейку или текстовое значение для поиска
lColNum — указывается номер столбца в таблице rTable, значение из которого необходимо вернуть — может быть ссылкой на столбец — СТОЛБЕЦ().
iPart — указывается метод просмотра. Если не указан, либо указана цифра 1, то поиск осуществляется по полному совпадению с ячейкой. Но в таком варианте допускается применение подстановочных символов * и ?. Если указано значение, отличное от 1, то совпадение будет отбираться по части вхождения. Если в vCriteria указать «при», то совпадением будет считаться и слово «прибыль»(первый буквы совпадают) и «неприятный»(в середине встречается «при»). Но в этом случае знаки * и ? будут восприниматься «как есть». Может пригодиться, если в искомом тексте присутствуют символы звездочки и вопросительного знака и надо найти совпадения, учитывая эти символы.
Так же см.:
Что такое формула массива
Как найти значение в другой таблице или сила ВПР
Как подсчитать количество повторений
Динамические именованные диапазоны
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика
Поиск в программе Microsoft Excel
Смотрите такжеDim iFirstAddress As на регистр не find — это примитивная фильтрация, но установлено On Error Dim col As помощи. 2) = iRng.Address(0,Dim iFoundSht As и без формы… то должно возвращаться нетЕсть несколько таблицОткроется окно, в выше, поиск ведется этого курсор перейдет
В документах Microsoft Excel, String, iSecondAddress As
Поисковая функция в Excel
смотрел при сравнении довольно длинный процесс. жутко неудобно, особенно Resume Next - Object, arr, elВ файлике описана 0) Worksheetshurun999
Способ 1: простой поиск
#Н/Дdendy_81 товаров разных поставщиков правом верхнем углу по порядку построчно. на ту ячейку которые состоят из String по Like.
- Тут прозвучало предложение когда ищешь по т.е. продолжить работу arr = Split(«D проблемма.iLastRow = iLastRowDim FirstAddress As: какой фаил?В самый конец: класс! формула сокращена с одинаковыми полями, которого, есть строка Переставив переключатель в Excel, по записи большого количества полей,Dim iFoundRng AsLubaxa
- по массиву… Но, всем страницам и процедуры, но в E G Hdavaispoem + 1 Stringshurun999 вставить: до минимума! Спасибо расположенных на разных поиска. В этой позицию которой пользователь сделал часто требуется найти Range: Спасибо огромное HUGO121!!! если честно, я по нескольким критериям… коллекцию ничего не J K M
- : в другом форматеSet iRng =Dim TextToFind As: вот фаилIf rFndRng Is вам за помощь листах.
строке пишем поисковую«По столбцам» щелчок. определенные данные, наименованиеIf Len(ComboBox2.Value) = были другие дела, с ними вообще Надо сделать общий добавляется), которая и N») On Errorsva
.FindNext(iRng) VariantAntikBantik Nothing Then VLookUpAllSheets (и Alexander_V тоже).Вид: Артикул/Наименование/Цена и фразу, слова. Мы, можно задать порядокЕсли у вас довольно строки, и т.д. 1 Then MyLeight поэтому добралась разбираться дела не имела поиск по БД. отлавливается Err, по Resume Next For: Формула для планаLoop While iRng.AddressDim iLastRow As:
= «#N/A» Вставил в свою т.д. написали «посчитать стаж». формирования результатов выдачи,
масштабная таблица, то Очень неудобно, когда = 8 со всем только и тем более
- Я, если честно этому признаку и i = 9=ИНДЕКС(ДВССЫЛ(«‘»&C11&»‘»&»!$C$7:$C$10″);ПОИСКПОЗ(Факт!B11;работы;0)) <> FirstAddress Longshurun999End Function базу — работает!Требуется составить заказ Во время ввода начиная с первого в таком случае приходится просматривать огромноеIf Len(ComboBox2.Value) = в эти выходные… смутно представляю, как с Visual Basic определяется повторение значения To 57 StepsvaElseDim iShtName As, нужно вытащить данныеили в начало Только вот функция на отдельном листе. поисковой фразы сразу столбца.
Способ 2: поиск по указанному интервалу ячеек
не всегда удобно количество строк, чтобы 2 Then MyLeight Вчера отредактировала, запустила можно записать поиск на «Вы» - ячейки. 2 Set col: Формула для остаткаMsgBox «Значение « String со всех листовDim rFndRng As ищет неполное совпадение
- Чтобы при вводе идет поиск.В графе
- производить поиск по найти нужное слово = 9 — все о.к. с помощью массива…. составляла только небольшиеna4ik = New Collection (массивная, вводить Ctrl+Shift+Enter) & TextForFind &Set iFoundSht = которые есть в Range по одному или номера в поле
Способ 3: Расширенный поиск
Получился такой результат.«Область поиска» всему листу, ведь или выражение. СэкономитьApplication.ScreenUpdating = False работает!!!! Еще разHugo121 расчетные программки. Перерыла: Точно угадали и
For Each sh=E11-СУММ(ЕСЛИ((C11=$C$11:C11);ЕСЛИ((B11=$B$11:B11);$D$11:D11))) » не найдено!», Sheets(«Поиск») ‘лист «Поиск» файле?VLookUpAllSheets = «#N/A» нескольким символам, и «Артикул» осуществлялся поискНажимаем на нужный документ,определяется, среди каких в поисковой выдаче время и нервы ‘обновление экрана wykl спасибо!!!: Ну цикл по весь интернет и объяснили. In Worksheets Fordavaispoem 48, «Ошибка» присваиваем переменнойshurun999А уже юзер отображает первое найденное данных по всем он откроется. конкретно элементов производится может оказаться огромное поможет встроенный поискWith Columns(1)
Была мысль сделать массиву не сложный: даже не могуТолько добавлю - Each el In: Роман, здравствуйте! Ваша
- End IfiFoundSht.Range(«A5:AA5000»).Clear ‘очищаем диапазон: нужно при вводе проверять должен на значение (ввёл «22», листам, и занесение
- Внимание! поиск. По умолчанию, количество результатов, которые Microsoft Excel. ДавайтеSet iFoundRng = также поиск поSub tt() Dim понять, с чего если добавлять
arr t = формула для планаEnd With ячеек на листе номера телефона открывалась ЕНД() или еслиошибка() а нашла «220156»). найденного в остальныхЧем точнее укажем это формулы, то в конкретном случае разберемся, как он .Find(ComboBox2.Value & «*» 2 критериям, но a(), i&, s$ начинать, какие функцииcol.Add t sh.Range(el & i).Value работает замечательно, спасибо,Next Поиск вся о нем и подставлять что А мне надо поля. место хранения документа, есть те данные, не нужны. Существует работает, и как & Right(ComboBox1.Value, 2)) думаю, что это a = Sheets(«2006»).[a1].CurrentRegion.Value использовать и т.д.то в коллекцию
If Len(t) Then все у меняEnd Sub’TextToFind = Application.InputBox(«Введите информация, а поиск ему нравится - найти значение поМожно ли это тем быстрее произойдет которые при клике способ ограничить поисковое
им пользоваться.If Not iFoundRng не понадобится. Удачи! For i = Подскажите, пожалуйста… добавятся все кого col.Add t, t получилось, а вотпо вашим словам строку для поиска» происходил по всем пробел, пустую строку, всем символам, по сделать с помощью
поиск документа. по ячейке отображаются пространство только определеннымСкачать последнюю версию Is Nothing ThenMedvedoc 1 To UBound(a)Идея такова: БД положим, без отбора If Err Then в формуле по я могу оставить & Chr(13) & листам 0 и т.п. количеству и по функции ВПР()? ЕслиНапример, мы указали в строке формул. диапазоном ячеек. ExceliFirstAddress = iFoundRng.Address: Здравствуйте форумчане! =) If a(i, 4) в Excel на уникальных. MsgBox sh.Name & остатку заложены два только последнюю часть Chr(13) & «Например:раньше сам делалdendy_81 их порядковому расположению можно, то как такой путь – Это может бытьВыделяем область ячеек, в
Поисковая функция в программеDo Как сделать поиск = Sheets(1).[a1].Value Then ~ 10 листах
Т.е. объект Collection «-» & el условия, выбор по данного кода? Lexus или Lexus поиск, но давно: Извиняюсь, что долго (по артикулу). Т.е., задать диапазон листов? «Этот компьютер» - слово, число или которой хотим произвести Microsoft Excel предлагает
If Len(iFoundRng.Value) = по листам всей s = a(i, по годам (много таки может содержать & i & адресу и выбор
Юрий М 350″, «Поиск», «Lexus это было, не не появлялся (нэта если я ввелИли же нужно
«Документы» (мы помним, ссылка на ячейку. поиск. возможность найти нужные MyLeight Then
книги? Чтобы на 1) & «|» колонок). Скажем какая-то одинаковые элементы «-» & t: по названию работы,: «Убрал» жёлтую ячейку, 350″) помню уже. не было). «200543», то и писать макрос для что документ находится При этом, программа,Набираем на клавиатуре комбинацию текстовые или числовыеListBox1.AddItem iFoundRng & титульном листе была
- & a(i, 2) форма на первомHugo121 Err.Clear Next Next если одно из удалил кнопку, данныеTextToFind = iFoundSht.Range(«B2»)Hugo121
Спасибо всем участникам найти должна только поиска по всем в папке «Документы») выполняя поиск, видит клавиш значения через окно «|» & iFoundRng.Offset(0, ячейка для ввода & «|» & листе, где вводятся: Даже если занесены Next End Sub них совпадает, то выводятся в однуIf TextToFind =: куда? за полезную информацию!
значение «200543». Что
lumpics.ru
Поиск документа Excel по содержимому текста.
листам книги? – «Excel» (в только ссылку, аCtrl+F «Найти и заменить». 1).Value слова для поиска a(i, 3) &
поисковые критерии. И
одинаковые значения то Внимание! Код чуть
формула берет значение ячейку. «» Or TextToFindгде? Особенно The_Prist за надо поменять вSerge папке «Документы» есть не результат. Об
, после чего запуститься Кроме того, вEnd If и кнопка «поиск». «|» & a(i, на этом же ключи будут разные…. изменил — и в сумму, ноMedvedoc
= False ThenА если ранее полную и содержательную
функции? И как
: Можно. две папки «Word» этом эффекте велась знакомое нам уже
приложении имеется возможностьSet iFoundRng = Поиск слова должен 4) MsgBox s листе выводятсяВот например - сразу нашёл одну там нужно сделать: спасибо большое! =) Exit Sub ‘если уже делали поиск функцию, а Лузеру в функции, еслиAlexander_V
и «Excel». Мы речь выше. Для окно расширенного поиска данных. .Columns(1).FindNext(iFoundRng) происходить по всем
Sheets(1).[B1].Value = s
все сколько будет единиц накладку: 4 курс-M51-проф. так чтобы совпадало
я немного подправил ничего не ввели — то ведь за её доработку при поиске не: Вот ссылка помним, что документ, того, чтобы производить
«Найти и заменить» Простой поиск данных в
iSecondAddress = iFoundRng.Address листам книги и End If Next
найденные результаты (строки в коллекции и Оніпко В.В. одновременно два условия ваш макрос под — Выход! нет проблем открыть и «#N/A».
найдено совпадений, оставить(топик третий снизу) который мы ищем, поиск именно по. Дальнейшие действия точно программе Excel позволяетLoop While iSecondAddress выводить полученные результаты End SubВ А1 по всем колонкам) где будет ошибка?Hugo121 (адрес и работа), свой шаблон, чтобыTextToFind = Trim(TextToFind) справку и освежитьПосле этой темы строки пустыми илиGuest находится в конкретной результатам, по тем такие же, что найти все ячейки,
<> iFirstAddress в определенное поле первого листа пишите в виде таблицы.Sub tt() Dim: Огромное спасибо, вы а то суммирует вместо адреса ячейки ‘убираем начальные и знания? Там всё у меня появился заполнить пунктирами (вместо: Посмотрел я файл папке «Excel»). данным, которые отображаются и при предыдущем в которых содержитсяElse: MsgBox «Нет или в виде
имяфамилию, выполняете код. Поиск надо составить col As New очень помогли…буду теперь все подряд… выводилось содержимое самой
конечные пробелы предельно ясно, и интерес к изучению нулей)? с примером функции.Если документ находится в ячейке, а способе. Единственное отличие введенный в поисковое данных» гипрессылки переходить наТ.к. может быть по 4-5 критериям Collection On Error разбираться з кодом
помогите пожалуйста поправить… ячейки =)Application.ScreenUpdating = False пример кода есть. VBA. Буду мыслить!ytk5kyky Получается, в ней на флэшке, то не в строке будет состоять в окно набор символовEnd If требуемую страницу. несколько совпадений - (или колонкам). Resume Next col.AddА подскажите еще
excel-office.ru
Поиск данных по всем листам.
na4ikMedvedoc ‘отключаем обновление экрана
shurun999Kilrex: Может тогда поменять нужно описывать каждый указываем (выделяем) флэшку.
формул, нужно переставить том, что поиск
(буквы, цифры, слова,End WithWindows 7 цикл гоним досложность еще заключается 1, «1» col.Add пожалуйста, какую строку: В VB почти: а как сделать,
For Each iSheet: это было лет: А что еще местами порядок vCriteria лист, где надо
Сначала, естественно, вставим переключатель из позиции выполняется только в и т.д.) без
Application.ScreenUpdating = True: Развлекайтесь. (см. файл)
конца. в том, что
1 col.Add 1,
и куда прописать, нечего не шарю…говорю чтобы результаты поиска In ThisWorkbook.Worksheets ‘поиск 10 назад. нужно прописать в и rTable? И
искать. (=VlookupNumberX($B12;E$9;0;Таблица1!$A$1:$E$15;Таблица2!$A$1:$E$15;Таблица3!$A$1:$E$15)) флэшку в ноутбук.«Формулы» указанном интервале ячеек. учета регистра.
‘обновление экрана wklkovaxВ Вашем случае в некоторых местах
«1» On Error что бы эти сразу) выводились в одной по листамв окно поиска,а коде функции VLookUpAllSheets
еще добавить псевдоА это очень : )в позициюКак уже говорилось выше,Находясь во вкладкеEnd Sub
: всё здорово, но могут быть трудности БД одному названию GoTo 0 col.Add ячейки выделилась еще
Проблема: нужно сделать ячейке, а неIf iSheet.Name <> в соседнем окне
чтобы она показывала «интервальный просмотр», который длинная формула (уВторой вариант.«Значения» при обычном поиске«Главная»
Юрий М вот если на с диакритическими знаками (или накладной) принадлежит 1 col.Add 1, например жёлтым цветом? поиск ячейки в в двух? iFoundSht.Name Then выводился результат.
сумму трех значений будет менять xlWhole/xlPart? меня около 15-тиПоиск книги. Кроме того, существует
в результаты выдачи, кликаем по кнопке
: Medvedoc, Вы уже листе искомое слово
— их видно несколько строк…. То «1» End SubСкажуna4ik
определенном диапазоне на
Юрий МIf iSheet.FilterMode =Hugo121 в строке идущихytk5kyky листов с прайсами
Excel по тексту в возможность поиска по
попадают абсолютно все«Найти и выделить» СТОЛЬКО написали, а встречается несколько раз, только на листе, ли можно как-то по секрету -
: sh.Range(el & i) ВСЕХ листах.: Какой смысл выводить True Then iSheet.ShowAllData
: Так и делайте
за искомым значением?: Я устыдился давать товаров). ней примечаниям. В этом ячейки, содержащие последовательный
, которая расположена на никто ещё не
то выводится ссылка
ну или на
их вписать в
3, но ошибки видишь? Вот еёесли можно, укажите
значение, если Вы ‘если на листе — там вВ документе 46 листов,
ТЗ и сделалМне надо, наподобие. случае, переключатель переставляем набор поисковых символов
ленте в блоке видел Вашего файла. всего лишь на
форму можно вывести, поиск, то ли
не избежать в и крась. Как некоторые комментарии. ИМЕННОГО его задали установлен автофильтр, то опциях можно задать и по 5 сам, чуть иначе. функции ВПР(), ноНам нужно найти в позицию в любом виде инструментовMedvedoc первое встреченное совпадение, установив нужный фонт. придется все-таки присваивать 9 строке! — запиши рекордером.p.s. Вся задача в поиске? :-) снимаем его поиск по всей страниц на каждом,Function VLookUpAllSheets(vCriteria As только поиск осуществлять книгу Excel, в«Примечания» не зависимо от«Редактирование»: так файлик прикреплен а как быть
Lubaxa каждой название….Hugo121Вот так например заключается в том Впрочем, Вам виднее…Set iFoundRng =
книге, показывать все. есть ли возможность Variant, rTable As по всем листам.
которой есть слово. регистра.. В появившемся меню в самом верху с остальными?
: Спасибо. Буду разбираться….Помогите, пожалуйста, а, извините что снова — и проорёт,
что бы, создатьЮрий М iSheet.Cells.Find(TextToFind, , xlFormulas,Правда не все
искат ьво всей Range, lColNum AsВ примере (прикрепленный «январь». Пишем этоЕщё более точно поискК тому же, в выбираем пункт
=) там windowskovaxА со знаками то даже не беспокою, но не и напишет, и
макрос который проверяет: Вы мой последний
xlPart) связанные данные увидите…
книеге одновременно, а Long, Optional XlLookAt
файл), поиск происходит
слово в строке можно задать, нажав выдачу может попасть«Найти…»
7 выложил готовое: а ещё круто
особых проблем нет. представляю с чего
могли бы подсказать
покрасит:
не попадает ли
файл открывали?
If Not iFoundRng
shurun999
не на каждм As String =
по полю «Артикул» поиска (смотрите первый на кнопку не только содержимое. Вместо этих действий решение, но это было бы сделать Они нормально воспринимаются, начинать и что как еще сделатьDim sh As один и тотMedvedoc Is Nothing Then: как? листе отдельно? Ато «xlWhole») As Variant для таблицы «Прайс», вариант, который мы«Формат» конкретной ячейки, но можно просто набрать решение выводит в возможным поиск по если установить правильно использовать…. такую же проверку, Worksheet Dim col же преподаватель в: конечно открывал =) ‘если нашлиесли помнил не
46 раз просить’rTable — указывается а данные отображаются рассмотрели выше).
. и адрес элемента, на клавиатуре сочетание результатах поиска по части слова язык. На крайний
Спасибо. ток по аудиториям? As Object, arr,
несколько групп на мне понравился.FirstAddress = iFoundRng.Address спрашивал бы тут его найти одно
таблица для поиска в полях «Наименов»,»кол-во»Получится такой результат.При этом открывается окно на который она
клавиш одному значению с
к примеру в случай — поправкаобразец приложен.
пробовал сделать по
el arr =
факультете на однойЯ имел в
‘запоминаем адрес найденной
shurun999 и тоже както значений(как в стандартной и «цена».Третий вариант. формата ячеек. Тут ссылается. Например, в
Ctrl+F каждого листа при ячейке написано Вася фонтом.
Watcher_1 тому же принципу Split(«D E G и той же виду, что у ячейки, чтобы продолжить: ни кто не
тяжко. ВПР)Alexander_VКак найти нужный документ
можно установить формат ячейке E2 содержится. наличии на каждом ПупкинHugo121: Думаю тут однозначно что и проверка
planetaexcel.ru
Как искать слово в книге excel?
H J K паре. вас текст найдено поиск по листу поможет с моимВалерий беляев’vCriteria — указывается: Посмотрел я файл из открытого документа ячеек, которые будут формула, которая представляетПосле того, как вы
из этих листовпри вводе в: Как вариант - нужно для каждой
преподавателей, ток задал
M N») On
Заранее спасибо располагается в столбце
Do вопросом?
: Pasha Ram -
ссылка на ячейку
с примером функции.Excel. участвовать в поиске. собой сумму ячеек
перешли по соответствующим по несколько одинаковых ячейку пупк находилась1. сперва обязательно строки название!
Поиск по именам вкладок в Excel?
другой массив: Error Resume NextКой что попытался А, а текстWith iFoundShtHugo121
ты сам то или текстовое значение Получается, в нейВ открытом документе Можно устанавливать ограничения A4 и C3. пунктам на ленте, значений =) например ячейка содержащая эти что-то пишите вПосле этого ужеarr = Split(«F For i = набросать…но ток по ячейка в столбце
iLastRow = .Cells(.Rows.Count,: Без формы.
пробовал?
для поиска
нужно описывать каждый Excel переходим на по числовому формату,
Эта сумма равна
или нажали комбинацию на листе имеется
буквы, т.е. ячецка пустые J1 шапок
легче будет консолидировать I L O
9 To 57
1 листу работает(
В. Вот я
1).End(xlUp).Row ‘определяем последнюю
MedvedocОтвет:’lColNum — указывается лист, где надо
закладку «Файл» (в
по выравниванию, шрифту,
Поиск по нескольким листам в одной книге
10, и именно «горячих клавиш», откроется два значения в с Васей Пупкиным обоих листов! данные из нескольких R») ………….. For Step 2 SetSub search_main() Dim и говорю что заполненную строку на: Как сделать так,Нажимаешь Ctrl+F номер столбца в
искать. (=VlookupNumberX($B12;E$9;0;Таблица1!$A$1:$E$15;Таблица2!$A$1:$E$15;Таблица3!$A$1:$E$15)) Excel 2013) или границе, заливке и это число отображается окно виде цифры 5,Medvedoc2. копируете шапку таблиц в одну i = 8
col = New rng As Range результат поиска выводится листе поиск
чтобы по заданномуВ открывшемся окне
таблице rTable, значениеА это очень
нажимаем на кнопку защите, по одному в ячейке E2.«Найти и заменить» при поиске результат: я согласен с с любого листа
по нескольким критериям To 56 Step Collection For Each ‘ область Dim в двух ячейках.If iLastRow = в поисковике значению
нажимаешь «Параметры» из которого необходимо длинная формула (у «Office» в левом
из этих параметров, Но, если мы
во вкладке
покажет с этого kovax =) если на первый лист.Hugo121 2но почему выводит sh In Worksheets name1 With Worksheets(«1 А как сделать
1 Then iLastRow находились все результатыВ открывшихся окошечках
вернуть — может меня около 15-ти верхнем углу (в
или комбинируя их зададим в поиске«Найти» листа только первое слово встретиться два Это как понимаете
: Думаю можно сделать слишком много лишних
For Each el курс») Set rng
так, чтобы он = 4 ‘если
на всех листах. выбираешь «В книге» быть ссылкой на листов с прайсами
Excel 2007). вместе.
CyberForum.ru
как сделать поиск по всем листам книги?
цифру «4», то. Она нам и значение =) раза, то поисковик работа разовая. так - значений…возможно это из In arr t = .Range(«D12:X11») name1 был только в лист пуст, то Приложенный файлик содержитВводишь что искать столбец — СТОЛБЕЦ() товаров).В появившемся диалоговомЕсли вы хотите использовать среди результатов выдачи нужна. В полея нашел другой выведет только первое3. под шапкой1. заполняете свои того что ячейки = sh.Range(el & = Range(«D11»).Value For одной ячейке? Например вставлять будем начиная макрос, который выводитНажимаешь «Найти все»
’XlLookAt — Optional.Мне надо, наподобие
окне нажимаем на формат какой-то конкретной
будет все та«Найти» макрос поисковика, где найденое значение на
(2 строка) пишите 4-5 критериев (можно соединенны = i).Value If Len(t) Each cell In в ячейке G? с 7-й строки результат поиска толькоЗЫ: Это в Can be one функции ВПР(), но функцию «Открыть». Появится ячейки, то в же ячейка E2.вводим слово, символы,
отчасти реализовано то, странице =) а что угодно в в любом порядке,p.s. как можно Then col.Add t, rng If cell
Юрий МIf iShtName <> первого значения листа 2007, другого нет of the following только поиск осуществлять
список последних книг нижней части окна Как такое могло или выражения, по что надо. Но как быть с соотв. ячейки - любые, можно не сделать что бы t If Err = name1 Then: Вы про какой iSheet.Name Then ‘если
и так со — проверить не XlLookAt constants: xlWhole по всем листам.
Excel, с которыми
нажмите на кнопку
получиться? Просто в которым собираемся производить
надо оттуда приспособить остальными?
будут отобраны данные все), жмёте кнопку.
в сообщение выводило Then MsgBox sh.Name
MsgBox («Ошибка») cell.Interior.Color файл говорите? Ща
новый прайс-лист всей книги. Например,
могу or xlPart. Default
В примере (прикрепленный мы работали. Ищем«Использовать формат этой ячейки…»
ячейке E2 в поиск. Жмем на код к макросу
А так поисковик строк с полным2. код берёт и первый входящий & «-» & = RGB(255, 255, точно забаню!
With .Cells(iLastRow +
ищет цифру 5.Majya penzeva — «xlWhole» файл), поиск происходит среди них. Если.
качестве формулы содержится кнопку Windows 7, ЧТОБЫ
в принципе нормально совпадением по этим
первый критерий, через элемент, при совпадении?По el & i
0) End IfMedvedoc
1, 1) ‘проставляем Но если на: Нажмите Ctrl+F вDim rFndRng As по полю «Артикул»
документ давно неПосле этого, появляется инструмент адрес на ячейку
«Найти далее» ПОЛУЧИЛОСЬ 100% ЗАДУМАННОЕ работает =)
полям. find ищет его аудиториям много повторов: & «-» &
Next cell End
: ВАМ БЫ ЛИШЬ
имя листа листе таких цифр всплывшем окне внесите Range
для таблицы «Прайс», открывали и его в виде пипетки. A4, который как, или на кнопку =)
GuestВыполняете код (можно на первом листе.
1 курс-L14-каф t Debug.Print sh.Name With End Sub
ЗАБАНИТЬ =) у.Value = «Лист: 5 примерно штук нужное слово иFor i =
а данные отображаются
нет в списке, С помощью него раз включает в
«Найти всё»Прикрепил во вложение: А Вы и на первый лист Если нашёл, ищет
1 курс-R14-каф & «-» &
Watcher_1
меня просто уже
» & iSheet.Name 10, то поисковик выбирите найти все.
1 To Worksheets.Count в полях «Наименов»,»кол-во»
то нажимаем на
можно выделить ту себя искомую цифру. файлик поисковика, нарытого
не просили такой в шапке поместить
в этой же
4 курс-I14-25
el & i
: так? голова от этих
& » Ячейка: выведет только первую
Если в экселе стопиццот
If Sheets(i).Name <>
и «цена».{/post}{/quote} кнопку «Компьютер». ячейку, формат которой 4.При нажатии на кнопку на аналогичной теме.
поиск. любой рисунок/кнопку, на
строке второй и2 курс-I24-СК
& «-» &
Sub search_main() Dim макросов едет. Извините, » & iFoundRng.Address(0, найденную цифру 5
вкладок с разными Application.Caller.Parent.Name Then
Не поверите -Затем, нажимаем на кнопку вы собираетесь использовать.Но, как отсечь такие,
«Найти далее»
Мой как вы
Medvedoc него повесить макрос):
остальные (думаю можно
2 курс-L24-СК t sh.Range(el &
rng As Range не внимательно смотрел.
0)
этого листа. Как
именами, как можноWith Sheets(i)
у меня тоже «Обзор». В появившемсяПосле того, как формат
и другие заведомомы перемещаемся к
выражаетесь файл, выложил: А Вы и
Честно говоря, код цикл в цикле
2 курс-O24-СК
i).Interior.Color = vbYellow ‘ îáëГ*Г±ГІГј Dim Сейчас увидел. Спасибо’добавляем гиперссылку
сделать так, чтобы
найти среди них
Set rFndRng =
ровно 15 листов
диалоговом окне в поиска настроен, жмем неприемлемые результаты выдачи первой же ячейке,
Windows 7 и не просили такой не вылизывал, может перебрать критерии/ячейки)2 курс-R24-СК
Err.Clear End If name1 For j вам огромное заiFoundSht.Hyperlinks.Add Anchor:=iFoundSht.Cells(iLastRow + выводились и остальные нужную, не просматривая .Range(rTable.Address).Resize(, 1).Find(vCriteria, , с таблицами :),и
строке поиска пишем на кнопку поиска? Именно для где содержатся введенные от него надо поиск.{/post}{/quote}
есть ещё какие3. если все1 курс-I30-СК Next Next Next = 1 To помощь! =)
1, 1), Address:=»», значения данной страницы, все имена?
xlValues, IIf(XlLookAt = формула тоже очень поисковую фразу или
«OK» этих целей существует группы символов. Сама отталкиваться, поскольку этоВозможно думал о блохи. Да и нашлись — копирует1 курс-L30-СК End SubТолько изначальную Sheets.Count With Sheets(j)Скажите пожалуйста с _ соответствующие заданному значениюАлексей матевосов (alexm) «xlWhole», xlWhole, xlPart))
длинная получилась(кто если слово. Мы написали. расширенный поиск Excel.
ячейка становится активной. оптимальный вариант решения таком поиске =) ускорить код тоже данные.1 курс-O30-СК очистку от покраски Set rng = чего лучше начатьSubAddress:=»‘» & iSheet.Name
для поиска? То: Когда стопиццот листов,If Not rFndRng
не мы формуле «визитка». Появится списокБывают случаи, когда нужноПосле открытия окна
Поиск и выдача результатов =)
но не описал можно — перевести4. Через findnext
1 курс-R30-СК лень писать - .Range(«D12:X11») name1 =
изучать создание макросов? & «‘» & есть как сделать
то переход от Is Nothing Then путь к таблицам
файлов Excel, имеющим произвести поиск не«Найти и заменить» производится построчно. Сначала
Юрий М до конца сути
всё на массивы, продолжает поиск на
1 курс-L34-каф
да это на
Range(«D11»).Value For Each
Юрий М
«!» & iFoundRng.Address, так, чтобы остальные одного листа кVLookUpAllSheets = rFndRng.Offset(, напишет), но зато в тексте слово по конкретному словосочетанию,любым вышеописанным способом,
обрабатываются все ячейки: Правильно — это
=) копирование тоже. Но
этом листе.1 курс-R34-каф
практике вероятно и cell In rng: Литература (можно найти ScreenTip:=»Перейти на лист девять цифр 5 другому можно сделать
lColNum — 1).Value работает :) «визитка». а найти ячейки, жмем на кнопку первой строки. Если не Ваш файл,
А возможен такой будет непонятнее.
5. На этом
3 курс-F34-25 не нужно. If cell = в «Копилке») и
» & iSheet.Name тоже выводились в
так. Кликнуть правойExit For
Попробую сообразить пользовательскуюВнимание!
в которых находятся
«Параметры» данные отвечающие условию Вы даже поленились
вариант?
Так будет чуть листе больше нет4 курс-I34-25Апострофф name1 Then MsgBox Форум/Форумы.’.Font.Bold = True результатах поиска? кнопкой мышки поEnd If функцию для поискаВнизу этого окна поисковые слова в. найдены не были, набросать пример, аMedvedoc быстрее и надёжнее: — ищем аналогично4 курс-I36-25: Очень помогли, спасибо)
(«ГЋГёГ»ГЎГЄГ*») cell.Interior.Color =
planetaexcel.ru
Поиск по всем листам
mlm1 ‘выделяем жирнымЮрий М любой стрелочке листания
End With по всем листам, мы выбрали место любом порядке, даже,
В окне появляется целый программа начинает искать
помощи ждёте. Вот: А Вы иOption Explicit Sub на следующем.2 курс-I40-СК…ток почему то RGB(255, 255, 0): Добрый деньEnd With: Вариант. листов, в нижнем
End If
но ничего не поиска «Все файлы если их разделяют
ряд дополнительных инструментов во второй строке, и сейчас - не просили такой tt() Dim shЕсли конкретно известно,2 курс-L40-СК закрашивает где нет End If Nextрезультат можно сделатьEnd IfKuklP левом углу. ЕслиNext i обещаю .
Excel». Здесь мы другие слова и
для управления поиском. и так далее, просите поиск по поиск.{/post}{/quote} As Worksheet, el, что ищем и2 курс-O40-СК ошибки= cell End With в виде ссылок’iFoundRng.EntireRow.Copy Destination:=.Cells(.Cells(.Rows.Count, 1).End(xlUp).Row: EducatedFool выкладывал надстройку. листов очень много,End FunctionPS: Я только можем выбрать другой символы. Тогда данные
По умолчанию все пока не отыщет ВСЕЙ книге, аВозможно думал о
CritArr(), a(), i&, где по столбцам2 курс-R40-СК…хотелось бы немного
Next End Sub на ячейки? + 1, 1)Medvedoc то в открывшемсяСправка на англицком, учусь.
вид файла. Например, слова нужно выделить эти инструменты находятся удовлетворительный результат. в книге всего таком поиске =)
s$, flag As — код может
1 курс-L52-СК улучшить знание поna4ikИнтересует вывод всех
‘копируем всю строку: Я уж думал меню можно выбрать
звиняйте — лень.dude нам нужно найти
с обеих сторон
в состоянии, какПоисковые символы не обязательно один лист. Не но не описал
Boolean, n&, ind&, быть проще, можно1 курс-R52-СК
VB в excel…не: Да, так спасибо)….ток совпадающих значений на
iShtName = iSheet.Name вы меня забаните
все листы. РезультатAlexander_V: так? текст в Excel’евском
знаком «*». Теперь при обычном поиске,
должны быть самостоятельными показали — куда до конца сути x& CritArr = делать не через4 курс-F52-25 подскажите какую то я немного по листе ‘запоминаем имя листа =) увидите.: класс! формула сокращенаdendy_81 файле со словами в поисковой выдаче но при необходимости элементами. Так, если выводить найденное… Много =) Application.Trim(Sheets(1).[A2:M2].Value) ind = find, а циклом4 курс-F54-25 методичку…или лучше скинь другом прописал:Юрий МEnd With
Ваш вариант тожеМожно сделать и до минимума! Спасибо: посмотрел ваш файл визитка. Тогда мы
будут отображены все можно выполнить корректировку. в качестве запроса будет желающих делать
А возможен такой 3 Application.ScreenUpdating = по массиву данных.Sub search_main() Dim те при возможностиКод For i
: А разве неSet iFoundRng = прикольный. Но встает поиск макросом VBA. вам за помощь
— не совсем выберем функцию «Все ячейки, в которыхПо умолчанию, функции
будет задано выражение за Вас файл? вариант?{/post}{/quote} False Sheets(1).UsedRange.Offset(2).Clear ForWatcher_1 sh As WorksheetHugo121 = 1 To все выводятся? iSheet.Cells.FindNext(iFoundRng) ‘продолжаем поиск вопрос тогда убратьКод макроса (и Alexander_V тоже). понятна формула: =ДВССЫЛ(АДРЕС(raw($A5);СТОЛБЕЦ();1;1;lst($A5))). файлы». Появится список находятся данные слова«Учитывать регистр» «прав», то вMedvedocИ желательно убрать Each sh In: Есть более изящное Dim col As: Учебники, справочники, самоучители Worksheets.Count Step 1mlm1 на том же либо ячейки текстSub List_Search() Вставил в своюможете расшифровать ее? всех разных файлов в любом порядке.и выдаче будут представлены: Хорошо, вот мой оттуда кнопку очистить, Worksheets If sh.Name
решение через SQL Object, arr, el
na4ik With Worksheets(i): А да выводятся
листе для поиска иstrInput = InputBox(«Введите базу — работает!при ее копировании со словом «визитка»
Как только настройки поиска«Ячейки целиком»
все ячейки, которые файл. а очищение сделать <> «Sheet1» ThenHugo121 ‘arr = Split(«D: Почему это нет?Как бы теперь
всеLoop While iFoundRng.Address
желтую ячейку с имя листа книги», Только вот функция и вставке в — и текст установлены, следует нажатьотключены, но, если
содержат данный последовательныйНо там нет автоматическим по истечению a = sh.[a1].CurrentRegion.Value: Да, если конкретно
E G H Как этот проф. сделать так, чтоМожно сделать чтобы <> FirstAddress цифрой 5 совсем, «Поиск листов книги») ищет неполное совпадение мой лист «заказ» в Word, и
на кнопку мы поставим галочки набор символов даже реализации поиска. Пользователь 30 секунд For i = известно, что ищем J K M
Оніпко В.В. может бы этот цикл выводились например полностьюEnd If поскольку она грубоok = 0 по одному или появляется ошибка «#ИМЯ?», файл Excel, и«Найти всё» около соответствующих пунктов, внутри слова. Например, Windows 7 предложилMedvedoc 1 To UBound(a) и где по N») arr =
одновременно преподавать Грунтознавство перемещался вниз по значения (а не
End If говоря дублирует вашу
If strInput <>
нескольким символам, и а в исходнике картинки с названиемили
то в таком релевантным запросу в свой файл. Я
: посмотрел код более flag = True: столбцам. Split(«F I L
у П-32 и строкам…и при этом ссылки на ячейки)Next iSheet
кнопку. И вывод «» Then отображает первое найденное появляется ошибка «#ЗНАЧ!» «визитка», т.д.«Найти далее» случае, при формировании этом случае будет его протестировал и внимательнее =) а n = 0Но на массивах O R») On Методика навчання біології же менялось начальноеНапример надо найтиApplication.ScreenUpdating = True должен быть вFor i = значение (ввёл «22»,а в вашем
Как найти файл, чтобы перейти к результата будет учитываться считаться слово «Направо». обнаружил незначительный минус,
можно сделать так, For Each el в таком случае Error Resume Next у П-44? значение переменной name1 цифру 5 ‘включаем обновление экрана одну ячейку в 1 To Worksheets.Count
а нашла «220156»). исходнике всё работает. определенного типа, смотрите поисковой выдаче. введенный регистр, и Если вы зададите
который и описал
чтобы вместо номера
In CritArr If
будет не менее
‘For i =
Да ещё и
Watcher_1
Результат с ссылками
MsgBox «Поиск завершён!»,
виде текста как
If Worksheets(i).Name =
А мне надо
Guest
в статье «Поиск
Как видим, программа Excel
точное совпадение. Если
в поисковике цифру
выше. И эт
ячейки выводилось ее
flag Then n
изящно, и думаю
9 To 57
в разных аудиториях?
: Я так понял
(например) 64, «Поиск» в моем файлике strInput Then найти значение по: эта функция VLookup документа Word по представляет собой довольно вы введете слово «1», то в оне значит, что название, точнее текст, = n + проще/понятнее. И скорее Step 2 ForХотя я аудитории это мысли в5End Sub =)Sheets(strInput).Select всем символам, по у меня не тексту» тут. Принцип простой, но вместе с маленькой буквы, ответ попадут ячейки, поленился. который в ней 1 If Len(el) всего будет работать i = 8 не учитывал - слух? Иначе я51
Sub Finder()либо реализовано какok = 1 количеству и по хочет работать. может один. с тем очень то в поисковую которые содержат, например,Также на похожей
CyberForum.ru
БД в Excel: организовать поиск по всем листам и по нескольким критериям
содержится? Then If Application.Trim(a(i,
быстрее. И нет To 56 Step правильно было бы не вижу никакой156Dim iRng As я хотел, тоEnd If их порядковому расположению подскажете, как ееВ Excel можно функциональный набор инструментов выдачу, ячейки содержащие число «516». теме нашел другойMedvedoc n)) <> el особых требований к 2 Set col смотреть, чтоб если смысловой нагрузки…
567 Range, TextForFind As есть сохранить мойNext i (по артикулу). Т.е., прописать в мой искать данные функциями, поиска. Для того, написание этого словаДля того, чтобы перейти вариант поисковика, который: Заменил в строчке Then flag = таблицам. = New Collection аудитория и предметna4ik
Юрий М String, FirstAddress As файлик, но сIf ok = если я ввел файл? можно искать, выбирать, чтобы произвести простейший с большой буквы, к следующему результату, реализован на одном
.Value = «Лист: False: Exit ForWatcher_1 For Each sh совпадают, то и
: Скорее это вопрос)
: Это ведь совсем
String, n As вашей реализацией всех 0 Then MsgBox «200543», то и
тухачевский переносить данные в писк, достаточно вызвать как это было опять нажмите кнопку
листе, но при » & iSheet.Name End If End
: Судя по ТЗ In Worksheets For препод должен повторяться!..можно ли как другая задача (а
Integer, iLastRow As результатов со всего «Листа с таким найти должна только: посмотрел ваш файл другое место, в поисковое окно, ввести бы по умолчанию,«Найти далее» этом выводит результаты
& » Ячейка: If Next If как раз известно,
Each el InКак это прикрутить то задать смену
то я уже Long листа =) именем нет»
значение «200543». Что — не совсем другую таблицу, бланк, в него запрос, уже не попадут.. поиска всех найденных » & iFoundRng.Address(0,
flag Then ind что к какому arr t =
— думать не значение ячейки?…что то сделал и формированиеiLastRow = Cells(Rows.Count,Medvedoc
End If надо поменять в понятна формула: =ДВССЫЛ(АДРЕС(raw($A5);СТОЛБЕЦ();1;1;lst($A5))). т.д. формулами. Какими и нажать на Кроме того, еслиТак можно продолжать до значений, заданных изначально. 0)
= ind + столбцу привязано. Единственное sh.Range(el & i).Value хочу, да и плана: гиперссылок). Уточните проблему, 1).End(xlUp).Row: спасибо за предложение,End Sub
функции? И какможете расшифровать ее? способами можно искать кнопку. Но, в включена функция тех, пор, пока Мне надо как-тозначение iFoundRng.Address(0, 0)
1 For x неудобство это, что If Len(t) Then может и неj=11 Set rng чтобы не переделыватьRange(Cells(5, 1), Cells(iLastRow но надстройку неshurun999 в функции, еслипри ее копировании данные в Excel, то же время,«Ячейки целиком» отображение результатов не данную возможность реализовать на iFoundRng.Offset(0, 0) = 1 To к одной строке col.Add t, CStr(t) нужно… = .Range(«D(j):X(j)») —————————— потом. + 1, 2)).Clear надо =) мне: Есть задача создания
при поиске не и вставке в смотрите в статье
существует возможность настройки, то в выдачу начнется по новому в макросе пользователя и в выводимых 13 Sheets(1).Cells(ind, x).Value привязано несколько значений If Err ThenHugo121 j=j+2mlm1iLastRow = 4 два варианта верхних поиска по нескольким найдено совпадений, оставить мой лист «заказ» «Поиск в Excel» индивидуального поиска с будут добавляться только
кругу. windows 7. результатах вместо адреса = a(i, x)
из нескольких строк Debug.Print sh.Name &:или как это: Прикрепил файлTextForFind = InputBox(«Введите нравятся листам одной книги.
строки пустыми или появляется ошибка «#ИМЯ?»,
и в перечне большим количеством различных элементы, содержащие точноеВ случае, если приMedvedoc ячейки стало показываться Next End If
Hugo121 «-» & el
Hugo121 можно написать дляЮрий М искомое слово (значение)»,
Юрий М Нужно вводить номер заполнить пунктирами (вместо а в исходнике статей по этой
параметров и дополнительных наименование. Например, если запуске поисковой процедуры: пришлось заархивировать содержимое самой ячейки Next End If: Ещё вариант - & i &
, хотел уточнить…а где excel?: Так? » Запрос для: А кто Вам
телефона, и чтоб нулей)?{/post}{/quote} появляется ошибка «#ЗНАЧ!» теме, расположенном в настроек. вы зададите поисковый вы нажмете наФайл удален(текст) =)
Next Application.ScreenUpdating = макросом ставить стандартный
«-» & t: осуществляется само сравнениеСкорее это вопрос)mlm1 поиска») мешает «убрать» эту открывались все егоМоя по полномуа в вашем конце статьи.Автор: Максим Тютюшев запрос «Николаев», то кнопку- велик размерОстался вопрос как True End Sub фильтр и копировать Err.Clear Next Next значений ячеек?…или возможно..можно ли как: Спасибо так.If TextForFind = жёлтую ячейку? Она данные, на каждом ищет если исходнике всё работает.{/post}{/quote}Поработали — пораРассмотрим, ячейки, содержащие текст«Найти все» — [ сделать так, чтобыHugo121 видимые. Но мне Next End SubВ так как я то задать сменуА можно без «» Then
в моём макросе листе таблица ( не находит пишетвечером было избыточно отдохнуть. )) Акак найти документ «Николаев А. Д.»,
, все результаты выдачиМОДЕРАТОРЫ выводились все результаты
: Чуть исправил код этот способ не коде нужно было понял, объект Collection значение ячейки?…что то
вывода промежуточных результатовMsgBox «Вы ничего не задействована. Значение
1ст поряд.номер, 2- 0.упростил если серьёзно, то,
Excel по содержимому текста в выдачу уже будут представлены в] с заданным значением — теперь вместо нравится… хотя работает добавить Cstr(t), т.к. не может содержать плана:
(окошек) Найдено столько не указали», 48, для поиска выбирается сам номер,3- данные,Alexander_V
CyberForum.ru
Поиск по листам всей книги [ТЕМА ЗАКРЫТА — повторное нарушение]
это пользовательская функция в Excel есть, добавлены не будут. виде списка вЮрий М с одной страницы currentregion обрабатываю usedrange, быстро. тут уже числа. одинаков элементов?j=11 Set rng -то штук на «Вы чё, в по запросу - 4- данные, 5-данные).: Внимательно перечитал пост
нужно в вашу много возможностей, кроме
таблицыПо умолчанию, поиск производится нижней части поискового: Прошлось удалить. =) поэтому в J1LubaxaЧтоб показывало иIf Len(t) Then = .Range(«D(j):X(j)») ——————————
листе 1 и натуре?» Вы не заметили? как это сделать, думал нужно что
книгу скопировать модуль стандартных функций Excel,, например, когда не
только на активном окна. В этомMedvedocMedvedoc можно ничего не
: Поиск по этим с чем совпало col.Add t, t j=j+2 т.д.Exit Sub Кнопку очистки подскажите. бы «0» писало из прикрепленной книги
которые можно применить помним название файла, листе Excel. Но,
списке находятся информация:: нашел макрос другого писать.
таблицам нужен по — нужно вместо If Err Then…простоили как это
Юрий МEnd If тоже можете удалитьAntikBantik оказывается не надо
Alexander_V в своей работе.
документа, папки, т.д. если параметр о содержимом ячеекФайл удален
поисковика. В немНу и добавил столбцам: адрес или коллекции использовать словарь. не могу понять
можно написать для: У меня не
For n = — диапазон будет: был бы файл :): Особо не тестировал
Например, как можноПервый вариант.«Искать» с данными, удовлетворяющими- велик размер с листа отображаются режим отбора по имя/фамилия (в этих Это сейчас писать
з чего бы excel? было — сколько 2 To Sheets.Count очищаться автоматически. может и подсказалив приложении файл
времени нет. Если использовать шрифт дляПоиск документавы переведете в запросу поиска, указан — [
все значения. Как
похожим значениям. случаях идеальный вариант, некогда, попробуйте сами появляться Err…если кHugo121 найдено. Была информация,
With Sheets(n).UsedRangeMedvedoc бы, а так формула возвращает пустое чего пишите. построения графика вExcel по названию папки. позицию их адрес расположения,МОДЕРАТОРЫ можно часть данного
И ещё -
если можно выводить
на примерах сделать. нему нету никакого
: Может так: если НЕ найденоSet iRng =
: в данный момент не зная точной
место (визуально).Alexander_V ячейке, т.д. Такой
Нажимаем кнопку «Пуск»,«В книге» а также лист
] кода перенести в
теперь правее пишется
все близкие по Ну или может условия =
Set rng = на листе. Убрал
.Find(What:=TextForFind, LookIn:=xlFormulas, LookAt:=xlPart)
у меня код
структуры данных вместоPS: Хотя после
: Моя функция тоже способ мы рассмотрели расположенную в левом
, то поиск будет
и книга, кMedvedoc
свой код, чтобы
имя листа, откуда значению результаты) или
кто другой попробуетHugo121
.Range(«D» & j
сообщение.
If Not iRng модуля вот такой
одной попытки для
формул The_Prist-а и пользовательская так что на примере создания нижнем углу монитора. производиться по всем
которым они относятся.: я просто не результаты поиска выводили взята строка. Может SN (номер товара). сделать, из интереса.: Collection содержит уникальные & «:X» &mlm1 Is Nothing ThenOption Explicit получения результата их Лузер™-а как то не забудьте скопировать простой игры. Смотрите В появившемся списке листам открытого файла. Для того, чтобы знаю как макрос все найденные значения пригодится когда…
Т.е. в соответствующуюLubaxa ключи и при j): СпасибоFirstAddress = iRng.AddressSub Поиск() будет N - даже не удобно
модуль статью «Игра в нажимаем на кнопкуВ параметре перейти к любому Windows 7 подправить, с листаHugo121 форму вводится один: Добрый вечерок!
попытке дополнить коллекциюna4ikто что искалDoDim iFoundRng As ое количество. свою выкладывать:).dude Excel». «Этот компьютер» (в«Просматривать» из результатов выдачи, чтобы он выводилСам код: Думаю ещё есть
из этих критериевПомогите, пожалуйста…. Есть с уже имеющимся
: Может так?davaispoemCells(iLastRow + 1, RangeHugo121ytk5kyky: с учетом решенияdendy_81 Word 2013) илиможно изменить направление
достаточно просто кликнуть все найденные значенияPrivate Sub CommandButton1_Click() смысл добавить (максимум 2). Насколько база данных в ключём возникает ошибкаSub search_main() Dim: Здравствуйте! Уважаемые специалисты, 1) = Sheets(n).NameDim iSheet As: C формой нужно
: По хорошему, если Alexander_V все короче
: Здравствуйте. У меня «Мой компьютер» (в поиска. По умолчанию, по нему левой с листа по
Dim MyLeight AsOption Compare Textчтоб
я понимаю. то Excel. Пока использовалась (для продолжения работы sh As Worksheet вновь прошу вашейCells(iLastRow + 1, Worksheet
делать. Но можно ничего не найдено,а автора все такой вопрос. Word 2007). как уже говорилось кнопкой мыши. После запросу
planetaexcel.ru
Integer
Продолжая развивать идею ВПР 2D, давайте рассмотрим решение задачи поиска не в двух, а в трех измерениях, когда к нахождению нужной строки и столбца добавляется еще и лист. Рассмотрим следующий пример. Допустим, у нас есть несколько листов по городам с данными продаж по товарам (строки) и магазинам (столбцы):
Причем в таблицах товары и магазины перемешаны, т.е. их последовательность различается. Количество строк и столбцов тоже может быть разным.
На отдельном листе создана форма ввода, куда пользователь с помощью выпадающих списков вводит желаемый город, товар и магазин в желтые ячейки D5, D7 и D9
Содержимое выпадающих списков автоматически подгружается в желтые ячейки из трех синих «умных» таблиц справа (как это реализовать было описано в этой статье). Необходимо в зеленой ячейке D11 получить сумму, соответствующую заданному товару и магазину, причем с нужного листа.
Для решения нам потребуется всего три функции:
- ПОИСКПОЗ(искомое_значение; массив; тип_поиска) – ищет заданное значение в диапазоне (строка или столбец) и выдает порядковый номер ячейки, где оно было найдено. Нам эта функция поможет найти порядковые номера строки и столбца в таблице, где расположено нужное число. Для примера, формула:
=ПОИСКПОЗ(«Альфа»;A2:G1;0)
… вычислит номер столбца в таблице, где расположен магазин Альфа. Последний аргумент этой функции (0) означает, что нам нужен точный поиск.
- ИНДЕКС(диапазон; номер_строки; номер_столбца) – выбирает значение из диапазона по номеру строки и столбца. Так, например, формула:
=ИНДЕКС(B2:G9;3;2)
… выдаст нам содержимое ячейки в 3-й строке 2-го столбца из диапазона B2:G9.
- ДВССЫЛ(адрес_как_текст) – превращает адресную строку в виде текста в настоящий адрес. Причем адрес запросто может склеиваться из фрагментов с помощью оператора сцепки &. Например, формула:
=ДВССЫЛ(A1&»!B3″)
… берет имя листа из ячейки A1, приклеивает к нему восклицательный знак-разделитель и адрес ячейки B3. Если в ячейке A1 будет лежать слово Москва, то на выходе мы получим ссылку Москва!B3, т.е. содержимое ячейки B3 с листа Москва.
Теперь сводим все в единое целое для решения нашей задачи:
Единственный оставшийся нюанс в том, что по синтаксису Excel, если в именах листов есть пробел, то их нужно дополнительно заключать в апострофы (одинарные кавычки), т.е. ссылка на ячейку A1 на листе Нижний Новгород, например, должна выглядеть так:
=’Нижний Новгород’!A1
Таким образом для универсальности нужно добавить апострофы и к нашей формуле:
Ссылки по теме
- Что такое функция ВПР (VLOOKUP) и как с ее помощью подставить значения из одной таблицы в другую
- Как реализовать поиск по двум измерениям (ВПР 2D)
- Динамический выпадающий список с наполнением
Поиск в программе Microsoft Excel
В документах Microsoft Excel, которые состоят из большого количества полей, часто требуется найти определенные данные, наименование строки, и т.д. Очень неудобно, когда приходится просматривать огромное количество строк, чтобы найти нужное слово или выражение. Сэкономить время и нервы поможет встроенный поиск Microsoft Excel. Давайте разберемся, как он работает, и как им пользоваться.
Поисковая функция в Excel
Поисковая функция в программе Microsoft Excel предлагает возможность найти нужные текстовые или числовые значения через окно «Найти и заменить». Кроме того, в приложении имеется возможность расширенного поиска данных.
Способ 1: простой поиск
Простой поиск данных в программе Excel позволяет найти все ячейки, в которых содержится введенный в поисковое окно набор символов (буквы, цифры, слова, и т.д.) без учета регистра.
- Находясь во вкладке «Главная», кликаем по кнопке «Найти и выделить», которая расположена на ленте в блоке инструментов «Редактирование». В появившемся меню выбираем пункт «Найти…». Вместо этих действий можно просто набрать на клавиатуре сочетание клавиш Ctrl+F.
После того, как вы перешли по соответствующим пунктам на ленте, или нажали комбинацию «горячих клавиш», откроется окно «Найти и заменить» во вкладке «Найти». Она нам и нужна. В поле «Найти» вводим слово, символы, или выражения, по которым собираемся производить поиск. Жмем на кнопку «Найти далее», или на кнопку «Найти всё».
При нажатии на кнопку «Найти далее» мы перемещаемся к первой же ячейке, где содержатся введенные группы символов. Сама ячейка становится активной.
Поиск и выдача результатов производится построчно. Сначала обрабатываются все ячейки первой строки. Если данные отвечающие условию найдены не были, программа начинает искать во второй строке, и так далее, пока не отыщет удовлетворительный результат.
Поисковые символы не обязательно должны быть самостоятельными элементами. Так, если в качестве запроса будет задано выражение «прав», то в выдаче будут представлены все ячейки, которые содержат данный последовательный набор символов даже внутри слова. Например, релевантным запросу в этом случае будет считаться слово «Направо». Если вы зададите в поисковике цифру «1», то в ответ попадут ячейки, которые содержат, например, число «516».
Для того, чтобы перейти к следующему результату, опять нажмите кнопку «Найти далее».
Так можно продолжать до тех, пор, пока отображение результатов не начнется по новому кругу.
Способ 2: поиск по указанному интервалу ячеек
Если у вас довольно масштабная таблица, то в таком случае не всегда удобно производить поиск по всему листу, ведь в поисковой выдаче может оказаться огромное количество результатов, которые в конкретном случае не нужны. Существует способ ограничить поисковое пространство только определенным диапазоном ячеек.
-
Выделяем область ячеек, в которой хотим произвести поиск.
Способ 3: Расширенный поиск
Как уже говорилось выше, при обычном поиске в результаты выдачи попадают абсолютно все ячейки, содержащие последовательный набор поисковых символов в любом виде не зависимо от регистра.
К тому же, в выдачу может попасть не только содержимое конкретной ячейки, но и адрес элемента, на который она ссылается. Например, в ячейке E2 содержится формула, которая представляет собой сумму ячеек A4 и C3. Эта сумма равна 10, и именно это число отображается в ячейке E2. Но, если мы зададим в поиске цифру «4», то среди результатов выдачи будет все та же ячейка E2. Как такое могло получиться? Просто в ячейке E2 в качестве формулы содержится адрес на ячейку A4, который как раз включает в себя искомую цифру 4.
Но, как отсечь такие, и другие заведомо неприемлемые результаты выдачи поиска? Именно для этих целей существует расширенный поиск Excel.
-
После открытия окна «Найти и заменить» любым вышеописанным способом, жмем на кнопку «Параметры».
В окне появляется целый ряд дополнительных инструментов для управления поиском. По умолчанию все эти инструменты находятся в состоянии, как при обычном поиске, но при необходимости можно выполнить корректировку.
По умолчанию, функции «Учитывать регистр» и «Ячейки целиком» отключены, но, если мы поставим галочки около соответствующих пунктов, то в таком случае, при формировании результата будет учитываться введенный регистр, и точное совпадение. Если вы введете слово с маленькой буквы, то в поисковую выдачу, ячейки содержащие написание этого слова с большой буквы, как это было бы по умолчанию, уже не попадут. Кроме того, если включена функция «Ячейки целиком», то в выдачу будут добавляться только элементы, содержащие точное наименование. Например, если вы зададите поисковый запрос «Николаев», то ячейки, содержащие текст «Николаев А. Д.», в выдачу уже добавлены не будут.
По умолчанию, поиск производится только на активном листе Excel. Но, если параметр «Искать» вы переведете в позицию «В книге», то поиск будет производиться по всем листам открытого файла.
В параметре «Просматривать» можно изменить направление поиска. По умолчанию, как уже говорилось выше, поиск ведется по порядку построчно. Переставив переключатель в позицию «По столбцам», можно задать порядок формирования результатов выдачи, начиная с первого столбца.
В графе «Область поиска» определяется, среди каких конкретно элементов производится поиск. По умолчанию, это формулы, то есть те данные, которые при клике по ячейке отображаются в строке формул. Это может быть слово, число или ссылка на ячейку. При этом, программа, выполняя поиск, видит только ссылку, а не результат. Об этом эффекте велась речь выше. Для того, чтобы производить поиск именно по результатам, по тем данным, которые отображаются в ячейке, а не в строке формул, нужно переставить переключатель из позиции «Формулы» в позицию «Значения». Кроме того, существует возможность поиска по примечаниям. В этом случае, переключатель переставляем в позицию «Примечания».
Ещё более точно поиск можно задать, нажав на кнопку «Формат».
При этом открывается окно формата ячеек. Тут можно установить формат ячеек, которые будут участвовать в поиске. Можно устанавливать ограничения по числовому формату, по выравниванию, шрифту, границе, заливке и защите, по одному из этих параметров, или комбинируя их вместе.
Если вы хотите использовать формат какой-то конкретной ячейки, то в нижней части окна нажмите на кнопку «Использовать формат этой ячейки…».
После этого, появляется инструмент в виде пипетки. С помощью него можно выделить ту ячейку, формат которой вы собираетесь использовать.
После того, как формат поиска настроен, жмем на кнопку «OK».
Бывают случаи, когда нужно произвести поиск не по конкретному словосочетанию, а найти ячейки, в которых находятся поисковые слова в любом порядке, даже, если их разделяют другие слова и символы. Тогда данные слова нужно выделить с обеих сторон знаком «*». Теперь в поисковой выдаче будут отображены все ячейки, в которых находятся данные слова в любом порядке.
Как видим, программа Excel представляет собой довольно простой, но вместе с тем очень функциональный набор инструментов поиска. Для того, чтобы произвести простейший писк, достаточно вызвать поисковое окно, ввести в него запрос, и нажать на кнопку. Но, в то же время, существует возможность настройки индивидуального поиска с большим количеством различных параметров и дополнительных настроек.
Отблагодарите автора, поделитесь статьей в социальных сетях.
ВПР с поиском по нескольким листам
ВПР по всем листам (43,0 KiB, 12 619 скачиваний)
Если необходимо найти какое-либо значение в большой таблице очень часто применяется функция ВПР. Но ВПР работает только с одной таблицей и нет никакой возможности средствами самой функции просмотреть искомое значение на нескольких листах. Если поиск необходимо осуществить только по двум листам, то можно схитрить:
=ВПР( A1 ;ЕСЛИ(ЕНД(ВПР( A1 ;Лист2!A1:B10;2;0));Лист3!A1:B10;Лист2!A1:B10);2;0)
А когда листов больше? Можно плодить ЕСЛИ. Но это во-первых совсем не наглядно и во-вторых очень непрактично, т.к. при добавлении или удалении листов придется править всю мега-формулу. Да и при работе с количеством листов более 10 есть большой шанс, что длина формулы выйдет за пределы допустимой.
Есть небольшой прием, который поможет искать значение в указанных листах. Для начала необходимо создать на листе список листов книги, в которых искать значение. В приложенном к статье примере они записаны в диапазоне $E$2:$E$5 .
=ВПР( A2 ;ДВССЫЛ(«‘»&ИНДЕКС( $E$2:$E$5 ;ПОИСКПОЗ(ИСТИНА;СЧЁТЕСЛИ(ДВССЫЛ(«‘»& $E$2:$E$5 &»‘!A1:A50″); A2 )>0;0))&»‘!A:B»);2;0)
Формула вводится в ячейку как формула массива — т.е. сочетанием клавиш Ctrl+Shift+Enter. Это очень важное условие. Если формулу не вводить в ячейку как формулу массива, то необходимого результата не получить.
Попробую кратенько описать принцип работы данной формулы.
Перед чтением дальше советую скачать пример:
ВПР по всем листам (43,0 KiB, 12 619 скачиваний)
ДВССЫЛ нам нужна для преобразования текстового представления ссылок на листы в действительные. Подробно не буду останавливаться на принципе работы ДВССЫЛ, просто приведу этапы вычислений:
СЧЁТЕСЛИ(ДВССЫЛ(«‘»& $E$2:$E$5 &»‘!A1:A50»); A2 )
В результате вычисления данного блока у нас получается массив из количества повторений искомого значения на каждом из указанных листов: СЧЁТЕСЛИ(<1;0;0;0>;A2) . Поэтому следующий блок
ПОИСКПОЗ(ИСТИНА;СЧЁТЕСЛИ(ДВССЫЛ(«‘»& $E$2:$E$5 &»‘!A1:A50»); A2 )>;0;0)
работает именно с этим:
ПОИСКПОЗ(ИСТИНА;СЧЁТЕСЛИ(<1;0;0;0>; A2 )>0;0)
Читать подробнее про СЧЁТЕСЛИ
в результате чего мы получаем позицию имени листа в массиве имен листов $E$2:$E$5 , с помощью ИНДЕКС получаем имя листа и подставляем это имя уже к ДВССЫЛ, а она в ВПР:
=ВПР( A2 ;ДВССЫЛ(«‘»&ИНДЕКС(<«Астраханьоблгаз»:»Липецкоблгаз»:»Оренбургоблгаз»:»Ростовоблгаз»>;1)&»‘!A:B»);2;0) =>
=ВПР( A2 ;ДВССЫЛ(«‘Лист2’!A:B»);2;0) =>
=ВПР( A2 ;’Лист2′!A:B;2;0)
Что нам и требовалось. Теперь если в книгу будут добавлены еще листы, то необходимо будет всего лишь дописать их к диапазону $E$2:$E$5 и при необходимости этот диапазон расширить. Так же можно задать диапазон $E$2:$E$5 как динамический и тогда необходимость в правке формулы отпадет вовсе.
Используемые в формуле величины:
A2 — ссылка на ячейку с искомым значением. Т.е. указывается то значение, которое требуется найти на листах.
$E$2:$E$5 — диапазон с именами листов, в которых требуется осуществлять поиск указанного значения ( A1 ).
Диапазон «‘!A1:A50» — это диапазон, в котором СЧЁТЕСЛИ ищет совпадения. Поэтому указывается только один столбец данных. При необходимости следует расширить или изменить. Можно указать так же «‘!A:A» , но при этом следует учитывать, что указание целого столбца может привести к значительному увеличению времени выполнения функции. Поэтому имеет смысл просто задать диапазон с запасом, например «‘!A1:A10000» .
«‘!A:B» — диапазон для аргумента ВПР — Таблица. В первом столбце этого диапазона на каждом из указанных листов ищется указанное значение ( A2 ). При нахождении возвращается значение из указанного столбца. Читать подробнее про ВПР>>
В примере к статье так же можно посмотреть формулу, которая для каждого значения подставляет имя листа, в котором это значение было найдено.
ВПР по всем листам (43,0 KiB, 12 619 скачиваний)
Так же можно искать по нескольким листам разных книг , а не только по нескольким листам одной книги. Для этого необходимо будет в списке листов вместе с именами листов добавить имена книг в квадратных скобках: [Книга1.xlsb]Май
[Книга1.xlsb]Июнь
[Книга2.xlsb]Май
[Книга2.xlsb]Июнь
Перечисленные книги обязательно должны быть открыты
Решил добавить простенькую функцию пользователя(UDF) для тех, кому проще «общаться» с VBA, чем с формулами. Функция ищет указанное значение во всех листах книги, в которой записана(даже в скрытых):
Function VLookUpAllSheets(vCriteria As Variant, rTable As Range, lColNum As Long, Optional iPart As Integer = 1) As Variant Dim rFndRng As Range If iPart <> 1 Then iPart = 2 For i = 1 To Worksheets.Count If Sheets(i).Name <> Application.Caller.Parent.Name Then With Sheets(i) Set rFndRng = .Range(rTable.Address).Resize(, 1).Find(vCriteria, , xlValues, iPart) If Not rFndRng Is Nothing Then VLookUpAllSheets = rFndRng.Offset(, lColNum — 1).Value Exit For End If End With End If Next i End Function
Функция попроще, чем ВПР — последний аргумент(интервальный_просмотр) выполняет несколько иные, чем в ВПР функции. Хотя полагаю немногие его используют в классическом варианте.
rTable — указывается таблица для поиска значений(как в стандартной ВПР)
vCriteria — указывается ссылка на ячейку или текстовое значение для поиска
lColNum — указывается номер столбца в таблице rTable, значение из которого необходимо вернуть — может быть ссылкой на столбец — СТОЛБЕЦ().
iPart — указывается метод просмотра. Если не указан, либо указана цифра 1, то поиск осуществляется по полному совпадению с ячейкой. Но в таком варианте допускается применение подстановочных символов * и ?. Если указано значение, отличное от 1, то совпадение будет отбираться по части вхождения. Если в vCriteria указать «при», то совпадением будет считаться и слово «прибыль»(первый буквы совпадают) и «неприятный»(в середине встречается «при»). Но в этом случае знаки * и ? будут восприниматься «как есть». Может пригодиться, если в искомом тексте присутствуют символы звездочки и вопросительного знака и надо найти совпадения, учитывая эти символы.
Статья помогла? Поделись ссылкой с друзьями!
Надстройка для поиска на всех листах книги Excel
Надстройка SearchText предназначена для поиска заданного текста в книге Excel, с выводом результатов поиска на отдельный лист.
При запуске надстройка формирует панель инструментов, с которой осуществляется запуск всех макросов:
В Excel 2007 и 2010 панель инструментов можно найти на вкладке «Надстройки»:
Надстройка SearchText является расширенной версией надстройки для поиска на текущем листе.
Назначение кнопок надстройки:
— поле для ввода искомого текста. Нажатие клавиши Enter запускает поиск.
— удаление листа с результатами поиска. (выполняется автоматически при повторном поиске)
— кнопки для включения (красная) и выключения (белая) режима подсветки значений, больших, чем введенное число
(число запрашивается в диалоговом окне при нажатии на красную лампочку)
или — переключатель режимов поиска
(щелкните на этой кнопке для переключения режима поиска)
При запуске поиска (вводе числа в текстовое поле, и нажатии Enter) макрос создаёт в текущем файле дополнительный лист (с названием «Результаты поиска»),
и копирует на этот лист все строки, в которых содержится заданный текст.
Выполняется поиск по частичному совпадению текста (т.е., при поиске текста 1234 будут найдены ячейки, содержащие числа 12345, 5612348 и т.д.)
На листе с результатами поиска устанавливается ширина столбцов, совпадающая с шириной столбцов исходного листа, если поиск выполняется по одному листу,
или на лист результатов добавляется дополнительный столбец, в котором для каждой найденной строки указывается, на каком из листов она была найдена:
В режиме поиска по всем листам книги Excel найденные строки группируются по названию листа-источника, заголовок каждого блока строк окрашивается в произвольный цвет.
Во время выполнения происка отображается прогресс-бар, отображающий количество найденных строк, и текущее действие (поиск или копирвоание результатов)
Как в excel сделать поиск по всем листам
Ингвар, доброго времени.
В качестве не очень изящного, но всё-таки решения могу предложить следующую формулу, которую можно протянуть по всем ячейкам Вашего примера. Вставлять в B3 на Листе1.
На первый взгляд выглядит довольно объёмно и страшно, но если разобраться — довольно проста.
Простейшая функция для поиска — ВПР. С её помощью можно найти данные по одной таблице. Что, я уверен, Вы уже с лёгкостью делаете. Если ВПР будет искать в таблице, где НЕТ того, что мы ищем (например, если искать «единицу» на «Листе3» Вашего примера), формула выдаёт ошибку Н/Д. И это свойство можно использовать.
Функция ЕСЛИОШИБКА проверяет то, что мы вводим. И если наша функция внутри ЕСЛИОШИБКИ выдает, например, Н/Д, то ЕСЛИОШИБКА выдаст нам второе значение, записанное через точку с запятой. И моя формула построена следующим образом:
= ЕСЛИОШИБКА (*искать в первой таблице* ; *если не нашли в первой таблице, ищем во второй* )
При этом внутрь условного куска *если не нашли в первой таблице, ищем во второй* можно вложить вторую ЕСЛИОШИБКА для просмотра ещё одной таблицы. Что я и сделал. Получилось:
= ЕСЛИОШИБКА (*искать в первой таблице* ; ЕСЛИОШИБКА ( *искать во второй таблице* ; *искать в третьей таблице) )
При этом таких вложений из ЕСЛИОШИБКА можно сделать не ограниченное количество.
Замечу, что важно закрепить каждую таблицу внутри ВПР долларами, прибить гвоздями так сказать, чтобы не уехала таблица при протяжке формулы вниз.
Советы и лайфхаки по работе с Excel
Многие сталкивались с файлами Ексель, в которых создано огромное количество листов. Чтобы найти нужный лист нужно прокрутить все созданные в книге листы.
Но есть более простой способ быстро открыть нужный лист.
Щелкните правой кнопкой мыши на кнопки прокрутки листов, которые находятся слева от названия листов и выберите нужный лист:
Как снять пароль в Excel? Три рабочих способа снятия пароля.
Способ 1. (Используем программу) Ищем в поисковике и загружаем программу
Как собрать несколько книг Excel в одну?
Например, мы имеем много рабочих книг Excel, и мы хотим
Что такое макрос и куда его вставлять в Excel?
Нам в работе иногда не хватает стандартных возможностей Эксель и приходится напрягать
Как добавить абзац в ячейке Excel?
Достаточно часто при заполнении ячейки текстом, возникает необходимость ввести текст
Как посчитать количество уникальных значений в колонке Excel?
Иногда в работе нам нужно посчитать уникальные значения в определенной
Отсортировать уникальные значения в Excel
Предположим, что у нас есть такая таблица с перечнем соглашений,
Как сделать и добавить выпадающий список в Excel?
В Excel есть одна интересная особенность, а именно возможность вводить
Как быстро перейти в нужный лист книги Excel?
Многие сталкивались с файлами Ексель, в которых создано огромное количество
Содержание
- Поиск по листам в excel как сделать
- Поисковая функция в Excel
- Способ 1: простой поиск
- Способ 2: поиск по указанному интервалу ячеек
- Способ 3: Расширенный поиск
- Помогла ли вам эта статья?
- Поиск по нескольким листам с помощью макроса VBA
- Простой поиск
- Расширенный поиск
- Разновидности поиска
- Поиск совпадений
- Фильтрация
- Видео: Поиск в таблице Excel
Поиск по листам в excel как сделать
В документах Microsoft Excel, которые состоят из большого количества полей, часто требуется найти определенные данные, наименование строки, и т.д. Очень неудобно, когда приходится просматривать огромное количество строк, чтобы найти нужное слово или выражение. Сэкономить время и нервы поможет встроенный поиск Microsoft Excel. Давайте разберемся, как он работает, и как им пользоваться.
Поисковая функция в Excel
Поисковая функция в программе Microsoft Excel предлагает возможность найти нужные текстовые или числовые значения через окно «Найти и заменить». Кроме того, в приложении имеется возможность расширенного поиска данных.
Способ 1: простой поиск
Простой поиск данных в программе Excel позволяет найти все ячейки, в которых содержится введенный в поисковое окно набор символов (буквы, цифры, слова, и т.д.) без учета регистра.
- Находясь во вкладке «Главная», кликаем по кнопке «Найти и выделить», которая расположена на ленте в блоке инструментов «Редактирование». В появившемся меню выбираем пункт «Найти…». Вместо этих действий можно просто набрать на клавиатуре сочетание клавиш Ctrl+F.
- После того, как вы перешли по соответствующим пунктам на ленте, или нажали комбинацию «горячих клавиш», откроется окно «Найти и заменить» во вкладке «Найти». Она нам и нужна. В поле «Найти» вводим слово, символы, или выражения, по которым собираемся производить поиск. Жмем на кнопку «Найти далее», или на кнопку «Найти всё».
- При нажатии на кнопку «Найти далее» мы перемещаемся к первой же ячейке, где содержатся введенные группы символов. Сама ячейка становится активной.
Поиск и выдача результатов производится построчно. Сначала обрабатываются все ячейки первой строки. Если данные отвечающие условию найдены не были, программа начинает искать во второй строке, и так далее, пока не отыщет удовлетворительный результат.
Поисковые символы не обязательно должны быть самостоятельными элементами. Так, если в качестве запроса будет задано выражение «прав», то в выдаче будут представлены все ячейки, которые содержат данный последовательный набор символов даже внутри слова. Например, релевантным запросу в этом случае будет считаться слово «Направо». Если вы зададите в поисковике цифру «1», то в ответ попадут ячейки, которые содержат, например, число «516».
Для того, чтобы перейти к следующему результату, опять нажмите кнопку «Найти далее».
Так можно продолжать до тех, пор, пока отображение результатов не начнется по новому кругу.
Способ 2: поиск по указанному интервалу ячеек
Если у вас довольно масштабная таблица, то в таком случае не всегда удобно производить поиск по всему листу, ведь в поисковой выдаче может оказаться огромное количество результатов, которые в конкретном случае не нужны. Существует способ ограничить поисковое пространство только определенным диапазоном ячеек.
- Выделяем область ячеек, в которой хотим произвести поиск.
- Набираем на клавиатуре комбинацию клавиш Ctrl+F, после чего запуститься знакомое нам уже окно «Найти и заменить». Дальнейшие действия точно такие же, что и при предыдущем способе. Единственное отличие будет состоять в том, что поиск выполняется только в указанном интервале ячеек.
Способ 3: Расширенный поиск
Как уже говорилось выше, при обычном поиске в результаты выдачи попадают абсолютно все ячейки, содержащие последовательный набор поисковых символов в любом виде не зависимо от регистра.
К тому же, в выдачу может попасть не только содержимое конкретной ячейки, но и адрес элемента, на который она ссылается. Например, в ячейке E2 содержится формула, которая представляет собой сумму ячеек A4 и C3. Эта сумма равна 10, и именно это число отображается в ячейке E2. Но, если мы зададим в поиске цифру «4», то среди результатов выдачи будет все та же ячейка E2. Как такое могло получиться? Просто в ячейке E2 в качестве формулы содержится адрес на ячейку A4, который как раз включает в себя искомую цифру 4.
Но, как отсечь такие, и другие заведомо неприемлемые результаты выдачи поиска? Именно для этих целей существует расширенный поиск Excel.
- После открытия окна «Найти и заменить» любым вышеописанным способом, жмем на кнопку «Параметры».
- В окне появляется целый ряд дополнительных инструментов для управления поиском. По умолчанию все эти инструменты находятся в состоянии, как при обычном поиске, но при необходимости можно выполнить корректировку.
По умолчанию, функции «Учитывать регистр» и «Ячейки целиком» отключены, но, если мы поставим галочки около соответствующих пунктов, то в таком случае, при формировании результата будет учитываться введенный регистр, и точное совпадение. Если вы введете слово с маленькой буквы, то в поисковую выдачу, ячейки содержащие написание этого слова с большой буквы, как это было бы по умолчанию, уже не попадут. Кроме того, если включена функция «Ячейки целиком», то в выдачу будут добавляться только элементы, содержащие точное наименование. Например, если вы зададите поисковый запрос «Николаев», то ячейки, содержащие текст «Николаев А. Д.», в выдачу уже добавлены не будут.
По умолчанию, поиск производится только на активном листе Excel. Но, если параметр «Искать» вы переведете в позицию «В книге», то поиск будет производиться по всем листам открытого файла.
В параметре «Просматривать» можно изменить направление поиска. По умолчанию, как уже говорилось выше, поиск ведется по порядку построчно. Переставив переключатель в позицию «По столбцам», можно задать порядок формирования результатов выдачи, начиная с первого столбца.
В графе «Область поиска» определяется, среди каких конкретно элементов производится поиск. По умолчанию, это формулы, то есть те данные, которые при клике по ячейке отображаются в строке формул. Это может быть слово, число или ссылка на ячейку. При этом, программа, выполняя поиск, видит только ссылку, а не результат. Об этом эффекте велась речь выше. Для того, чтобы производить поиск именно по результатам, по тем данным, которые отображаются в ячейке, а не в строке формул, нужно переставить переключатель из позиции «Формулы» в позицию «Значения». Кроме того, существует возможность поиска по примечаниям. В этом случае, переключатель переставляем в позицию «Примечания».
Ещё более точно поиск можно задать, нажав на кнопку «Формат».
При этом открывается окно формата ячеек. Тут можно установить формат ячеек, которые будут участвовать в поиске. Можно устанавливать ограничения по числовому формату, по выравниванию, шрифту, границе, заливке и защите, по одному из этих параметров, или комбинируя их вместе.
Если вы хотите использовать формат какой-то конкретной ячейки, то в нижней части окна нажмите на кнопку «Использовать формат этой ячейки…».
После этого, появляется инструмент в виде пипетки. С помощью него можно выделить ту ячейку, формат которой вы собираетесь использовать.
После того, как формат поиска настроен, жмем на кнопку «OK».
Бывают случаи, когда нужно произвести поиск не по конкретному словосочетанию, а найти ячейки, в которых находятся поисковые слова в любом порядке, даже, если их разделяют другие слова и символы. Тогда данные слова нужно выделить с обеих сторон знаком «*». Теперь в поисковой выдаче будут отображены все ячейки, в которых находятся данные слова в любом порядке.
Как видим, программа Excel представляет собой довольно простой, но вместе с тем очень функциональный набор инструментов поиска. Для того, чтобы произвести простейший писк, достаточно вызвать поисковое окно, ввести в него запрос, и нажать на кнопку. Но, в то же время, существует возможность настройки индивидуального поиска с большим количеством различных параметров и дополнительных настроек.
Мы рады, что смогли помочь Вам в решении проблемы.
Задайте свой вопрос в комментариях, подробно расписав суть проблемы. Наши специалисты постараются ответить максимально быстро.
Помогла ли вам эта статья?
Сегодня я хочу расширить границы использования функции ВПР и научить вас использовать эту функцию, что бы произвести поиск значений в Excel по нескольким листам вашего рабочего файла.
Как вы знаете или еще не знаете, я напоминаю, в чистом виде функция ВПР производит поиск только в одной таблице, а о том, что бы чистыми возможностями функции произвести поиск необходимого значения в нескольких листиках, это невозможно. Но, тем не менее, при большой необходимости можно схитрить и произвести поиск по двум листам. Для этого используем возможности логической функции ЕСЛИ и формула поиска будет выглядеть приблизительно так:
=ВПР (C3 ;ЕСЛИ (ЕНД (ВПР (C3 ;Таблица2!C3:D7 ;2; 0)); Таблица3! C3:D7 ;Таблица2! C3:D7 );2; 0).
Но такой вариант работает только с 2 таблицами, а в случае, когда листов больше, нужно увеличивать количество вложений для функции ЕСЛИ. Но при этом:
- во-первых, если много листов, то есть огромный шанс что длина формулы будет больше допустимого размера и перестанет работать;
- во-вторых, это просто непрактично, так как при работе такой мега-формулы возникает значительно риск ошибок и при изменениях придётся переделывать формулу.
Но, как всегда, выход есть. Рассмотрим небольшую хитрость с помощью, которой и будем искать в нужных листах. Начнем работу с создания перечня листов нашей книги, где будем производить поиск значений. В нашем случае это диапазон $E$3:$E$7. Теперь для получения значения в столбик «Найденная стоимость» согласно условию в столбике «Номенклатуру которую ищем» нам нужна формула:
Как видите, формула выделена фигурными скобками, это означает, что её необходимо вводить как формулу массива с помощью горячего сочетания клавиш Ctrl+Shift+Enter. Это самое главное условие правильной работы этой формулы в других случаях она не будет работать. Формула объемная и требует объяснения принципа её работы. Функция ДВССЫЛ необходима, что бы конвертировать текстовые отображения ссылок на листы нашей книги в действительные. Сам принцип работы функции ДВССЫЛ, я описывать не буду, рассмотрим только необходимую формулу для этапа нашего вычисления: СЧЁТЕСЛИ (ДВССЫЛ («’»&$E$3:$E$7 &»‘! C1:C50″); A3).
Как следствие, при вычислении этого блока у нас формируется массив из некоторого количества значений, которые мы ищем, и которые повторяются на листах нашего списка, и имеет вид: СЧЁТЕСЛИ(<2;0;0;0>;A3). О работе функции СЧЁТЕСЛИ я писал отдельно и более подробно.
Следующим рассматриваемым блоком нашей композиции будет формула: ПОИСКПОЗ (ИСТИНА; СЧЁТЕСЛИ (ДВССЫЛ («’»&$E$3:$E$7 &»‘! C1:C50″); A3)>0;0), которая и работает с указанным выше блоком такого вида: ПОИСКПОЗ (ИСТИНА; СЧЁТЕСЛИ (<2;0;0;0>; A3)>0;0). Вследствие чего мы узнаем, какую позицию занимает имя листа в нашем массиве списке листов $E$3:$E$7. Теперь же при помощи функции ИНДЕКС мы получаем название листа, и можем применить его имя в структуре функции ДВССЫЛ, а она передаст полученное значение уже далее функции ВПР. Пошагово это будет выглядеть так:
Ну, вот мы и получили универсальную формулу, которая производит поиск значений в Excel и является очень гибкой и удобной. В случаях, когда возникнет необходимость добавить в рабочую книгу еще листы с таблицами, то необходимо всего на всего прописать их в списке рабочих листов $E$3:$E$7, изменив предварительно ее размер или попросту изначально сделать ее динамическим диапазоном, и править формулу будет не нужно.
Для большего удобства в столбике С, в графе «Где было найдено» можно прописать формулу которая будет наглядно показывать где была взята цифра, с какой таблицы вы получили значение, что значительно облегчает поисковую навигацию. Для получения названия таблицы необходима формула:
Поиск по нескольким листам с помощью макроса VBA
Для тех, кто хочет производить поиск значений в Excel по своей рабочей книге с помощью макросов или просто сделать рутинную операцию более автоматической предлагаю воспользоваться прописанной функцией пользователя, которая будет искать необходимое значение во всех, без исключения, даже в скрытых, листах рабочей книги, в которую вы ее пропишете. Макрос был найден на сайте excel — vba.ru, который любит такие фишки.
Функция будет иметь следующий вид:
Function VLookUpAllSheets(vCriteria As Variant, rTable As Range, lColNum As Long, Optional iPart As Integer = 1) As Variant
Dim rFndRng As Range
If iPart <> 1 Then iPart = 2
For i = 1 To Worksheets.Count
If Sheets(i).Name <> Application.Caller.Parent.Name Then
Set rFndRng = .Range(rTable.Address).Resize(, 1).Find(vCriteria, , xlValues, iPart)
If Not rFndRng Is Nothing Then
VLookUpAllSheets = rFndRng.Offset(, lColNum — 1).Value
Расшифруются аргументы написанной функции так:
- rTable – прописывается таблица, как в обыкновенной функции ВПР, для поиска значений;
- vCriteria – аргумент, который указывает любое текстовое значение или ссылка на ячейку, которая содержит значение для поиска;
- lColNum – прописывается тот номер столбика из аргумента rTable, значение в котором нам необходимо изъять, возможно, использовать ссылку на столбик с помощью функции СТОЛБЕЦ;
- iPart – аргумент, в котором прописываем необходимый метод просмотра. Когда аргумент не указан или указан аргумент равно 1, в таком случае будет проводиться поиск с полным совпадением значений в ячейках. В таких случаях есть возможность применить символы подстановки: «*» и «?». Если же, в аргументе указано другое значение кроме 1, функция будет искать, и отбирать значения при частичном вхождении.
Я надеюсь, что поиск значений в Excel функцией ВПР по нескольким листам у вас получился, и вы могли быстро собрать нужные данные в ваших таблицах, а также научились создавать удобные и классные отчёты. Если у вас есть чем дополнить меня пишите комментарии, я буду их ждать с нетерпением, ставьте лайки и делитесь полезной статьей в соц.сетях!
Не забудьте подкинуть автору на кофе…
Основное назначение офисной программы Excel – осуществление расчётов. Документ этой программы (Книга) может содержать много листов с длинными таблицами, заполненными числами, текстом или формулами. Автоматизированный быстрый поиск позволяет найти в них необходимые ячейки.
Простой поиск
Чтобы произвести поиск значения в таблице Excel, необходимо на вкладке «Главная» открыть выпадающий список инструмента «Найти и заменить» и щёлкнуть пункт «Найти». Тот же эффект можно получить, используя сочетание клавиш Ctrl + F.
В простейшем случае в появившемся окне «Найти и заменить» надо ввести искомое значение и щёлкнуть «Найти всё».
Как видно, в нижней части диалогового окна появились результаты поиска. Найденные значения подчёркнуты красным в таблице. Если вместо «Найти все» щёлкнуть «Найти далее», то сначала будет произведён поиск первой ячейки с этим значением, а при повторном щелчке – второй.
Аналогично производится поиск текста. В этом случае в строке поиска набирается искомый текст.
Если данные или текст ищется не во всей экселевской таблице, то область поиска предварительно должна быть выделена.
Расширенный поиск
Предположим, что требуется найти все значения в диапазоне от 3000 до 3999. В этом случае в строке поиска следует набрать 3. Подстановочный знак «?» заменяет собой любой другой.
Анализируя результаты произведённого поиска, можно отметить, что, наряду с правильными 9 результатами, программа также выдала неожиданные, подчёркнутые красным. Они связаны с наличием в ячейке или формуле цифры 3.
Можно удовольствоваться большинством полученных результатов, игнорируя неправильные. Но функция поиска в эксель 2010 способна работать гораздо точнее. Для этого предназначен инструмент «Параметры» в диалоговом окне.
Щёлкнув «Параметры», пользователь получает возможность осуществлять расширенный поиск. Прежде всего, обратим внимание на пункт «Область поиска», в котором по умолчанию выставлено значение «Формулы».
Это означает, что поиск производился, в том числе и в тех ячейках, где находится не значение, а формула. Наличие в них цифры 3 дало три неправильных результата. Если в качестве области поиска выбрать «Значения», то будет производиться только поиск данных и неправильные результаты, связанные с ячейками формул, исчезнут.
Для того чтобы избавиться от единственного оставшегося неправильного результата на первой строчке, в окне расширенного поиска нужно выбрать пункт «Ячейка целиком». После этого результат поиска становимся точным на 100%.
Такой результат можно было бы обеспечить, сразу выбрав пункт «Ячейка целиком» (даже оставив в «Области поиска» значение «Формулы»).
Теперь обратимся к пункту «Искать».
Если вместо установленного по умолчанию «На листе» выбрать значение «В книге», то нет необходимости находиться на листе искомых ячеек. На скриншоте видно, что пользователь инициировал поиск, находясь на пустом листе 2.
Следующий пункт окна расширенного поиска – «Просматривать», имеющий два значения. По умолчанию установлено «по строкам», что означает последовательность сканирования ячеек по строкам. Выбор другого значения – «по столбцам», поменяет только направление поиска и последовательность выдачи результатов.
При поиске в документах Microsoft Excel, можно использовать и другой подстановочный знак – «*». Если рассмотренный «?» означал любой символ, то «*» заменяет собой не один, а любое количество символов. Ниже представлен скриншот поиска по слову Louisiana.
Иногда при поиске необходимо учитывать регистр символов. Если слово louisiana будет написано с маленькой буквы, то результаты поиска не изменятся. Но если в окне расширенного поиска выбрать «Учитывать регистр», то поиск окажется безуспешным. Программа станет считать слова Louisiana и louisiana разными, и, естественно, не найдёт первое из них.
Разновидности поиска
Поиск совпадений
Иногда бывает необходимо обнаружить в таблице повторяющиеся значения. Чтобы произвести поиск совпадений, сначала нужно выделить диапазон поиска. Затем, на той же вкладке «Главная» в группе «Стили», открыть инструмент «Условное форматирование». Далее последовательно выбрать пункты «Правила выделения ячеек» и «Повторяющиеся значения».
Результат представлен на скриншоте ниже.
При необходимости пользователь может поменять цвет визуального отображения совпавших ячеек.
Фильтрация
Другая разновидность поиска – фильтрация. Предположим, что пользователь хочет в столбце B найти числовые значения в диапазоне от 3000 до 4000.
- Выделить первый столбец с заголовком.
- На той же вкладке «Главная» в разделе «Редактирование» открыть инструмент «Сортировка и фильтр», и щёлкнуть пункт «Фильтр».
- В верхней строчке столбца B появляется треугольник – условный знак списка. После его открытия в списке «Числовые фильтры» щёлкнуть пункт «между».
- В окне «Пользовательский автофильтр» следует ввести начальное и конечное значение плюс OK.
Как видно, отображаться стали только строки, удовлетворяющие введённому условию. Все остальные оказались временно скрытыми. Для возврата к начальному состоянию следует повторить шаг 2.
Различные варианты поиска были рассмотрены на примере Excel 2010. Как сделать поиск в эксель других версий? Разница в переходе к фильтрации есть в версии 2003. В меню «Данные» следует последовательно выбрать команды «Фильтр», «Автофильтр», «Условие» и «Пользовательский автофильтр».
Видео: Поиск в таблице Excel
Источник
Skip to content
В этом руководстве показано, как использовать ИНДЕКС и ПОИСКПОЗ в Excel и чем они лучше ВПР.
В нескольких недавних статьях мы приложили немало усилий, чтобы объяснить основы функции ВПР новичкам и предоставить более сложные примеры формул ВПР опытным пользователям. А теперь я постараюсь если не отговорить вас от использования ВПР, то хотя бы показать вам альтернативный способ поиска нужных значений в Excel.
- Краткий обзор функций ИНДЕКС и ПОИСКПОЗ
- Как использовать формулу ИНДЕКС ПОИСКПОЗ
- ИНДЕКС+ПОИСКПОЗ вместо ВПР?
- Поиск справа налево
- Двусторонний поиск в строках и столбцах
- ИНДЕКС ПОИСКПОЗ для поиска по нескольким условиям
- Как найти среднее, максимальное и минимальное значение
- Что делать с ошибками поиска?
Для чего это нужно? Потому что функция ВПР имеет множество ограничений, которые могут помешать вам получить желаемый результат во многих ситуациях. С другой стороны, комбинация ПОИСКПОЗ ИНДЕКС более гибкая и имеет много замечательных возможностей, которые во многих отношениях превосходят ВПР.
Функции Excel ИНДЕКС и ПОИСКПОЗ — основы
Поскольку целью этого руководства является демонстрация альтернативного способа выполнения поиска в Excel с использованием комбинации функций ИНДЕКС и ПОИСКПОЗ, мы не будем подробно останавливаться на их синтаксисе и использовании. Тем более, что это подробно рассмотрено в других статьях, ссылки на которые вы можете найти в конце этого руководства. Мы рассмотрим лишь минимум, необходимый для понимания общей идеи, а затем подробно рассмотрим примеры формул, раскрывающие все преимущества использования ПОИСКПОЗ и ИНДЕКС вместо ВПР.
Функция ИНДЕКС
Функция ИНДЕКС (в английском варианте – INDEX) возвращает значение в массиве на основе указанных вами номеров строк и столбцов. Синтаксис функции ИНДЕКС прост:
ИНДЕКС(массив,номер_строки,[номер_столбца])
Вот простое объяснение каждого параметра:
- массив — это диапазон ячеек, именованный диапазон или таблица.
- номер_строки — это номер строки в массиве, из которого нужно вернуть значение. Если этот аргумент опущен, требуется следующий – номер_столбца.
- номер_столбца — это номер столбца, из которого нужно вернуть значение. Если он опущен, требуется номер_строки.
Дополнительные сведения см. в статье Функция ИНДЕКС в Excel .
А вот пример формулы ИНДЕКС в самом простом виде:
=ИНДЕКС(A1:C10;2;3)
Формула выполняет поиск в ячейках с A1 по C10 и возвращает значение ячейки во 2-й строке и 3-м столбце, т. е. в ячейке C2.
Очень легко, правда? Однако при работе с реальными данными вы вряд ли когда-нибудь будете заранее знать, какие строки и столбцы вам нужны. Здесь вам пригодится ПОИСКПОЗ.
Функция ПОИСКПОЗ
Она ищет нужное значение в диапазоне ячеек и возвращает относительное положение этого значения в диапазоне.
Синтаксис функции ПОИСКПОЗ следующий:
ПОИСКПОЗ(искомое_значение, искомый_массив, [тип_совпадения])
- искомое_значение — числовое или текстовое значение, которое вы ищете.
- диапазон_поиска — диапазон ячеек, в которых будем искать.
- тип_совпадения — указывает, следует ли искать точное соответствие или наиболее близкое совпадение:
- 1 или опущено — находит наибольшее значение, которое меньше или равно искомому значению. Требуется сортировка массива поиска в порядке возрастания.
- 0 — находит первое значение, точно равное искомому значению. В комбинации ИНДЕКС/ПОИСКПОЗ вам почти всегда нужно точное совпадение, поэтому вы чаще всего устанавливаете третий аргумент вашей функции в 0.
- -1 — находит наименьшее значение, которое больше или равно искомому значению. Требуется сортировка массива поиска в порядке убывания.
Например, если диапазон B1:B3 содержит значения «яблоки», «апельсины», «лимоны», приведенная ниже формула возвращает число 3, поскольку «лимоны» — это третья по счету запись в этом диапазоне:
=ПОИСКПОЗ(«лимоны»;B1:B3;0)
Дополнительные сведения см . в статье Функция ПОИСКПОЗ в Excel .
На первый взгляд полезность функции ПОИСКПОЗ может показаться сомнительной. Кого волнует положение значения в диапазоне? Что мы действительно хотим определить, так это само значение.
Однако, относительная позиция искомого значения (т. е. номера строки и столбца, в которых оно находится) — это именно то, что нам нужно указать для аргументов номер_строки и номер_столбца функции ИНДЕКС. Как вы помните, ИНДЕКС может найти значение на пересечении заданной строки и столбца, но сама не может определить, какую именно строку и столбец ей нужно выбрать.
Вот поэтому совместное использование ИНДЕКС и ПОИСКПОЗ открывает перед нами массу возможностей для поиска в Excel.
Как использовать формулу ИНДЕКС ПОИСКПОЗ в Excel
Теперь, когда вы знаете основы, я считаю, что вы уже начали понимать, как ПОИСКПОЗ и ИНДЕКС работают вместе. Короче говоря, ИНДЕКС извлекает нужное значение по номерам столбцов и строк, а ПОИСКПОЗ предоставляет ей эти номера. Вот и все!
Для вертикального поиска вы используете функцию ПОИСКПОЗ только для определения номера строки, указывая диапазон столбцов непосредственно в самой формуле:
ИНДЕКС ( столбец для возврата значения ; ПОИСКПОЗ ( искомое значение ; столбец для поиска ; 0))
Все еще не совсем понимаете эту логику? Возможно, будет проще разобрать на примере. Предположим, у вас есть список национальных столиц и их население:
Чтобы найти население определенной столицы, скажем, Индии, используйте следующую формулу ПОИСКПОЗ ИНДЕКС:
=ИНДЕКС(C2:C10; ПОИСКПОЗ(“Индия”;A2:A10;0))
Теперь давайте проанализируем, что на самом деле делает каждый компонент этой формулы:
- Функция ПОИСКПОЗ ищет искомое значение «Индия» в диапазоне A2:A10 и возвращает число 2, поскольку это слово занимает второе место в массиве поиска.
- Этот номер поступает непосредственно в аргумент номер_строки функции ИНДЕКС, предписывая вернуть значение из этой строки.
Таким образом, приведенная выше формула превращается в ИНДЕКС(C2:C10;2), которая означает, что нужно искать в ячейках от C2 до C10 и извлекать значение из второй ячейки в этом диапазоне, то есть из C3, потому что мы начинаем отсчет со второй строки.
Но указывать название города в формуле не совсем правильно, так как для каждого нового поиска придется корректировать эту формулу. Введите его в какую-нибудь отдельную ячейку, скажем, F1, укажите ссылку на ячейку для ПОИСКПОЗ, и вы получите формулу динамического поиска:
=ИНДЕКС(C2:C10;ПОИСКПОЗ(F1;A2:A10;0))
Важное замечание! Количество строк в аргументе массив функции ИНДЕКС должно совпадать с количеством строк в аргументе просматриваемый_массив в ПОИСКПОЗ, иначе формула выдаст неверный результат.
Вы спросите: «А почему бы нам просто не использовать обычную формулу ВПР? Какой смысл тратить время на то, чтобы разобраться в хитросплетениях ИНДЕКС ПОИСКПОЗ в Excel?»
Вот как это будет выглядеть:
=ВПР(F1; A2:C10; 3; 0)
Конечно, так проще. Но этот наш элементарный пример предназначен только для демонстрационных целей, чтобы вы поняли, как именно функции ИНДЕКС и ПОИСКПОЗ работают вместе. Действительно, ВПР была бы здесь более уместна. Другие примеры, которые вы найдёте ниже, покажут вам реальную силу этой комбинации, которая легко справляется со многими сложными задачами, когда ВПР будет бессильна.
ИНДЕКС+ПОИСКПОЗ вместо ВПР?
Решая, какую функцию использовать для вертикального поиска, большинство знатоков Excel сходятся во мнении, что ПОИСКПОЗ+ИНДЕКС намного лучше, чем ВПР. Однако многие до сих пор остаются с ВПР, во-первых, потому что это проще, а, во-вторых, потому что они не до конца понимают все преимущества использования формулы ПОИСКПОЗ ИНДЕКС в Excel. Без такого понимания никто не захочет тратить свое время на изучение более сложного синтаксиса.
Ниже я укажу на ключевые преимущества ИНДЕКС ПОИСКПОЗ перед ВПР, а уж вам решать, является ли это достойным дополнением к вашему арсеналу знаний в Excel.
4 основные причины использовать ИНДЕКС ПОИСКПОЗ вместо ВПР
- Поиск справа налево. Как известно любому образованному пользователю, ВПР не может искать влево. Это означает, что искомое значение всегда должно находиться в крайнем левом столбце таблицы. А извлекать нужное значение мы будем из столбца, который находится правее. ИНДЕКС+ПОИСКПОЗ может легко выполнять поиск влево! Здесь это показано в действии: Как выполнить поиск значения слева в Excel .
- Можно безопасно вставлять или удалять столбцы. Формулы ВПР не работают или выдают неверные результаты, когда новый столбец удаляется из таблицы поиска или добавляется в нее, поскольку синтаксис ВПР требует указания порядкового номера столбца, из которого вы хотите извлечь данные. Естественно, когда вы добавляете или удаляете столбцы, этот номер в формуле автоматически не меняется, а нужный столбец уже оказывается на новом месте.
С функциями ИНДЕКС и ПОИСКПОЗ вы указываете диапазон возвращаемых столбцов, а не номер одного из них. В результате вы можете вставлять и удалять столько столбцов, сколько хотите, не беспокоясь об обновлении каждой связанной с ними формулы.
- Нет ограничений на размер искомого значения. При использовании функции ВПР общая длина ваших критериев поиска не может превышать 255 символов, иначе вы получите ошибку #ЗНАЧ!. Таким образом, если ваш набор данных содержит длинные строки, ИНДЕКС ПОИСКПОЗ — единственное работающее решение.
- Более высокая скорость обработки. Если ваши таблицы относительно небольшие, вряд ли будет какая-то существенная разница в производительности Excel. Но если ваши рабочие листы содержат сотни или тысячи строк и, следовательно, сотни или тысячи формул, ИНДЕКС ПОИСКПОЗ будет работать намного быстрее, чем ВПР. Причина в том, что Excel будет обрабатывать только столбцы поиска и возврата, а не весь массив таблицы.
Влияние ВПР на производительность Excel может быть особенно заметным, если ваша книга содержит сложные формулы массива. Чем больше значений содержит ваш массив и чем больше формул массива содержится в книге, тем медленнее работает Excel.
ИНДЕКС ПОИСКПОЗ в Excel – примеры формул
Уяснив, почему все же стоит изучать ИНДЕКС ПОИСКПОЗ, давайте перейдем к самому интересному и посмотрим, как можно применить теоретические знания на практике.
Формула для поиска справа налево
Как уже упоминалось, ВПР не может получать значения слева от столбца поиска. Таким образом, если ваши значения поиска не находятся в самом левом столбце, нет никаких шансов, что формула ВПР принесет вам желаемый результат. Функция ПОИСКПОЗ ИНДЕКС в Excel более универсальна и не имеет особого значения, где расположены столбцы поиска и возврата.
Для этого примера мы добавим столбец «Ранг» слева от нашей основной таблицы и попытаемся выяснить, какое место занимает столица России по численности населения среди других перечисленных столиц.
Записав искомое значение в G1, используйте следующую формулу для поиска в C2:C10 и возврата соответствующего значения из A2:A10:
=ИНДЕКС(A2:A10; ПОИСКПОЗ(G1;C2:C10;0))
Совет. Если вы планируете использовать формулу ПОИСКПОЗ ИНДЕКС более чем для одной ячейки, обязательно зафиксируйте оба диапазона абсолютными ссылками (например, $A$2:$A$10 и $C$2:$C$10), чтобы они не изменялись при копировании формулы.
Двусторонний поиск в строках и столбцах
В приведенных выше примерах мы использовали ИНДЕКС ПОИСКПОЗ вместо классической функции ВПР, чтобы вернуть значение из точно указанного столбца. Но что, если вам нужно искать в нескольких строках и столбцах? То есть, сначала нужно найти подходящий столбец, а уж потом извлечь из него значение? Другими словами, что, если вы хотите выполнить так называемый матричный или двусторонний поиск?
Это может показаться сложным, но формула очень похожа на базовую функцию ПОИСКПОЗ ИНДЕКС в Excel, но с одним отличием.
Просто используйте две функции ПОИСКПОЗ, вложенных друг в друга: одну – для получения номера строки, а другую – для получения номера столбца.
ИНДЕКС(массив; ПОИСКПОЗ(значение_поиска1 ; столбец_поиска ; 0); ПОИСКПОЗ(значение_поиска2 ; столбец_поиска ; 0))
А теперь, пожалуйста, взгляните на приведенную ниже таблицу и давайте составим формулу двумерного поиска, чтобы найти население (в миллионах) в данной стране за данный год.
С целевой страной в G1 (значение_поиска1) и целевым годом в G2 (значение_поиска2) формула принимает следующий вид:
=ИНДЕКС(B2:D11; ПОИСКПОЗ(G1;A2:A11;0); ПОИСКПОЗ(G2;B1:D1;0))
Как работает эта формула?
Всякий раз, когда вам нужно понять сложную формулу Excel, разделите ее на более мелкие части и посмотрите, что делает каждая отдельная функция:
ПОИСКПОЗ(G1;A2:A11;0); – ищет в A2:A11 значение из ячейки G1 («США») и возвращает его позицию, которая равна 3.
ПОИСКПОЗ(G2;B1:D1;0) – просматривает диапазон B1:D1, чтобы получить позицию значения из ячейки G2 («2015»), которая равна 3.
Найденные выше номера строк и столбцов становятся соответствующими аргументами функции ИНДЕКС:
ИНДЕКС(B2:D11, 3, 3)
В результате вы получите значение на пересечении 3-й строки и 3-го столбца в диапазоне B2:D11, то есть из D4. Несложно?
ИНДЕКС ПОИСКПОЗ для поиска по нескольким условиям
Если у вас была возможность прочитать наши материалы по ВПР в Excel, вы, вероятно, уже протестировали формулу для ВПР с несколькими условиями . Однако существенным недостатком этого подхода является необходимость добавления вспомогательного столбца. Хорошей новостью является то, что функция ПОИСКПОЗ ИНДЕКС в Excel также может выполнять поиск по нескольким условиям без изменения или реструктуризации исходных данных!
Вот общая формула ИНДЕКС ПОИСКПОЗ с несколькими критериями:
{=ИНДЕКС( диапазон_возврата; ПОИСКПОЗ (1; ( критерий1 = диапазон1 ) * ( критерий2 = диапазон2 ); 0))}
Примечание. Это формула массива , которую необходимо вводить с помощью сочетания клавиш Ctrl + Shift + Enter
.
Предположим, что в таблице ниже вы хотите найти значение на основе двух критериев: Покупатель и Товар.
Следующая формула ИНДЕКС ПОИСКПОЗ отлично работает:
=ИНДЕКС(C2:C10; ПОИСКПОЗ(1; (F1=A2:A10) * (F2=B2:B10); 0))
Где C2:C10 — это диапазон, из которого возвращается значение, F1 — это критерий1, A2:A10 — это диапазон для сравнения с критерием 1, F2 — это критерий 2, а B2:B10 — это диапазон для сравнения с критерием 2.
Не забудьте правильно ввести формулу, нажав Ctrl + Shift + Enter, и Excel автоматически заключит ее в фигурные скобки, как показано на скриншоте ниже:
Рис5
Если вы не хотите использовать формулы массива, добавьте в формулу в F4 еще одну функцию ИНДЕКС и завершите ее ввод обычным нажатием Enter:
=ИНДЕКС(C2:C10; ПОИСКПОЗ(1; ИНДЕКС((F1=A2:A10) * (F2=B2:B10); 0; 1); 0))
Разберем пошагово, как это работает.
Здесь используется тот же подход, что и в обычном сочетании ИНДЕКС ПОИСКПОЗ, где просматривается один столбец. Чтобы оценить несколько критериев, вы создаете два или более массива значений ИСТИНА и ЛОЖЬ, которые представляют совпадения и несовпадения для каждого отдельного критерия, а затем перемножаете соответствующие элементы этих массивов. Операция умножения преобразует ИСТИНА и ЛОЖЬ в 1 и 0 соответственно и создает массив, в котором единицы соответствуют строкам, которые удовлетворяют всем условиям. Функция ПОИСКПОЗ со значением поиска 1 находит первую «1» в массиве и передает ее позицию в ИНДЕКС, которая возвращает значение в этой позиции из указанного столбца.
Вторая формула без массива основана на способности функции ИНДЕКС работать с массивами. Второй вложенный ИНДЕКС имеет 0 в номер_строки , так что он будет передавать весь массив столбцов в ПОИСКПОЗ.
Среднее, максимальное и минимальное значение при помощи ИНДЕКС ПОИСКПОЗ
Microsoft Excel имеет специальные функции для поиска минимального, максимального и среднего значения в диапазоне. Но что, если вам нужно получить значение из другой ячейки, связанной с этими значениями? Например, получить название города с максимальным населением или узнать товар с минимальными продажами? В этом случае используйте функцию МАКС , МИН или СРЗНАЧ вместе с ИНДЕКС ПОИСКПОЗ.
Максимальное значение.
Предположим, нам нужно в списке городов найти столицу с самым большим населением. Чтобы найти наибольшее значение в столбце С и вернуть соответствующее ему значение из столбца В, находящееся в той же строке, используйте эту формулу:
=ИНДЕКС(B2:B10; ПОИСКПОЗ(МАКС(C2:C10); C2:C10; 0))
Скриншот с примером находится чуть ниже.
Минимальное значение
Теперь найдём город с самым маленьким населением в списке. Чтобы найти наименьшее число в столбце С и получить соответствующее ему значение из столбца В:
=ИНДЕКС(B2:B10; ПОИСКПОЗ(МИН(C2:C10); C2:C10; 0))
Ближайшее к среднему
Теперь мы находим город, население которого наиболее близко к среднему значению. Чтобы вычислить позицию, наиболее близкую к среднему значению показателя, рассчитанному из D2:D10, и получить соответствующее значение из столбца C, используйте следующую формулу:
=ИНДЕКС(B2:B10; ПОИСКПОЗ(СРЗНАЧ(C2:C10); C2:C10; -1 ))
В зависимости от того, как организованы ваши данные, укажите 1 или -1 для третьего аргумента (тип_совпадения) функции ПОИСКПОЗ:
- Если ваш столбец поиска (столбец D в нашем случае) отсортирован по возрастанию , поставьте 1. Формула вычислит наибольшее значение, которое меньше или равно среднему значению.
- Если ваш столбец поиска отсортирован по убыванию , введите -1. Формула вычислит наименьшее значение, которое больше или равно среднему значению.
- Если ваш массив поиска содержит значение , точно равное среднему, вы можете ввести 0 для точного совпадения. Никакой сортировки не требуется.
В нашем примере данные в столбце D отсортированы в порядке убывания, поэтому мы используем -1 для типа соответствия. В результате мы получаем «Токио», так как его население (13 189 000) является ближайшим, превышающим среднее значение (12 269 006).
Что делать с ошибками поиска?
Как вы, наверное, заметили, если формула ИНДЕКС ПОИСКПОЗ в Excel не может найти искомое значение, она выдает ошибку #Н/Д. Если вы хотите заменить это стандартное сообщение чем-то более информативным, оберните формулу ПОИСКПОЗ ИНДЕКС в функцию ЕСНД . Например:
=ЕСНД(ИНДЕКС(C2:C10; ПОИСКПОЗ(F1;A2:A10;0)); «Не найдено»)
И теперь, если кто-то вводит значение, которое не существует в диапазоне поиска, формула явно сообщит пользователю, что совпадений не найдено:
Если вы хотите перехватывать все ошибки, а не только #Н/Д, используйте функцию ЕСЛИОШИБКА вместо ЕСНД:
=ЕСЛИОШИБКА(ИНДЕКС(C2:C10; ПОИСКПОЗ(F1;A2:A10;0)); «Что-то пошло не так!»)
Пожалуйста, имейте в виду, что во многих ситуациях было бы не совсем правильно скрывать все такие ошибки, потому что они предупреждают вас о возможных проблемах в вашей формуле.
Итак, еще раз об основных преимуществах формулы ИНДЕКС ПОИСКПОЗ.
-
Возможен ли «левый» поиск?
-
Повлияет ли на результат вставка и удаление столбцов?
Вы можете вставлять и удалять столько столбцов, сколько хотите. На результат ИНДЕКС ПОИСКПОЗ это не повлияет.
-
Возможен ли поиск по строкам и столбцам?
Можно сначала найти подходящий столбец, а уж потом извлечь из него значение. Общий вид формулы:
ИНДЕКС(массив; ПОИСКПОЗ(значение_поиска1 ; столбец_поиска ; 0); ПОИСКПОЗ(значение_поиска2 ; столбец_поиска ; 0))
Подробную инструкцию смотрите здесь. -
Как сделать поиск ИНДЕКС ПОИСКПОЗ по нескольким условиям?
Можно выполнять поиск по двум или более условиям без добавления дополнительных столбцов. Вот формула массива, которая решит проблему:
{=ИНДЕКС( диапазон_возврата; ПОИСКПОЗ (1; ( критерий1 = диапазон1 ) * ( критерий2 = диапазон2 ); 0))}
Вот как можно использовать ИНДЕКС и ПОИСКПОЗ в Excel. Я надеюсь, что наши примеры формул окажутся полезными для вас.
Вот еще несколько статей по этой теме:
Ингвар, доброго времени.
В качестве не очень изящного, но всё-таки решения могу предложить следующую формулу, которую можно протянуть по всем ячейкам Вашего примера. Вставлять в B3 на Листе1.
Код
=ЕСЛИОШИБКА(ВПР(A3;Лист2!$A$3:$B$4;2;0);ЕСЛИОШИБКА(ВПР(A3;Лист3!$A$3:$B$5;2;0);ВПР(A3;Лист4!$A$3:$B$6;2;0)))
На первый взгляд выглядит довольно объёмно и страшно, но если разобраться — довольно проста.
Простейшая функция для поиска — ВПР. С её помощью можно найти данные по одной таблице. Что, я уверен, Вы уже с лёгкостью делаете. Если ВПР будет искать в таблице, где НЕТ того, что мы ищем (например, если искать «единицу» на «Листе3» Вашего примера), формула выдаёт ошибку Н/Д. И это свойство можно использовать.
Функция ЕСЛИОШИБКА проверяет то, что мы вводим. И если наша функция внутри ЕСЛИОШИБКИ выдает, например, Н/Д, то ЕСЛИОШИБКА выдаст нам второе значение, записанное через точку с запятой. И моя формула построена следующим образом:
= ЕСЛИОШИБКА (*искать в первой таблице* ; *если не нашли в первой таблице, ищем во второй* )
При этом внутрь условного куска *если не нашли в первой таблице, ищем во второй* можно вложить вторую ЕСЛИОШИБКА для просмотра ещё одной таблицы. Что я и сделал. Получилось:
= ЕСЛИОШИБКА (*искать в первой таблице* ; ЕСЛИОШИБКА ( *искать во второй таблице* ; *искать в третьей таблице) )
При этом таких вложений из ЕСЛИОШИБКА можно сделать не ограниченное количество.
Замечу, что важно закрепить каждую таблицу внутри ВПР долларами, прибить гвоздями так сказать, чтобы не уехала таблица при протяжке формулы вниз.
Ингвар, подходит Вам такое решение?
Как быстро найти значение на нескольких листах или в книгах?
Вы когда-нибудь задумывались о поиске определенного значения на нескольких листах или книгах в Excel? В этом руководстве представлены различные методы решения проблем, связанных с поиском на нескольких листах или поиском в нескольких книгах.
Поиск значения на нескольких листах книги с помощью функции поиска и замены
Искать значение во всех книгах папки с VBA
Быстрый поиск значения в нескольких открытых книгах с помощью Kutools for Excel
С помощью Excel Найти и заменить функция, вы можете найти определенное значение на нескольких листах.
1. Выберите несколько вкладок листов, на которых вы хотите найти значение, удерживая Ctrl и щелкнув листы в Панель вкладок листа по одному. Смотрите скриншот:
2. Затем нажмите Ctrl + F для Найти и заменить окна и введите значение, которое вы хотите найти, в Найти то, что текстовое поле под Найти Вкладка, а затем нажмите кнопку Найти все кнопку, чтобы просмотреть все результаты. Смотрите скриншот:
Если вы хотите найти значение во всех закрытых книгах из папки, вы можете применить только VBA для его решения.
1. Включите новую книгу и выберите ячейку, затем нажмите Alt + F11 ключи для открытия Microsoft Visual для базовых приложений окно.
2. Нажмите Вставить > Модули и вставьте ниже VBA в новое окно модуля.
VBA: поиск значения во всех книгах папки.
Sub SearchFolders()
'UpdatebyKutoolsforExcel20200913
Dim xFso As Object
Dim xFld As Object
Dim xStrSearch As String
Dim xStrPath As String
Dim xStrFile As String
Dim xOut As Worksheet
Dim xWb As Workbook
Dim xWk As Worksheet
Dim xRow As Long
Dim xFound As Range
Dim xStrAddress As String
Dim xFileDialog As FileDialog
Dim xUpdate As Boolean
Dim xCount As Long
Dim xAWB As Workbook
Dim xAWBStrPath As String
Dim xBol As Boolean
Set xAWB = ActiveWorkbook
xAWBStrPath = xAWB.Path & "" & xAWB.Name
On Error GoTo ErrHandler
Set xFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
xFileDialog.AllowMultiSelect = False
xFileDialog.Title = "Select a forlder"
If xFileDialog.Show = -1 Then
xStrPath = xFileDialog.SelectedItems(1)
End If
If xStrPath = "" Then Exit Sub
xStrSearch = "KTE"
xUpdate = Application.ScreenUpdating
Application.ScreenUpdating = False
Set xOut = Worksheets.Add
xRow = 1
With xOut
.Cells(xRow, 1) = "Workbook"
.Cells(xRow, 2) = "Worksheet"
.Cells(xRow, 3) = "Cell"
.Cells(xRow, 4) = "Text in Cell"
Set xFso = CreateObject("Scripting.FileSystemObject")
Set xFld = xFso.GetFolder(xStrPath)
xStrFile = Dir(xStrPath & "*.xls*")
Do While xStrFile <> ""
xBol = False
If (xStrPath & "" & xStrFile) = xAWBStrPath Then
xBol = True
Set xWb = xAWB
Else
Set xWb = Workbooks.Open(Filename:=xStrPath & "" & xStrFile, UpdateLinks:=0, ReadOnly:=True, AddToMRU:=False)
End If
For Each xWk In xWb.Worksheets
If xBol And (xWk.Name = .Name) Then
Else
Set xFound = xWk.UsedRange.Find(xStrSearch)
If Not xFound Is Nothing Then
xStrAddress = xFound.Address
End If
Do
If xFound Is Nothing Then
Exit Do
Else
xCount = xCount + 1
xRow = xRow + 1
.Cells(xRow, 1) = xWb.Name
.Cells(xRow, 2) = xWk.Name
.Cells(xRow, 3) = xFound.Address
.Cells(xRow, 4) = xFound.Value
End If
Set xFound = xWk.Cells.FindNext(After:=xFound)
Loop While xStrAddress <> xFound.Address
End If
Next
If Not xBol Then
xWb.Close (False)
End If
xStrFile = Dir
Loop
.Columns("A:D").EntireColumn.AutoFit
End With
MsgBox xCount & " cells have been found", , "Kutools for Excel"
ExitHandler:
Set xOut = Nothing
Set xWk = Nothing
Set xWb = Nothing
Set xFld = Nothing
Set xFso = Nothing
Application.ScreenUpdating = xUpdate
Exit Sub
ErrHandler:
MsgBox Err.Description, vbExclamation
Resume ExitHandler
End Sub
3. Затем нажмите F5 ключа или Run кнопку для выполнения этого VBA и Выберите папку Появится диалоговое окно, напоминающее вам о выборе папки, в которой вы хотите искать значение. Смотрите скриншот:
4. Затем щелкните OK и другое диалоговое окно появляется, чтобы напомнить вам, сколько ячеек было найдено. Смотрите скриншот:
5. Нажмите OK в Закрыть его, и все найденные ячейки будут перечислены на текущем листе с соответствующей информацией.
Наконечник: В приведенном выше VBA вы ищете значение «КТЕ», и вы можете изменить «КТЕ» из этого xStrSearch = «КТЭ« на другое значение по мере необходимости.
Если вы просто хотите найти значение в нескольких открытых книгах, вы можете использовать Kutools for Excel»продвинутый Найти и заменить утилита.
После бесплатная установка Kutools for Excel, пожалуйста, сделайте следующее:
1. В одной из открытых книг щелкните Кутулс > Навигация, а затем нажмите Найти и заменить кнопка идти на Найти и заменить панель. Смотрите скриншот:
2. Затем нажмите Найти вкладка и введите значение, которое вы хотите найти в Найти то, что текстовое поле, а затем выберите Все книги из В раскрывающийся список и нажмите Найти все чтобы перечислить все найденные ячейки. Смотрите скриншот:
Наконечник:
Работы С Нами Kutools for Excelпродвинутый Найти и заменить Утилита, вы можете искать и заменять значения на выбранных листах в нескольких книгах, во всех книгах, активной книге, активном листе или выборе.
Относительные статьи:
- Как быстро найти и заменить на нескольких листах или во всей книге?
- Как быстро найти и заменить в нескольких открытых файлах Excel?
- Как найти наибольшее отрицательное значение (меньше 0) в Excel?
- Как извлечь все дубликаты из столбца в Excel?
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).
Описание
В этой статье приведены пошаговые инструкции по поиску данных в таблице (или диапазоне ячеек) с помощью различных встроенных функций Microsoft Excel. Для получения одного и того же результата можно использовать разные формулы.
Создание образца листа
В этой статье используется образец листа для иллюстрации встроенных функций Excel. Рассматривайте пример ссылки на имя из столбца A и возвращает возраст этого человека из столбца C. Чтобы создать этот лист, введите указанные ниже данные в пустой лист Excel.
Введите значение, которое вы хотите найти, в ячейку E2. Вы можете ввести формулу в любую пустую ячейку на том же листе.
A |
B |
C |
D |
E |
||
1 |
Имя |
Правитель |
Возраст |
Поиск значения |
||
2 |
Анри |
501 |
Плот |
Иванов |
||
3 |
Стэн |
201 |
19 |
|||
4 |
Иванов |
101 |
максималь |
|||
5 |
Ларри |
301 |
составляет |
Определения терминов
В этой статье для описания встроенных функций Excel используются указанные ниже условия.
Термин |
Определение |
Пример |
Массив таблиц |
Вся таблица подстановки |
A2: C5 |
Превышающ |
Значение, которое будет найдено в первом столбце аргумента «инфо_таблица». |
E2 |
Просматриваемый_массив |
Диапазон ячеек, которые содержат возможные значения подстановки. |
A2: A5 |
Номер_столбца |
Номер столбца в аргументе инфо_таблица, для которого должно быть возвращено совпадающее значение. |
3 (третий столбец в инфо_таблица) |
Ресулт_аррай |
Диапазон, содержащий только одну строку или один столбец. Он должен быть такого же размера, что и просматриваемый_массив или Лукуп_вектор. |
C2: C5 |
Интервальный_просмотр |
Логическое значение (истина или ложь). Если указано значение истина или опущено, возвращается приближенное соответствие. Если задано значение FALSE, оно будет искать точное совпадение. |
ЛОЖЬ |
Топ_целл |
Это ссылка, на основе которой вы хотите основать смещение. Топ_целл должен ссылаться на ячейку или диапазон смежных ячеек. В противном случае функция СМЕЩ возвращает #VALUE! значение ошибки #ИМЯ?. |
|
Оффсет_кол |
Число столбцов, находящегося слева или справа от которых должна указываться верхняя левая ячейка результата. Например, значение «5» в качестве аргумента Оффсет_кол указывает на то, что верхняя левая ячейка ссылки состоит из пяти столбцов справа от ссылки. Оффсет_кол может быть положительным (то есть справа от начальной ссылки) или отрицательным (то есть слева от начальной ссылки). |
Функции
LOOKUP ()
Функция Просмотр находит значение в одной строке или столбце и сопоставляет его со значением в той же позицией в другой строке или столбце.
Ниже приведен пример синтаксиса формулы подСТАНОВКи.
= Просмотр (искомое_значение; Лукуп_вектор; Ресулт_вектор)
Следующая формула находит возраст Марии на листе «образец».
= ПРОСМОТР (E2; A2: A5; C2: C5)
Формула использует значение «Мария» в ячейке E2 и находит слово «Мария» в векторе подстановки (столбец A). Формула затем соответствует значению в той же строке в векторе результатов (столбец C). Так как «Мария» находится в строке 4, функция Просмотр возвращает значение из строки 4 в столбце C (22).
Примечание. Для функции Просмотр необходимо, чтобы таблица была отсортирована.
Чтобы получить дополнительные сведения о функции Просмотр , щелкните следующий номер статьи базы знаний Майкрософт:
Использование функции Просмотр в Excel
ВПР ()
Функция ВПР или вертикальный просмотр используется, если данные указаны в столбцах. Эта функция выполняет поиск значения в левом столбце и сопоставляет его с данными в указанном столбце в той же строке. Функцию ВПР можно использовать для поиска данных в отсортированных или несортированных таблицах. В следующем примере используется таблица с несортированными данными.
Ниже приведен пример синтаксиса формулы ВПР :
= ВПР (искомое_значение; инфо_таблица; номер_столбца; интервальный_просмотр)
Следующая формула находит возраст Марии на листе «образец».
= ВПР (E2; A2: C5; 3; ЛОЖЬ)
Формула использует значение «Мария» в ячейке E2 и находит слово «Мария» в левом столбце (столбец A). Формула затем совпадет со значением в той же строке в Колумн_индекс. В этом примере используется «3» в качестве Колумн_индекс (столбец C). Так как «Мария» находится в строке 4, функция ВПР возвращает значение из строки 4 В столбце C (22).
Чтобы получить дополнительные сведения о функции ВПР , щелкните следующий номер статьи базы знаний Майкрософт:
Как найти точное совпадение с помощью функций ВПР или ГПР
INDEX () и MATCH ()
Вы можете использовать функции индекс и ПОИСКПОЗ вместе, чтобы получить те же результаты, что и при использовании поиска или функции ВПР.
Ниже приведен пример синтаксиса, объединяющего индекс и Match для получения одинаковых результатов поиска и ВПР в предыдущих примерах:
= Индекс (инфо_таблица; MATCH (искомое_значение; просматриваемый_массив; 0); номер_столбца)
Следующая формула находит возраст Марии на листе «образец».
= ИНДЕКС (A2: C5; MATCH (E2; A2: A5; 0); 3)
Формула использует значение «Мария» в ячейке E2 и находит слово «Мария» в столбце A. Затем он будет соответствовать значению в той же строке в столбце C. Так как «Мария» находится в строке 4, формула возвращает значение из строки 4 в столбце C (22).
Обратите внимание Если ни одна из ячеек в аргументе «число» не соответствует искомому значению («Мария»), эта формула будет возвращать #N/А.
Чтобы получить дополнительные сведения о функции индекс , щелкните следующий номер статьи базы знаний Майкрософт:
Поиск данных в таблице с помощью функции индекс
СМЕЩ () и MATCH ()
Функции СМЕЩ и ПОИСКПОЗ можно использовать вместе, чтобы получить те же результаты, что и функции в предыдущем примере.
Ниже приведен пример синтаксиса, объединяющего смещение и сопоставление для достижения того же результата, что и функция Просмотр и ВПР.
= СМЕЩЕНИЕ (топ_целл, MATCH (искомое_значение; просматриваемый_массив; 0); Оффсет_кол)
Эта формула находит возраст Марии на листе «образец».
= СМЕЩЕНИЕ (A1; MATCH (E2; A2: A5; 0); 2)
Формула использует значение «Мария» в ячейке E2 и находит слово «Мария» в столбце A. Формула затем соответствует значению в той же строке, но двум столбцам справа (столбец C). Так как «Мария» находится в столбце A, формула возвращает значение в строке 4 в столбце C (22).
Чтобы получить дополнительные сведения о функции СМЕЩ , щелкните следующий номер статьи базы знаний Майкрософт:
Использование функции СМЕЩ
Нужна дополнительная помощь?
Определенно легче вести поиск по одной пусть большой, но целой таблице или в смежных диапазонах ячеек, чем по нескольким разделенным на части таблицами разбросанных по разным несмежным диапазонам или даже по отдельным листам. Даже если выполнить автоматический поиск одновременно по нескольким таблицам, то могут возникнуть существенные препятствия. А слаживать все данные в одну таблицу – это сложно, иногда практически не реально. На конкретном примере продемонстрируем правильное решение для одновременного поиска по нескольким таблицам в Excel.
Одновременный поиск по нескольким диапазонам
Для наглядного примера создадим три простые отдельные таблицы расположенных в несмежных диапазонах одного листа:
Следует выполнить поиск суммы необходимой для производства 20-ти штук продуктов. К сожалению, эти данные находятся в разных столбцах и строках. Поэтому в первую очередь нужно проверить сколько потребуется времени для производства этих продуктов (первая таблица).
На основе полученных данных необходимо сразу перейти к поиску по другой таблице и найти какое количество работников должно быть вовлечено к данному объему производства. Полученный результат должен сравнивается с данными третей таблицы. Таким образом мы за одно операцию поиска по трем таблицам сразу определим необходимые затраты (сумму).
Среднестатистический пользователь Excel искал бы решение с помощью формул основанных таких функциях как ВПР. И выполнял бы поиск в 3 этапа (отдельно для каждой таблицы). Оказывается, можно получить сразу готовый результат выполнив поиск только в 1 этап с помощью специальной формулы. Для этого:
- В ячейке E6 введите значение 20, которое является условием для поискового запроса.
- В ячейке E7 введите следующую формулу:
Готово!
Производственная себестоимость для 20 шт. определенного товара.
Как работает формула с ВПР в нескольких таблицах:
Принцип действия данной формулы основан на поочередном поиске всех аргументов для главной функции ВПР (первой). Сначала третья функция ВПР ищет по первой таблице количество времени необходимое для производства 20 штук продукта указанного в качестве значения для ячейки E6 (которое потом можно изменять при необходимости). Потом вторая функция ВПР ищет значение для первого аргумента главной функции.
В результате поиска третьей функции мы получаем значение 125, которое является первым аргументом для второй функции. Получив все параметры, вторая функция ищет во второй таблице количество требуемых работников для производства. В результате возвращено значение 5, которое дальше будет использовано главной функцией. На основе всех полученных данных формула возвращает финальный результат вычисления. А именно сумму 1750$ необходимую для производства 20 штук определенного товара.
По этом уже принципу можно использовать формулы для функции ВПР из нескольких листов.