Страницы: 1 2 След.
RSS
Поиск части заданного текста в массиве
 
Очень нужно написать условие для условного форматирования.    
Поиск значения , например "Р", в массиве, при этом текс ищется как часть ячейки, так и полностью. Например, если в какая-то ячейка содержит " барабан", это тоже подходит
 
А что искать нужно, "Р" (эр) или "P" (pi)? Впрочем, я не нашел ни того, ни другого...
 
Условие для УФ - СОДЕРЖИТ "Р"!!!!
 
{quote}{login=RAN}{date=22.01.2011 08:13}{thema=}{post}Условие для УФ - СОДЕРЖИТ "Р"!!!!{/post}{/quote}  
 
Это не подходит, нужно задать массив, где искать. А ячейка, которую надо выделить, этого текста не содержит.
 
{quote}{login=Михаил}{date=22.01.2011 08:06}{thema=}{post}А что искать нужно, "Р" (эр) или "P" (pi)? Впрочем, я не нашел ни того, ни другого...{/post}{/quote}  
Р это для примера, на самом деле желательно искать текст, присвоив его из ячейки. Т.е, типа ПОИСК(А$2$; а вот здесь не ячейку , как в формуле, а массив, типа А2:L19)
 
{quote}{login=Writer}{date=22.01.2011 07:54}{thema=Помогите!!!  Поиск  части заданного текста в массиве}{post}Ваш пример, сохранённый в формате 2003 и не более 100 кБ, ускорит решение ВАШЕЙ проблемы.{/post}{/quote}
 
{quote}{login=Михаил}{date=22.01.2011 08:32}{thema=Re: Помогите!!!  Поиск  части заданного текста в массиве}{post}{quote}{login=Writer}{date=22.01.2011 07:54}{thema=Помогите!!!  Поиск  части заданного текста в массиве}{post}Ваш пример, сохранённый в формате 2003 и не более 100 кБ, ускорит решение ВАШЕЙ проблемы.{/post}{/quote}{/post}{/quote}  
 
Прикрепила проблему
 
{quote}{login=}{date=22.01.2011 08:46}{thema=Re: Re: Помогите!!!  Поиск  части заданного текста в массиве}{post}{quote}{login=Михаил}{date=22.01.2011 08:32}{thema=Re: Помогите!!!  Поиск  части заданного текста в массиве}{post}{quote}{login=Writer}{date=22.01.2011 07:54}{thema=Помогите!!!  Поиск  части заданного текста в массиве}{post}Ваш пример, сохранённый в формате 2003 и не более 100 кБ, ускорит решение ВАШЕЙ проблемы.{/post}{/quote}{/post}{/quote}  
 
Прикрепила проблему{/post}{/quote}  
Pardon, формат исправлен
 
=СУММ(-НЕ(ЕОШ(ПОИСК(B$1;$A$2:$Q$2))))
 
{quote}{login=Михаил}{date=22.01.2011 09:34}{thema=}{post}=СУММ(-НЕ(ЕОШ(ПОИСК(B$1;$A$2:$Q$2)))){/post}{/quote}  
 
Михаил, огромное человеческое спасибо!!!!!!!
 
{quote}{login=Михаил}{date=22.01.2011 09:34}{thema=}{post}=СУММ(-НЕ(ЕОШ(ПОИСК(B$1;$A$2:$Q$2)))){/post}{/quote}  
 
Добрый день,  
 
применил вашу слегка модифицированую формулу {=-СУММ(-НЕ(ЕОШ(ПОИСК(A1;$A$1:$A$2))))} в своих целях - всё работает, но если убрать знак "-" перед "НЕ", то результат неверный. Если не трудно, то прокоментируйте, пожалуйста, принцип действия этого знака.  
 
Заранее благодарен,  
Роман
 
Что такое унарное отрицание, почитайте здесь: http://www.planetaexcel.ru/forum.php?thread_id=14194
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
{quote}{login=Владимир}{date=29.12.2011 11:35}{thema=}{post}Что такое унарное отрицание, почитайте здесь: http://www.planetaexcel.ru/forum.php?thread_id=14194{/post}{/quote}  
 
Спасибо за ответ!  
В принципе, всё прояснилось окончательно ;) О бинарном и унарном отрицании я слыхал уже, но в больших формулах с многими вложениями сразу трудно понять, на каком шаге и для какого аргумента идет отрицание. Плюс иногда путает различие между листом Excel и VBA, поскольку есть различия в возвращающемся значении  ... :) Но это уже дело практики.
 
Лучше:    
=СУММ(--ЕЧИСЛО(ПОИСК(A1;$A$1:$A$2)))  
 
ЕОШ() обязана просмотреть весь диапазон, ЕЧИСЛО() - только до найденного значения. Естественно, при отсутствии значения обе функции перелопачивают диапазон полностью.  
 
Точно не знаю, но "--" работает быстрее, чем два раздельных минуса. Иногда сам грешу "минусами" - смотрится нестандартно.
 
Поправка: писал о просмотре "диапазона", а надо "строки".
 
{quote}{login=vikttur}{date=29.12.2011 02:37}{thema=}{post}Лучше:    
=СУММ(--ЕЧИСЛО(ПОИСК(A1;$A$1:$A$2)))  
{/post}{/quote}  
Можно еще так:  
=СЧЕТ(1/ПОИСК(A1;$A$1:$A$2))  
только не знаю, будет ли деление быстрее, но от ЕЧИСЛО избавляемся
 
Сорри, разлогинился
 
Кроме того:  
--ЕЧИСЛО(...) можно записать как 1-ЕОШ(...)  
вместо --НЕ(ЕОШ(...))
 
Я о чем?  
Допустим, найти "5" в строке "15324".  
ЕОШ(ПОИСК(5;"15324")) обязана перебрать все элементы массива. То же касается 1/ПОИСК(5;"15324").  
ЕЧИСЛО(ПОИСК(5;"15324")) находит второй символ и успокаивается.  
Т.е. применение ЕЧИСЛО() выгоднее.
 
С делением поторопился. Ведь тоже пересчет только до нахождения. Наверное, быстрее. Проверять не хочется.
 
{quote}{login=vikttur}{date=29.12.2011 03:58}{thema=}{post}ЕОШ(ПОИСК(5;"15324")) обязана перебрать все элементы массива.post}{/quote}  
Виктор, ПОИСК(5;"15324") возвращает одно единственное значение - 2,    
и на мой взгляд, что ЕОШ, что ЕЧИСЛО будет выполнятся одинаково по времени.  
 
Вопрос в самой функции ПОИСК(что_ищем;массив_где_ищем), она и в том и в другом варианте будет выполнятся одинаково, если нашла значение то сразу выдала результат, не нашла - пробежит всю строку до конца.
 
А ведь действительно! Зарапортовался.  
Прошу прощения общественности за невольное введение в заблуждение.
 
Еще думаю можно так (но пробовал)  
 
=ИЛИ(ЕЧИСЛО(ПОИСК(A1;$A$1:$A$2)))  
 
=ПОИСКПОЗ(9E307;ПОИСК(A1;$A$1:$A$2))
KL
 
* (не пробовал)
KL
 
и так:  
 
=СЧЁТЕСЛИ($A$1:$A$2;"*"&A1&"*")
KL
 
и наверное так:  
 
=ПОИСКПОЗ("*"&A1&"*";$A$1:$A$2;)
KL
 
Последний вариант для одномерного массива ессно.
KL
 
{quote}{login=KL}{date=29.12.2011 05:04}{thema=}{post}Последний вариант для одномерного массива ессно.{/post}{/quote}  
и второй - тоже :)
KL
 
{quote}{login=vikttur}{date=29.12.2011 03:58}{thema=}{post}Я о чем?  
Допустим, найти "5" в строке "15324".  
ЕОШ(ПОИСК(5;"15324")) обязана перебрать все элементы массива. То же касается 1/ПОИСК(5;"15324").  
ЕЧИСЛО(ПОИСК(5;"15324")) находит второй символ и успокаивается.  
Т.е. применение ЕЧИСЛО() выгоднее.{/post}{/quote}  
 
Посмотрел, сколько коментов на мой вопрос, в т.ч. по скорости обработки и решил уточнить задачку - мне нужно было найти в одном столбце ВСЕ значения, которые содержат в себе часть определенного текста. Тоисть, показать колличество совпадений в колонке (напр. сколько чисел имеют цифру 5). Значит нужно проверять все значения ...  
Ещё попутно вопрос о скорости выполнения - никогда не измерял что быстрее - воспользоваться штатной функцией или стоит напить свой макрос (функцию)? Есть у кого теоретический/практический опыт при работе с большим объемом данных?
 
Всем доброго дня!  
Прошу помочь с данным вопросом:  
Есть две таблицы. В левой таблице в одной ячейке прописаны название компании, номер договора и прочая  информация. В правой таблице только название компании. Необходимо в левой таблице выделить те компании, которые есть в правой таблице.  
Файл во вложении.  
Очень надеюсь на Вашу помощь!  
С уважением, Павел.
Страницы: 1 2 След.
Читают тему
Наверх