Поиск артикула в таблице и сравнение его значений |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Используя таблицы Excel как базу данных, не обойтись без такой функции, как «Найти». Она понадобится для быстрого определения места ключевого слова в каждой строке таблицы.
Как использовать функцию НАЙТИ в Excel
Каждая функция с заполненными аргументами в Excel – это формула, с помощью которой выполняются сложные операции и вычисления в Excel. Перед ее введением ставится знак равенства. Именно так вы дадите знать программе, что вводится именно формула, а не текст и не значение. Функция состоит из двух частей: имени и аргумента.
Каждое название функции в Excel описывает ее операцию и назначение. В данном случае это слово «НАЙТИ».
Аргументов может быть несколько. Они могут быть числовыми, символьными или текстовыми и всегда заключаются в круглые скобки. Если аргументов больше одного, между ними ставится знак «;». Для поиска необходимо использовать следующие аргументы.
- Искомый текст. Сочетание знаков, которые мы разыскиваем в таблице. Это может быть цифро-буквенное сочетание, только цифры или только буквы, пробелы или знаки. Нужно помнить, что функция учитывает введенный регистр. Результаты поиска слов «Мир» и «мир» будут разными.
- Просматриваемый текст. Область поиска может быть указана с помощью мыши. Также ее значения могут быть введены с клавиатуры.
- Начальная позиция (опциональный аргумент). По умолчанию началом поиска признается первая ячейка первой строки таблицы. Вы можете вручную задать номер ячейки, которая будет начальной в процессе поиска.
Синтаксис функции выглядит таким образом:
НАЙТИ(«искомый текст»; просматриваемый текст; [начальная позиция])
Результатом применения функции будет номер места в строке, на котором располагается искомое ключевое слово. Если его нет, выдается символ ошибки #ЗНАЧ!
Примеры использования функции НАЙТИ
Эта формула редко используется самостоятельно. Тем не менее, чтобы наглядно продемонстрировать действие, стоит рассмотреть несколько примеров ее использования.
Пример 1. В таблице 4 столбца по 10 строк. В нее внесены:
- номера по штатному расписанию;
- ФИО работников;
- количество отработанных дней:
- оклад (размер оплаты).
Для отчета нужно выбрать информацию о том, сколько дней отработали и какую оплату получили специалисты, которые работают во вредных условиях, связанных с задымленностью.
Штатное расписание составлено особым образом. Номера рабочих единиц имеют пометку «!». В зависимости от расположения этой пометки можно понять, с какими вредными факторами сталкивается рабочий. Нам нужно отсортировать строки, штатные номера которых имеют пометку «!» на втором месте. Например, 3!7884, 8!6453 или 5!54.
Для этого в ячейку, следующую за последней в первой строчке, нужно ввести функцию НАЙТИ. Она будет выглядеть так.
=НАЙТИ(«!»; A2; 1)
При этом, для указания области поиска можно выделить столбец с номерами. По окончанию набора функции, нажмите Enter. В ячейке появится номер места, на котором располагается пометка «!».
Теперь вы сможете выделить и скопировать строки, напротив которых стоит цифра 2 или воспользоваться автофильтром: «ДАННЫЕ»-«Фильтр».
Отчет готов за пару секунд.
Пример 2. В таблице 4 столбца по 10 строк.
В нее сведены артикулы товаров, которые находятся на складе и указаны такие параметры;
- наименование товара;
- цвет;
- цена;
- артикул.
В зависимости от времени поступления на склад они по-разному маркируются. Нужно выбрать информацию по товарам артикулы которых начинаются на буквы «de». Эти буквосочетания встречаются и в других местах артикулов. Важно отсортировать только товары, в артикулах которых оно встречается на первом месте.
Алгоритм действий аналогичный. В ячейке, следующей за последней в первой строке прописываем функцию.
=НАЙТИ(«de»;D2;1)
После нажатия клавиши Enter появляется номер места заданных букв в артикуле товаров. Протянув за нижний угол выделенную ячейку вниз, вы получите аналогичные показатели по всем строкам.
В артикулах товаров, по которым выдана ошибка #ЗНАЧ!, нет заданных букв. Остается выполнить автофильтр, поиск по которым дал результат 1.
Выборка товаров готова.
Пример 3. В таблице 5 строк. В нее введены математические формулы.
Студент готовит шпаргалку на экзамен. Ему нужно выбрать формулы для расчета суммы. Он знает, что в таких формулах на четвертом месте всегда стоит знак «+».
Как всегда, функция прописывается в ячейке, следующей за последней в первой строчке. Формула выглядит так.
=НАЙТИ(«+»; A1; 1)
Нажав Enter, вы получите результат функции.
Теперь можно выбрать формулы, в которых знак суммы находится на 4 месте.
Читайте также: Примеры использования функции НАЙТИ в Excel формулах.
Выбраны все необходимые формулы из списка по критерию – «4» указанном в условии для отбора строк автофильтром Excel.
Все выше описанные примеры применяют функцию НАЙТИ без формул. Но на практике чаще всего она используется как вспомогательная функция для формул с обработкой таблиц в режиме базы данных.
0 / 0 / 0 Регистрация: 07.05.2015 Сообщений: 5 |
|
1 |
|
Нахождение строки по артикулу и вставка всех её значений на новый лист07.05.2015, 17:44. Показов 10740. Ответов 12
Добрый день. Прошу помощи в решение следующей задачи. Есть прайс — лист товаров с уникальным артикулом, ценой, описанием… необходима формула, которая будет искать в старом прайсе строку по значение, и вставлять её все необходимые значения в новый прайс. Пример документа во вложении. Заранее благодарю за помощь
0 |
5942 / 3154 / 698 Регистрация: 23.11.2010 Сообщений: 10,524 |
|
07.05.2015, 19:01 |
2 |
в D, остальное по аналогии Код =ВПР($C5;Лист2!$C$1:$Q$22;2;0)
1 |
0 / 0 / 0 Регистрация: 07.05.2015 Сообщений: 5 |
|
07.05.2015, 19:19 [ТС] |
3 |
Божественно! Спасибо, подскажите, какой аргумент отвечает за аналогию. С этой функцией вообще не знаком.
0 |
5942 / 3154 / 698 Регистрация: 23.11.2010 Сообщений: 10,524 |
|
07.05.2015, 19:26 |
4 |
=ВПР(что_ищем;вся_таблица_в_которой_ищем;номер_сто лбца_из_которого_нужны_данные;соответствие)
0 |
0 / 0 / 0 Регистрация: 07.05.2015 Сообщений: 5 |
|
08.05.2015, 18:41 [ТС] |
5 |
Спасибо за пояснение, но по аналогии сделать не получается. Код =ВПР($C5;Лист2!$C$1:$Q$22;2;0 ) По логике, при изменении двойки на тройку, формула должна работать для столбца E, Но она не работает. Могли бы вы написать примеры для столбцов O, Q, S. БОЛЬШОЕ СПАСИБО!
0 |
5942 / 3154 / 698 Регистрация: 23.11.2010 Сообщений: 10,524 |
|
08.05.2015, 18:48 |
6 |
Не работает, отображается формула вместо значения?
0 |
0 / 0 / 0 Регистрация: 07.05.2015 Сообщений: 5 |
|
08.05.2015, 19:01 [ТС] |
7 |
Да, нужно изменить на числовой?
0 |
5942 / 3154 / 698 Регистрация: 23.11.2010 Сообщений: 10,524 |
|
08.05.2015, 19:02 |
8 |
Смените на Общий.
0 |
0 / 0 / 0 Регистрация: 07.05.2015 Сообщений: 5 |
|
08.05.2015, 19:19 [ТС] |
9 |
Большое спасибо за помощь всё работает. Можно еще один вопрос уже не по теме: есть ли хорошее решение по вставке картинок в ексель из папки. Имена файлов соответствуют артикулам.
0 |
5942 / 3154 / 698 Регистрация: 23.11.2010 Сообщений: 10,524 |
|
08.05.2015, 20:11 |
10 |
поищите по ветке, были такие решения.
0 |
0 / 0 / 0 Регистрация: 29.10.2020 Сообщений: 2 |
|
29.10.2020, 20:51 |
11 |
Fairuza, Здравствуйте , мне очень нужна помощь , как тут быть ? в файле
0 |
ᴁ® 3070 / 1736 / 361 Регистрация: 13.12.2016 Сообщений: 5,939 Записей в блоге: 4 |
|
29.10.2020, 22:02 |
12 |
Neveroff, есть решение вставки картинки в примечание ячейки. При наведении на ячейку всплывает картинка.
0 |
ᴁ® 3070 / 1736 / 361 Регистрация: 13.12.2016 Сообщений: 5,939 Записей в блоге: 4 |
|
29.10.2020, 22:17 |
13 |
пример
0 |
Поиск нужных данных в диапазоне
Как использовать функцию ВПР (VLOOKUP) для поиска и выборки нужных значений из списка мы недавно разбирали. Если вы еще с ней не знакомы — загляните сюда, не пожалейте пяти минут, чтобы сэкономить себе потом несколько часов.
Если же вы знакомы с ВПР, то — вдогон — стоит разобраться с похожими функциями: ИНДЕКС (INDEX) и ПОИСКПОЗ (MATCH), владение которыми весьма облегчит жизнь любому опытному пользователю Excel. Гляньте на следующий пример:
Необходимо определить регион поставки по артикулу товара, набранному в ячейку C16.
Задача решается при помощи двух функций:
=ИНДЕКС(A1:G13;ПОИСКПОЗ(C16;D1:D13;0);2)
Функция ПОИСКПОЗ ищет в столбце D1:D13 значение артикула из ячейки C16. Последний аргумент функции 0 — означает поиск точного (а не приблизительного) соответствия. Функция выдает порядковый номер найденного значения в диапазоне, т.е. фактически номер строки, где найден требуемыый артикул.
Функция ИНДЕКС выбирает из диапазона A1:G13 значение, находящееся на пересечении заданной строки (номер строки с артикулом выдает функция ПОИСКПОЗ) и столбца (нам нужен регион, т.е. второй столбец).
Ссылки по теме
- Использование функции ВПР (VLOOKUP) для поиска и подстановки значений.
- Улучшенная версия функции ВПР (VLOOKUP)
- Многоразовый ВПР
Хитрости »
4 Январь 2016 119720 просмотров
Найти в ячейке любое слово из списка
Предположим, вы получаете от поставщика/заказчика/клиента заполненную таблицу с перечнем продукции:
и эту таблицу необходимо сравнить с артикулами/кодами товара в имеющемся у вас каталоге продукции:
Как видно — в нашем каталоге только артикулы без наименований. У заказчика же помимо артикулов еще и название товара, т.е. много лишнего. И вам надо понять какие товары присутствуют в вашем каталоге, а какие нет:
Стандартных формул в Excel для подобного поиска и сравнения нет. Конечно, можно попробовать применить ВПР с подстановочными символами сначала к одной таблице, а затем к другой. Но если подобную операцию необходимо проделывать раз за разом, то прописывать по несколько формул к каждой таблице прямо скажем — не комильфо.
Поэтому я и решил сегодня продемонстрировать формулу, которая без всяких доп. манипуляций поможет такое сравнение сделать. Чтобы разобраться самостоятельно рекомендую скачать файл:
Скачать файл:
Tips_All_AnyoneOfArray.xls (49,5 KiB, 25 681 скачиваний)
На листе «Заказ» в этом файле таблица, полученная от заказчика, а на листе «Каталог» наши артикулы.
Сама формула на примере файла будет выглядеть так:
=ПРОСМОТР(2;1/ПОИСК(Каталог!$A$2:$A$11;A2);Каталог!$A$2:$A$11)
=LOOKUP(2,1/SEARCH(Каталог!$A$2:$A$11,A2),Каталог!$A$2:$A$11)
эта формула вернет название артикула, если в тексте есть хоть один артикул из каталога и
#Н/Д(#N/A)
если артикул не найден в каталоге.
Прежде чем облагородить эту формулу всякими дополнениями(вроде виде убирания ненужных
#Н/Д(#N/A)
) давайте разберемся как она работает.
Кратко о принципе работы функция
ПРОСМОТР(LOOKUP)
: она берет значение, заданное первым аргументом и ищет его в массиве(диапазоне) из второго аргумента. Как только находит — запоминает его позицию(строку, если угодно) и в итоге возвращает значение, расположенное в этой же позиции в массиве третьего аргумента.
Но у функции есть пара особенностей:
- Она ищет не обязательно именно точное совпадение с искомым, а максимально приближенное к нему. Если точнее — равное или большее искомому.
- Функция ПРОСМОТР(LOOKUP) старается преобразовать непосредственно в массив любое выражение, записанное вторым аргументом.
Этими особенностями мы и будем пользоваться.
Как уже упомянул выше — в качестве диапазона для поиска значения обычно приводится массив ячеек, но т.к. функция ПРОСМОТР(LOOKUP) старается преобразовать непосредственно в массив любое выражение — она вычисляет данное ей выражение 1/ПОИСК(Каталог!$A$2:$A$11;A2), работая в итоге с результатами этого вычисления.
Само же выражение работает следующим образом: ПОИСК(Каталог!$A$2:$A$11;A2) ищет поочередно каждое значение из списка Каталога в ячейке A2(в наименовании артикула из таблицы Заказчика). Если значение найдено, то возвращается номер позиции первого символа найденного значения(т.е. какое-то число). Если значение не найдено — возвращается значение ошибки #ЗНАЧ!(#VALUE!). Т.е. получается следующий массив: {55:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!}
По идее, после того, как функция ПРОСМОТР(LOOKUP) вычислит это выражение, она будет последовательно просматривать результаты функции ПОИСК(SEARCH) в поисках заданного нами искомого значения, пока не найдет значение максимально близкое к искомому(оптимально равное или чуть больше него). Но т.к. функция ПОИСК(SEARCH) может вернуть неизвестно какие по величине значения, мы, чтобы не гадать и не думать над тем, какое число задать для поиска, сначала единицу делим на выражение ПОИСК(Каталог!$A$2:$A$11;A2), чтобы получить массив вида:{0,0181818181818182:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!}
А в качестве искомого значения мы подсовываем функции ПРОСМОТР(LOOKUP) число 2 — т.е. заведомо большее число, чем может вообще встретиться в массиве(т.к. единица, поделенная на любое число будет меньше двух), чем заставляем её найти последнее подходящее совпадение из каталога(т.е. последнее не ошибочное значение). После этого функция ПРОСМОТР(LOOKUP) запомнит эту позицию и вернет значение из массива Каталог!$A$2:$A$11(третий аргумент), записанное в этом массиве для этой позиции.
Вы можете просмотреть этапы вычисления функции самостоятельно для каждой ячейки, я здесь просто приведу этапы чуть в расширенном для понимания виде:
- =ПРОСМОТР(2;1/ПОИСК(Каталог!$A$2:$A$11;A2);Каталог!$A$2:$A$11)
- =ПРОСМОТР(2;
1/{55:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!};
Каталог!$A$2:$A$11) - =ПРОСМОТР(2;{0,0181818181818182:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!:#ЗНАЧ!};Каталог!$A$2:$A$11)
- =ПРОСМОТР(2;
1;
{«FM2-3320″:»CV455689″:»Q5949X»:»CE321A»:»CE322A»:»CE323A»:»00064073″:»CX292708″:»CX292709″:»CX292710″}) - =»FM2-3320″
Теперь немного облагородим функцию и сделаем еще пару реализаций
Реализация 1:
Вместо артикулов и #Н/Д(#N/A) выведем для найденных позиций «Есть», а для отсутствующих «Не найден в каталоге»:
=ЕСЛИ(ЕНД(ПРОСМОТР(2;1/ПОИСК(Каталог!$A$2:$A$11;A2)));»Не найден в каталоге»;»Есть»)
=IF(ISNA(LOOKUP(2,1/SEARCH(Каталог!$A$2:$A$11,A2))),»Не найден в каталоге»,»Есть»)
работа функции проста — с ПРОСМОТР(LOOKUP) разобрались, поэтому остались только ЕНД и ЕСЛИ.
ЕНД(ISNA) проверяет вложенное в неё выражение на предмет ошибки #Н/Д(#N/A). Если ошибка есть — ЕНД возвращает ИСТИНА(TRUE), а если ошибки нет — ЛОЖЬ(FALSE).
ЕСЛИ(IF) проверяет выражение из первого аргумента на выполнение. Если выражение выполняется(т.е. оно равно ИСТИНА(TRUE)), то функция запишет значение из второго аргумента(«Не найден в каталоге»). А если не выполняется(ЛОЖЬ(FALSE)) — то значение из третьего(«Есть»).
Т.е. все вместе получается: если наша основная функция возвращает значение ошибки #Н/Д(#N/A), то мы записываем в ячейку «Не найден в каталоге», в противном случае — «Есть».
Реализация 2:
Вместо #Н/Д выведем «Не найден в каталоге», но при этом если артикулы найдены — выведем названия этих артикулов:
=ЕСЛИОШИБКА(ПРОСМОТР(2;1/ПОИСК(Каталог!$A$2:$A$11;A2);Каталог!$A$2:$A$11);»Нет в каталоге»)
=IFERROR(LOOKUP(2,1/SEARCH(Каталог!$A$2:$A$11,A2),Каталог!$A$2:$A$11),»Нет в каталоге»)
Про функция ЕСЛИОШИБКА(IFERROR) я подробно рассказывал в этой статье: Как в ячейке с формулой вместо ошибки показать 0.
Если вкратце, то функция проверяет выражение, записанное первым аргументом(наша основная функция). Если в итоге получаем любую ошибку, то ЕСЛИОШИБКА запишет значение из второго аргумента(в нашем случае это текст «Не найден в каталоге»). Если же выражение(проверяемая функция) не возвращает ошибку, то функция ЕСЛИОШИБКА запишет именно то значение, которое было получено проверяемой функцией(в нашем случае это будет наименование артикула).
Реализация 3
Надо не просто определить какому артикулу соответствует, но и вывести цену для наименования по этому артикулу(сами цены должны быть расположены в столбце B листа Каталог):
=ЕСЛИОШИБКА(ПРОСМОТР(2;1/ПОИСК(Каталог!$A$2:$A$11;A2);Каталог!$B$2:$B$11);»»)
=IFERROR(LOOKUP(2,1/SEARCH(Каталог!$A$2:$A$11,A2),Каталог!$B$2:$B$11),»»)
Пара важных замечаний:
- данные на листе с артикулами не должны содержать пустых ячеек. Иначе с большой долей вероятности формула будет возвращать значение именно пустой ячейки, а не то, которое подходит под условия поиска
- формула осуществляет поиск таким образом, что ищется любое совпадение. Например, в качестве артикула записана цифра 1, а в строке наименований может встречаться помимо целой 1 еще и 123, 651123, FG1412NM и т.п. Для всех этих наименований может быть подобран артикул 1, т.к. он содержится в каждом наименовании. Как правило это может произойти, если артикул 1 расположен в конце списка
Поэтому желательно перед использованием формулы отсортировать список по возрастанию(от меньшего к большему, от А до Я).
В приложенном в начале статьи примере вы найдете все разобранные варианты.
Если же вам понадобится выводить все наименования, то можно воспользоваться функцией СОДЕРЖИТ_ОДНО_ИЗ из моей надстройки MulTEx.
Так же см.:
Сравнение текста по части предложения
Что такое формула массива
Как найти значение в другой таблице или сила ВПР
ВПР с поиском по нескольким листам
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика