Как найти первое ненулевое значение в строке эксель
В этой статье описаны синтаксис формулы и использование функций ПОИСК и ПОИСКБ в Microsoft Excel.
Описание
Функции ПОИСК И ПОИСКБ находят одну текстовую строку в другой и возвращают начальную позицию первой текстовой строки (считая от первого символа второй текстовой строки). Например, чтобы найти позицию буквы "n" в слове "printer", можно использовать следующую функцию:
Эта функция возвращает 4, так как "н" является четвертым символом в слове "принтер".
Можно также находить слова в других словах. Например, функция
возвращает 5, так как слово "base" начинается с пятого символа слова "database". Можно использовать функции ПОИСК и ПОИСКБ для определения положения символа или текстовой строки в другой текстовой строке, а затем вернуть текст с помощью функций ПСТР и ПСТРБ или заменить его с помощью функций ЗАМЕНИТЬ и ЗАМЕНИТЬБ. Эти функции показаны в примере 1 данной статьи.
Эти функции могут быть доступны не на всех языках.
Функция ПОИСКБ отсчитывает по два байта на каждый символ, только если языком по умолчанию является язык с поддержкой БДЦС. В противном случае функция ПОИСКБ работает так же, как функция ПОИСК, и отсчитывает по одному байту на каждый символ.
К языкам, поддерживающим БДЦС, относятся японский, китайский (упрощенное письмо), китайский (традиционное письмо) и корейский.
Синтаксис
Аргументы функций ПОИСК и ПОИСКБ описаны ниже.
Искомый_текст Обязательный. Текст, который требуется найти.
Просматриваемый_текст Обязательный. Текст, в котором нужно найти значение аргумента искомый_текст.
Начальная_позиция Необязательный. Номер знака в аргументе просматриваемый_текст, с которого следует начать поиск.
Замечание
Функции ПОИСК и ПОИСКБ не учитывают регистр. Если требуется учитывать регистр, используйте функции НАЙТИ и НАЙТИБ.
В аргументе искомый_текст можно использовать подстановочные знаки: вопросительный знак (?) и звездочку (*). Вопросительный знак соответствует любому знаку, звездочка — любой последовательности знаков. Если требуется найти вопросительный знак или звездочку, введите перед ним тильду (
Если аргумент начальная_позиция опущен, то он полагается равным 1.
Аргумент начальная_позиция можно использовать, чтобы пропустить определенное количество знаков. Допустим, что функцию ПОИСК нужно использовать для работы с текстовой строкой "МДС0093.МужскаяОдежда". Чтобы найти первое вхождение "М" в описательной части текстовой строки, задайте для аргумента начальная_позиция значение 8, чтобы поиск не выполнялся в той части текста, которая является серийным номером (в данном случае — "МДС0093"). Функция ПОИСК начинает поиск с восьмого символа, находит знак, указанный в аргументе искомый_текст, в следующей позиции, и возвращает число 9. Функция ПОИСК всегда возвращает номер знака, считая от начала просматриваемого текста, включая символы, которые пропускаются, если значение аргумента начальная_позиция больше 1.
Примеры
Скопируйте образец данных из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — клавишу ВВОД. При необходимости измените ширину столбцов, чтобы видеть все данные.
Нужна функция, которая может искать выполнения некоторого условия и возвращать значение либо имя первой подходящей ячейки. Возможно, она есть в Excel "из коробки", просто я о ней не знаю.
Для примера пусть будет РПГ, в которой есть таблица уровней и требуемого для их достижения с самого начала игры опыта, причём нет явной линейной/геометрической прогрессии, чтобы найти ответ без поиска по таблице (пример набран из головы):
Нужно узнать уровень персонажа, если известен его текущий опыт.
Если персонаж получил новый уровень только что (2000 опыта на картинке), то формула была бы =ВПР(B11;$A$2:$B$9;2;ЛОЖЬ)
однако персонаж после получения уровня успел набрать некоторое количество опыта и ВПР в данном случае не справляется.
Более приближённый к жизни пример: есть список ёмкостей для жидкостей и некоторое количество жидкости, которая должна быть вся налита в одну из ёмкостей. Как найти самую маленькую ёмкость, которой будет достаточно?
UPD:
Справился сам, но решение мне кажется кривоватым.
1. Если опыт отсортирован по возрастанию то формула выдаст, в какой сверху ячейке она нашла то, что нужно. Условие для поиска - "< < < https://habrastorage.org/web/f91/96a/ed0/f9196aed08464f0bb32e041031347a88.jpg" alt="f9196aed08464f0bb32e041031347a88.jpg"/>
В примере с ёмкостями при таком подходе нужно использовать "меньше" вместо "меньше или равно" и прибавлять 1.
- Вопрос задан более трёх лет назад
- 723 просмотра
1. СЧЁТЕСЛИ выдаст, в какой сверху ячейке условие было нарушено - надо написать обратное условие.
В данном случае вместо больше меньше: "< < < https://habrastorage.org/web/f91/96a/ed0/f9196aed08464f0bb32e041031347a88.jpg" alt="f9196aed08464f0bb32e041031347a88.jpg"/>
В примере с ёмкостями при таком подходе нужно использовать "меньше" вместо "меньше или равно" и прибавлять 1. Значения в столбце А обязательно должны быть отсортированы по возрастанию.
A1:F11 - рабочая таблица
Н2 - поисковая ячейка
H6=АДРЕС (СУММПРОИЗВ ((A1:F11=H2)*СТРОКА (A1:F11));СУММПРОИЗВ ((A1:F11=H2)*СТОЛБЕЦ (A1:F11))
А далее можно монстрячить всякое непотребство с ДВССЫЛ (в формате RC будет удобнее если в рассчётах участвуют и столбцы):
=СЧЁТЗ(ДВССЫЛ("A"&"2"):ДВССЫЛ("B"&"9"))
Если вам нужно получить первое не пустое значение (текст или число) в диапазоне в одной колонке вы можете использовать формулу массива на основе функций ИНДЕКС, ПОИСКПОЗ и ЕПУСТО.
В данном примере мы используем эту формулу:
Таким образом, суть проблемы заключается в следующем: мы хотим получить первую не пустую ячейку, но для этого нет конкретной формулы в Excel. Мы могли бы использовать ВПР с шаблоном *, но это будет работать только для текста, а не для чисел.
Работая изнутри, ЕПУСТО оценивает ячейки в диапазоне В3: В11 и возвращает результат и массив, который выглядит следующим образом:
Каждая ЛОЖЬ представляет собой ячейку в диапазоне, который не является пустой.
Далее, ПОИСКПОЗ ищет ЛОЖЬ внутри массива и возвращает позицию первого наденного совпадения, в этом случае 2. На данный момент, формула в примере теперь выглядит следующим образом:
И, наконец, функция ИНДЕКС выводит значение в положении 2 в массиве, в этом случае число 10.
Получить первое текстовое значение в списке
Если вам нужно получить первое текстовое значение в списке (диапазон один столбец), вы можете использовать функцию ВПР, чтобы установить точное соответствие, с шаблонным символом для поиска.
В данном примере формула в D7 является:
Групповой символ звездочка (*) соответствует любому текстовому значению.
Получить первое текстовое значение с ГПР
Для поиска и получения первого текстового значения во всем диапазоне столбцов, вы можете использовать функцию ГПР с групповым символом. В примере формула в F5 является:
Получить позицию последнего совпадения
Для того, чтобы получить позицию последнего совпадения (т.е. последнего вхождения) от значения поиска, вы можете использовать формулу, основанную на ЕСЛИ, СТРОКА, ИНДЕКС, ПОИСКПОЗ и MAКС функций.
В примере формула в G6:
Суть этой формулы состоит в том, что мы строим список номеров строк для данного диапазона, соответствующие по значению, а затем используем функцию MAКС, чтобы получить наибольшее количество строк, что соответствует последнему значению соответствия.
Получить последнее совпадение содержимого ячейки
= ПРОСМОТР( 2 ; 1 / ПОИСК ( вещи ; А1 ); вещи )
Чтобы проверить ячейку для одной из нескольких вещей, и вернуть последнее совпадение, найденное в списке, вы можете использовать формулу, основанную на ПРОСМОТР и ПОИСК функций. В случае нескольких найденных совпадений, формула вернет последнее совпадение из списка «вещей».
В примере формула в С5:
Получить n-е совпадение
Для того, чтобы получить позицию n-го совпадения (например, второе значение соответствия заданному, третье значение соответствия и т.д.), вы можете использовать формулу, основанную на функции НАИМЕНЬШИЙ.
Получить n-ое совпадение с ИНДЕКС/ПОИСКПОЗ
Чтобы получить n-ое совпадение, используя ИНДЕКС и ПОИСКПОЗ, вы можете использовать формулу массива с функциями ЕСЛИ и НАИМЕНЬШИЙ, чтобы выяснить номер строки совпадения.
Получить n-ое совпадение с ВПР
Чтобы получить n-ое совпадение с ВПР, вам необходимо добавить вспомогательный столбец в таблицу , которая строит уникальный идентификатор , который включает счетчик.
Эта формула зависит от вспомогательного столбца, который добавляется в качестве первого столбца таблицы исходных данных. Вспомогательный столбец содержит формулу, которая строит уникальное значение взгляда вверх от существующего идентификатора и счетчика. Счетчик подсчитывает сколько раз уникальный идентификатор появился в таблице данных.
В примере, формула ячейки J6 вспомогательного столбца выглядит следующим образом:
Если ячейка содержит одну из многих вещей
Чтобы проверить ячейку для одной из нескольких вещей, и вернуть пользовательский результат для первого найденного совпадения, вы можете использовать формулу ИНДЕКС/ПОИСКПОЗ, основанную на функции поиска.
Поиск первой ошибки
Если вам нужно найти первую ошибку в диапазоне ячеек, вы можете использовать формулу массива, основанную на ПОИСКПОЗ и ЕОШИБКА функциях.
В приведенном примере формула:
Работая изнутри, функция ЕОШИБКА возвращает значение ИСТИНА, если значение является признанной ошибкой, и ЛОЖЬ, если нет.
Когда дается диапазон ячеек (массив ячеек) функция ЕОШИБКА будет возвращать массив истина/ложь значений. В примере, это результирующий массив выглядит следующим образом:
Поиск следующего наибольшего значения
=ИНДЕКС ( данные; ПОИСКПОЗ( поиск ; значения ) + 1 )
Несколько совпадений в списке, разделенных запятой
Для поиска и извлечения нескольких совпадений, разделенных запятыми (в одной ячейке), вы можете использовать функцию ЕСЛИ с функцией ОБЪЕДИНИТЬ.
Частичное совпадение чисел с шаблоном
Для того, чтобы выполнить частичное совпадение (подстроки) против чисел, вы можете использовать формулу массива, основанную на ПОИСКПОЗ и ТЕКСТ.
Если попытаться найти текстовое значение в диапазоне чисел, совпадение завершится неудачно.
Решение
Одно из решений заключается в преобразовании чисел в диапазоне поиска для текстовых значений, а затем сделать нормальный поиск с ПОИСКПОЗ, ВПР и т.д.
Другой вариант
Другой способ, чтобы преобразовать числа в текст, чтобы сцепить пустую строку. Эта формула работает так же, как выше формуле:
Частичное совпадение с ВПР
Если вы хотите получить информацию из таблицы на основе частичного совпадения, вы можете сделать это с помощью ВПР в режиме точного соответствия, и групповые символы.
В примере формула ВПР выглядит следующим образом:
В этой формуле, значение представляет собой именованный диапазон, который относится к Н2, а также данные , представляет собой именованный диапазон , который относится к B3: E102. Без названных диапазонов, формула может быть записана следующим образом:
Положение первого частичного совпадения
Для того, чтобы получить позицию первого частичного совпадения (то есть ячейку, которая содержит текст, который вы ищете), вы можете использовать функцию ПОИСКПОЗ со специальными символами.
В примере формула в Е7:
В данной статье, на примерах, рассмотрим как работает функция ПОИСКПОЗ в Excel. Данная функция осуществляет поиск искомого значения в указном диапазоне ячеек. Как результат, функция возвращает позицию искомого значения в указанном диапазоне ячеек. При этом поиск с помощью функции ПОИСКПОЗ может осуществляться только в одном столбце или в одной строке.
Как вызвать функцию ПОИСКПОЗ в Excel.
Перед тем как вызвать функцию ПОИСКПОЗ необходимо определить ячейку, в которой она будет располагаться. Это можно сделать щелкнув левой клавишей мыши по выбранной ячейки. Далее нажимаем на кнопку Вставить функцию. Открывается диалоговое окно Вставка функции. Здесь в поле Выберите функцию: выбираем нужную нам функцию. Если в предложенном перечни функций интересующей нас функции нет, необходимо воспользоваться поиском.
Использование функции ПОИСКПОЗ для поиска позиции ячейки с текстовым значением.
У нас есть список имен. Данные имена расположены в одном столбце. Наша задача найти позицию (номер по порядку) определенного имени в этом списке. После того, как мы выбрали необходимую нам функцию в диалоговом окне Вставка функции, откроется диалоговое окно Аргументы функции.
В данном диалогом окне три поля:
ВАЖНО: позиция (порядковый номер) искомого значения в анализируемом диапазоне является относительным, так как функция рассчитывает позицию, отсчитывая порядковый номер от начала анализируемого диапазона ячеек.
Нажимаем ОК.
Функция вернула значение 5. Это значит, что имя Петр находиться в пятой по счету ячейки, в столбце В2:В13. При этом отсчёт видеться от ячейки В2.
Данный список имен можно разместить в одной строке и применив функцию ПОИСКПОЗ, по такому же алгоритму, найти позицию (номер по порядку) того или иного значения.
Использование функции ПОИСКПОЗ для поиска позиции ячейки с числовым значением.
Тип_сопоставления: 0. Функция ПОИСКПОЗ в Excel.
Нажимаем ОК.
Функция вернула значение 8. Это значит, что число 55 находиться в восьмой по счету ячейки.
Тип_сопоставления: 1. Функция ПОИСКПОЗ в Excel.
Нажимаем ОК.
Функция вернула значение 6. Это позиция числа 32. Поскольку в анализируемом диапазоне нет числа 40, ПОИСКПОЗ вернула позицию числа, которое меньше числа 40 (Искомое_значение). При этом оно наибольшее среди чисел, которые меньше числа 40.
Нажимаем ОК.
Функция вернула значение 6. Это позиция числа 45. Поскольку в анализируемом диапазоне нет числа 40, ПОИСКПОЗ вернула позицию числа, которое больше числа 40 (Искомое_значение). При этом оно наименьшее среди чисел, которые больше числа 40.
Использование функции ПОИСКПОЗ с ссылкой на ячейку.
Вернемся к списку имен. В диалоговом окне Аргументы функции, в поле Искомое_значение, укажем не само значение, а ссылку на ячейку. Например, ячейку: С2. Просматриваемый _массив: В2:В13. Тип_сопоставления: 0.
Нажимаем ОК.
Теперь в ячейку С2 вводим значение (имя): Глеб.
Функция вернула нам позицию имени Глеб в анализируемом диапазоне ячеек. Таким образом можно менять Искомое_значение, при этом не меняя его в самой формуле функции ПОИСКПОЗ.
Читайте также: