Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2012, 18:02   #1
tsap
Пользователь
 
Аватар для tsap
 
Регистрация: 17.05.2008
Сообщений: 33
По умолчанию Поиск значения массива в строке

Всем доброго дня!

Подскажите пожалуйста, если кто знает, можно ли произвести поиск значений массива в текстовой строке и вывести само значение в соседний столбец? Интересует, можно ли произвести данную операцию с помощью формул (без макросов, с коими не дружу пока ).
Вложения
Тип файла: rar поиск из массива.rar (3.7 Кб, 16 просмотров)
tsap вне форума Ответить с цитированием
Старый 17.12.2012, 19:39   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

извините, а Вы вообще пытались это решать?
Вложения
Тип файла: rar поиск из массива.rar (6.2 Кб, 22 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 17.12.2012, 22:56   #3
tsap
Пользователь
 
Аватар для tsap
 
Регистрация: 17.05.2008
Сообщений: 33
По умолчанию

IgorGo, спасибо за ответ, однако, моя вина -излишне упростил приложенный пример. Выкладываю более сходный с действительностью. Только как сделать - еще пока не знаю.
Вложения
Тип файла: rar поиск из массива.rar (3.9 Кб, 9 просмотров)
tsap вне форума Ответить с цитированием
Старый 17.12.2012, 23:54   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

однако формула стала по-сложнее:
Код:
=ЛЕВСИМВ(RC[-1];МАКС((ПСТР(RC[-1];СТРОКА(ДВССЫЛ("1:" & ДЛСТР(RC[-1])));1)=" ")*СТРОКА(ДВССЫЛ("1:" & ДЛСТР(RC[-1])))*(СТРОКА(ДВССЫЛ("1:" & ДЛСТР(RC[-1])))<ПОИСК(" район";ПОДСТАВИТЬ(ПОДСТАВИТЬ(RC[-1];"р-н";"район");"р/н";"район"))))-1)
формула реагирует на три способа написания слова район: район, р-н, р/н.
результаты можно посмотреть во вложении.
Вложения
Тип файла: rar поиск из массива.rar (6.6 Кб, 17 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 18.12.2012, 00:10   #5
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

смотрите вложение, так?:

Код:
=ЕСЛИ(СОВПАД(ПРАВСИМВ(ЛЕВСИМВ(B3;НАЙТИ(" ";B3;1)+1);1);ПРОПИСН(ПРАВСИМВ(ЛЕВСИМВ(B3;НАЙТИ(" ";B3;1)+1);1)));ЛЕВСИМВ(B3;НАЙТИ(" ";B3;1)-1);ЛЕВСИМВ(B3;НАЙТИ(" ";B3;НАЙТИ(" ";B3;1)+1)))
Вложения
Тип файла: rar поиск из массива2.rar (4.4 Кб, 11 просмотров)
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Старый 18.12.2012, 14:41   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

staniiislav,
я написал Очень яровой ямень для последнего района и получил несколько неожиданный результат, в котором нет ни слова о ячмене.

я исходил из следующих соображений:
макет исходной строки: ИскомоеЗначение НазваниеРайона Район ...
где:
1) ИскомоеЗначение - собственно то, что следует получить из строки (любое количество слов например Озимая пшеница высшего сорта)
2) НазваниеРайона - (одно слово)
3) Район - слово, может быть написано как: район, р-н, р/н
4) ... - что угодно дальше
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 18.12.2012, 15:21   #7
tsap
Пользователь
 
Аватар для tsap
 
Регистрация: 17.05.2008
Сообщений: 33
По умолчанию

IgorGo, Staniiislav, спасибо большое за ваши решения! В процессе того как разбирался с работой каждого из вариантов - "вымучал" и свою версию (как оказалось есть возможность того что необходимое наименование будет состоять из 3 слов, включая год):

Код HTML:
=ЕСЛИ(ЕНД(ПОИСКПОЗ(ПСТР(B3;1;ПОИСК(" ";B3)-1);культуры;0));ЕСЛИ(ЕНД(ПОИСКПОЗ(ПСТР(B3;1;ПОИСК(" ";B3;ПОИСК(" ";B3)+1)-1);культуры;0));ПСТР(B3;1;ПОИСК(" ";B3;ПОИСК(" ";B3;ПОИСК(" ";B3)+1)+1));ПСТР(B3;1;ПОИСК(" ";B3;ПОИСК(" ";B3)+1)-1));ПСТР(B3;1;ПОИСК(" ";B3)-1))
Да, IgorGo, все верно, в формуле Staniiislava определяется первое слово, которое начинается с заглавной буквы (т.е. район) от которого и происходит расчет (насколько я понял) - вытягивается либо одно первое либо два первых слова. Поэтому и может произойти абракадабра.

Еще раз спасибо за помощь ))
Вложения
Тип файла: rar поиск из массива.rar (4.1 Кб, 8 просмотров)
tsap вне форума Ответить с цитированием
Старый 18.12.2012, 15:41   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

если есть список культур, то формулу можно упростить до:
Код:
=ИНДЕКС(список!C2;СУММ(НЕ(ЕОШ(ПОИСК(культуры&"*";Лист2!RC[-1])))*СТРОКА(культуры)))
Вложения
Тип файла: rar поиск из массива2.rar (6.6 Кб, 11 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 18.12.2012, 15:57   #9
tsap
Пользователь
 
Аватар для tsap
 
Регистрация: 17.05.2008
Сообщений: 33
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
если есть список культур, то формулу можно упростить до:
Код:
=ИНДЕКС(список!C2;СУММ(НЕ(ЕОШ(ПОИСК(культуры&"*";Лист2!RC[-1])))*СТРОКА(культуры)))
Да, и вправду так покороче будет. Одно плохо, что надо вводить "массивную" формула в каждую ячейку отдельно. а таких строк около тысячи((
tsap вне форума Ответить с цитированием
Старый 18.12.2012, 16:23   #10
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Сообщение от tsap Посмотреть сообщение
Да, и вправду так покороче будет. Одно плохо, что надо вводить "массивную" формула в каждую ячейку отдельно. а таких строк около тысячи((
зачем формула массива?
Вложения
Тип файла: zip поиск из массива.zip (7.2 Кб, 22 просмотров)
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск первого ненулевого значения в строке peq Microsoft Office Excel 3 13.11.2012 21:07
поиск максимального значения в каждой строке массива(блок-схема) d1mka_ Помощь студентам 1 18.11.2011 18:52
Модификация значения в строке вывода KEIego Общие вопросы C/C++ 0 03.10.2010 15:15
Поиск текста в массиве с подстановкой значения из 2-го массива MaxxVer Microsoft Office Excel 5 05.07.2010 08:01
Выбор значения из массива по столбцу и строке Almaas Помощь студентам 4 25.01.2008 14:56