Нужна аналогичная программа (надстройка, макрос) для Excel?
Оформите заказ, не забыв прикрепить примеры файлов, и описать, что и как должно работать.
- Простые макросы
- Надстройки Excel
- Создание отчётов
- Поиск в Excel
- Панель инструментов
Надстройка SearchExcel предназначена для поиска заданного текста во всех столбцах текущего листа Excel, с выводом результатов поиска на отдельный лист.
При запуске надстройка формирует панель инструментов, с которой осуществляется запуск всех макросов:
Назначение кнопок надстройки:
— поле для ввода искомого текста. Нажатие клавиши Enter запускает поиск.
— удаление листа с результатами поиска. (выполняется автоматически при повторном поиске)
— кнопки для включения (красная) и выключения (белая) режима подсветки значений, больших, чем введенное число
(число запрашивается в диалоговом окне при нажатии на красную лампочку)
При запуске поиска (вводе числа в текстовое поле, и нажатии Enter) макрос создаёт в текущем файле дополнительный лист (с названием «Результаты поиска»),
и копирует на этот лист все строки, в которых содержится заданный текст.
Выполняется поиск по частичному совпадению текста (т.е., при поиске текста 1234 будут найдены ячейки, содержащие числа 12345, 5612348 и т.д.)
На листе с результатами поиска устанавливается ширина столбцов, совпадающая с шириной столбцов исходного листа.
Бонус: функция окраски ячеек со значениями больше введённого.
При нажатии на «красную лампочку» появляется диалоговое окно для ввода числа:
После ввода числа всем ячейкам текущего столбца (того, в котором установлен курсор) назначается правило условного форматирования:
если значение больше заданного, то заливка таких ячеек меняется на красную.
Если при вводе числа была нажата кнопка «Отмена» (или клавиша ESC), то выполняется обратное действие:
удаление всех правил условного форматирования для ячеек текущего столбца
(кнопка с белой лампочкой выполняет аналогичное действие)
- 47047 просмотров
Поиск в программе 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?
Многие сталкивались с файлами Ексель, в которых создано огромное количество
Задать вопрос
@Acvoloe
-
Excel
Всем привет!
Как можно в excel вывести список результатов поиска в отдельный лист ?
-
Вопрос заданболее трёх лет назад
-
463 просмотра
Комментировать
Подписаться
1
Простой
Комментировать
Решения вопроса 1
@res2001
Developer, ex-admin
Используйте автофильтр, а потом копирование/вставка по фильтру.
Ответ написан
более трёх лет назад
Комментировать
Комментировать
Пригласить эксперта
Ответы на вопрос 0
Ваш ответ на вопрос
Войдите, чтобы написать ответ
Войти через центр авторизации
Похожие вопросы
-
-
JavaScript
- +3 ещё
Сложный
Как в Excel для Интернет генерировать документы Word по шаблону?
-
1 подписчик -
вчера
-
56 просмотров
0
ответов
-
-
-
Excel
Простой
Как реализовать формирование документа?
-
1 подписчик -
14 апр.
-
18 просмотров
1
ответ
-
-
-
Excel
- +1 ещё
Простой
Почему в libre office calc работает =ГИПЕРССЫЛКА но не работает =HYPERLINK?
-
1 подписчик -
14 апр.
-
24 просмотра
1
ответ
-
-
-
Excel
- +2 ещё
Простой
Как в макросе Word исправить удаление форматирования текста при его выполнении?
-
1 подписчик -
13 апр.
-
25 просмотров
0
ответов
-
-
-
Excel
Простой
Как удалить текст справа до запятой excel?
-
1 подписчик -
13 апр.
-
30 просмотров
1
ответ
-
-
-
C#
- +2 ещё
Простой
Как можно копировать excel файл при помощи c# в winforms?
-
1 подписчик -
12 апр.
-
69 просмотров
2
ответа
-
-
-
Excel
- +1 ещё
Простой
Какую роль выполняет команда Call в языке VBA?
-
1 подписчик -
12 апр.
-
28 просмотров
2
ответа
-
-
-
Регулярные выражения
- +2 ещё
Простой
Какое регулярное выражение использовать, что бы достать из текста все цифры?
-
1 подписчик -
10 апр.
-
80 просмотров
4
ответа
-
-
-
C#
- +2 ещё
Средний
Запускаю программу и хочу добавить в ячейку A1 Excel значение из textBox1, но программа выводит ошибку доступа. Как можно исправить эту ошибку?
-
1 подписчик -
09 апр.
-
58 просмотров
1
ответ
-
-
-
Excel
Простой
Как сделать правильно выборку?
-
1 подписчик -
09 апр.
-
20 просмотров
1
ответ
-
-
Показать ещё
Загружается…
Вакансии с Хабр Карьеры
BI аналитик
Лоция
•
Москва
от 100 000 до 120 000 ₽
Контент менеджер
ULHC
от 16 000 до 45 000 ₽
Специалист по управлению геолого-промысловыми данными (Data Scientist)
Тюменский нефтяной научный центр
•
Тюмень
от 80 000 до 150 000 ₽
Ещё вакансии
Заказы с Хабр Фриланса
Ищу готовый Crypto Wallet
16 апр. 2023, в 16:39
80000 руб./за проект
Переписать скрипт с Python на Java с дополнениями
16 апр. 2023, в 14:44
4500 руб./за проект
Перерисовать изображение в векторе
16 апр. 2023, в 13:46
1000 руб./за проект
Ещё заказы
Минуточку внимания
Присоединяйтесь к сообществу, чтобы узнавать новое и делиться знаниями
Зарегистрироваться
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации
Найдем текстовые значения, удовлетворяющие заданному пользователем критерию. Поиск будем осуществлять в диапазоне с повторяющимися значениями. При наличии повторов, можно ожидать, что критерию будет соответствовать несколько значений. Для их вывода в отдельный диапазон удобно использовать формулы массива.
Пусть Исходный список значений (например, перечень инструментов) находится в диапазоне
A10:A19
(см.
Файл примера
).
Задача
Выведем в отдельный диапазон значения, которые удовлетворяют критерию. Рассмотрим различные варианты поиска.
А. Найти значения, которые содержат критерий
Для удобства создадим
именованный диапазон
Список
.
Диапазон может охватить в том числе и незаполненные ячейки перечня. В дальнейшем пользователь может расширить перечень инструментов, указанные ниже формулы автоматически учтут новые значения.
Выведем в отдельный диапазон все значения Исходного списка, в которых
содержится
текст-критерий (например, слово
дрель
). Критерий вводится в ячейку
С6
.
Для создания списка, содержащего найденные значения, воспользуемся
формулой массива
:
=ИНДЕКС(Список; НАИМЕНЬШИЙ( ЕСЛИ(ЕСЛИОШИБКА(ПОИСК($C$6;Список);0)>0;СТРОКА(Список)-СТРОКА($A$9);30); СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК(Список)))))
Алгоритм работы формулы следующий (для просмотра промежуточных шагов работы формулы воспользуйтесь
клавишей
F9
):
-
Функция
ПОИСК()
, перебирая элементы исходного списка, определяет, содержится ли в нем значение-критерий. Если значение не содержится, то возвращается ошибка #ЗНАЧ! В противном случае возвращается числовое значение, соответствующее номеру начальной позиции вхождения критерия в значение из списка (здесь нам не важен номер позиции, важно, что это число); -
Функция
ЕСЛИОШИБКА()
используется для подавления ошибки #ЗНАЧ! заменяя ее на число 0; -
Функция
ЕСЛИ()
заменяет числовые значения, возвращенные функцией
ПОИСК()
, на номер позиции значения в списке. Если значение =0 (соответствует ошибке #ЗНАЧ!), то возвращается число 30. В принципе, вместо 30 можно указать любое число, которое больше номера последней заполненной позиции Исходного списка (это нужно для правильной сортировки функцией
НАИМЕНЬШИЙ()
); -
Функция
НАИМЕНЬШИЙ()
сортирует массив номеров строк по возрастанию; -
Функция
ДВССЫЛ()
возвращаетмассив последовательных чисел
;
-
Функция
ИНДЕКС()
возвращает текстовые значения из Исходного списка, из строк, номера которых были получены на предыдущем шаге.
В предельном случае м.б. найдено столько же значений, сколько содержится в исходном списке (когда все значения удовлетворяют критерию). Поэтому
формулу массива
нужно распространять на диапазон той же размерности, что и исходный список. Вышеуказанная
формула массива будет возвращать несколько значений
, поэтому перед вводом формулы нужно выделить сразу весь диапазон, т.е. ячейки
С10:С19
, ввести формулу в
Строке формул
и нажать
CRTL+SHIFT+ENTER
.
Для скрытия ошибок #ССЫЛКА!, возвращаемой формулой массива, к диапазону
С10:С19
применено правило
Условного форматирования
.
Б. Найти значения, которые совпадают с критерием (точное совпадение)
В этом случае будут выведены все значения, которые совпадают с критерием (без
учета РЕгиСТра
). Критерий вводится в ячейку
E
6
.
Для создания списка, содержащего найденные значения, воспользуемся
формулой массива
:
=ИНДЕКС(Список; НАИМЕНЬШИЙ( ЕСЛИ($E$6=Список;СТРОКА(Список)-СТРОКА($A$9);30); СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК(Список)))))
B. Найти значения, которые начинаются с критерия
В этом случае будут выведены все значения, которые начинаются или совпадают с критерием. Критерий вводится в ячейку
G
6
.
Для создания списка, содержащего найденные значения, воспользуемся
формулой массива
: =
ИНДЕКС(Список;НАИМЕНЬШИЙ( ЕСЛИ(ЕСЛИОШИБКА(ПОИСК($G$6;Список);0)=1;СТРОКА(Список)-СТРОКА($A$9);30); СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК(Список)))))
Г. Найти значения, которые заканчиваются на критерий
В этом случае будут выведены все значения, которые заканчиваются или совпадают с критерием. Критерий вводится в ячейку
I
6
.
Для создания списка, содержащего найденные значения, воспользуемся
формулой массива
:
=ИНДЕКС(Список;НАИМЕНЬШИЙ( ЕСЛИ($I$6=ПРАВСИМВ(Список;ДЛСТР($I$6));СТРОКА(Список)-СТРОКА($A$9);30); СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК(Список)))))
СОВЕТ:
О поиске текстовых значений с использованием
подстановочных знаков
читайте в статье
Поиск текстовых значений в списках. Часть2. Подстановочные знаки
. В статье
Выделение ячеек c ТЕКСТом с применением Условного форматирования
приведено решение аналогичной задачи с использованием
Условного форматирования
.
259 / 7 / 1 Регистрация: 22.01.2013 Сообщений: 47 |
|
1 |
|
Поиск данных в листах и копирование их в отдельные листы23.01.2013, 17:57. Показов 7610. Ответов 14
Есть файл который обновляется каждый день. В нём есть колонка U.
0 |
undefined7 259 / 7 / 1 Регистрация: 22.01.2013 Сообщений: 47 |
||||
24.01.2013, 10:58 [ТС] |
2 |
|||
На форуме нашёл такой код, он частично делает то что нужно, т.е. ищет в определённом столбце нужное слово, и копирует на новый лист.
Что нужно в нём изменить чтобы он брал данные с определённого листа (Лист0) и определённого массива $A$1:$A$100 и для каждой ячейки создавал новый файл?
0 |
5468 / 1148 / 50 Регистрация: 15.09.2012 Сообщений: 3,514 |
|
25.01.2013, 07:34 |
3 |
undefined7, на основе книги из сообщения #1 приведите пример, что должен сделать код. Напишите примерно в таком виде:
1 |
259 / 7 / 1 Регистрация: 22.01.2013 Сообщений: 47 |
|
25.01.2013, 10:23 [ТС] |
4 |
undefined7, на основе книги из сообщения #1 приведите пример, что должен сделать код. Напишите примерно в таком виде:
Дальше он копирует полностью строку в которой находиться это слово на новый лист, идёт дальше, находит ещё раз это слово, опять копирует, и так до конца.
0 |
Скрипт 5468 / 1148 / 50 Регистрация: 15.09.2012 Сообщений: 3,514 |
||||
25.01.2013, 11:36 |
5 |
|||
undefined7, код написан для книги из сообщения #1. Если вы повторно запустите макрос, то будет ошибка, если не удалите листы, сформированные макросом, т.к. нельзя чтобы в книге были листы с одинаковыми именами. Имя листу даётся в коде в пункте 4. Кликните здесь для просмотра всего текста
Примечания В коде использована команда «Find». Она имеет следующие характеристики:
1 |
undefined7 259 / 7 / 1 Регистрация: 22.01.2013 Сообщений: 47 |
||||||||
25.01.2013, 15:58 [ТС] |
6 |
|||||||
огромное спасибо за код, есть ещё пару вопросов: 2. что нужно прописать в код, чтобы если не находило слово из листа0 диапазон A1:A25 добавлял бы в листе с названием «другие».
0 |
5468 / 1148 / 50 Регистрация: 15.09.2012 Сообщений: 3,514 |
|
25.01.2013, 16:06 |
7 |
undefined7, по первому и второму вопросу. Для примера, добавьте в книгу из сообщения #1 два листа и поясните, что нужно.
1 |
259 / 7 / 1 Регистрация: 22.01.2013 Сообщений: 47 |
||
26.01.2013, 14:47 [ТС] |
8 |
|
undefined7, по первому и второму вопросу. Для примера, добавьте в книгу из сообщения #1 два листа и поясните, что нужно. добавил файл 2. что нужно прописать в код, чтобы если не находило слово из листа0 диапазон A1:A25 добавлял бы в листе с названием «другие». Вложения
0 |
5468 / 1148 / 50 Регистрация: 15.09.2012 Сообщений: 3,514 |
|
26.01.2013, 14:51 |
9 |
undefined7, добавьте в книгу новые листы, как будто эти листы сделал макрос. Чтобы посмотреть, что на новых листах должно быть. Добавьте два листа.
1 |
undefined7 259 / 7 / 1 Регистрация: 22.01.2013 Сообщений: 47 |
||||||||||
26.01.2013, 18:20 [ТС] |
10 |
|||||||||
добавил файл.
потом его включаем:
Вложения
0 |
Скрипт 5468 / 1148 / 50 Регистрация: 15.09.2012 Сообщений: 3,514 |
||||
26.01.2013, 18:32 |
11 |
|||
Пункт 1
1. что нужно прописать в данный код, чтобы он в каждом создаваемом листе вставлял ещё: а где в книге из сообщения #10 это? Пункт 2 Ошибка в коде из сообщения #5. Вот так надо:
1 |
undefined7 259 / 7 / 1 Регистрация: 22.01.2013 Сообщений: 47 |
||||
26.01.2013, 20:19 [ТС] |
12 |
|||
Пункт 1
а где в книге из сообщения #10 это? это находиться на листе0, в ячейке A находиться название которое нужно создавать отдельный лист, а далее уже идёт формула — которую нужно прописать в создаваемом листе
Пункт 2
Ошибка в коде из сообщения #5. Вот так надо:
сам нашёл уже, но не смог отредактировать сообщение
0 |
5468 / 1148 / 50 Регистрация: 15.09.2012 Сообщений: 3,514 |
|
26.01.2013, 21:14 |
13 |
undefined7, вы пишите в своих сообщениях, что формулы нужно брать из диапазона столбцов B и P, а у вас формулы на листе Лист0 начинаются в столбце C, а заканчиваются в столбце O. Как это понять?
1 |
259 / 7 / 1 Регистрация: 22.01.2013 Сообщений: 47 |
|
26.01.2013, 21:21 [ТС] |
14 |
undefined7, вы пишите в своих сообщениях, что формулы нужно брать из диапазона столбцов B и P, а у вас формулы на листе Лист0 начинаются в столбце C, а заканчиваются в столбце O. Как это понять? да, вы правы, начиная с C, и тоже в C подаставлять нужно. до O
0 |
Люба1 |
|
28.01.2013, 12:39 |
15 |
Помогите пожалуйста разобраться с кодом: End Sub |