Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Получить слова с большой буквы или (в идеале ФИО) - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Получить слова с большой буквы или (в идеале ФИО) (Формулы/Formulas)
Получить слова с большой буквы или (в идеале ФИО)
evgenyforever Дата: Среда, 07.11.2018, 17:20 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 62
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Уважаемые коллеги, подскажите, как получить все слова в ячейке, начинающиеся с заглавной буквы (без учёта первого слова и без макроса, формула нужна одна, что бы протянуть вниз). В идеале получить фамилии и имена, но думаю, что это нерешаемая задача, учитывая, что ФИО может находится в любом месте текста.

Заранее благодарен за любую помощь!
К сообщению приложен файл: 5587535.xlsx (10.0 Kb)


Сообщение отредактировал evgenyforever - Среда, 07.11.2018, 17:27
 
Ответить
СообщениеУважаемые коллеги, подскажите, как получить все слова в ячейке, начинающиеся с заглавной буквы (без учёта первого слова и без макроса, формула нужна одна, что бы протянуть вниз). В идеале получить фамилии и имена, но думаю, что это нерешаемая задача, учитывая, что ФИО может находится в любом месте текста.

Заранее благодарен за любую помощь!

Автор - evgenyforever
Дата добавления - 07.11.2018 в 17:20
Pelena Дата: Среда, 07.11.2018, 17:24 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19162
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Приложите файл с несколькими вариантами текста


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеПриложите файл с несколькими вариантами текста

Автор - Pelena
Дата добавления - 07.11.2018 в 17:24
evgenyforever Дата: Среда, 07.11.2018, 17:27 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 62
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Pelena, Добавил!
 
Ответить
СообщениеPelena, Добавил!

Автор - evgenyforever
Дата добавления - 07.11.2018 в 17:27
bmv98rus Дата: Среда, 07.11.2018, 19:22 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4099
Репутация: 766 ±
Замечаний: 0% ±

Excel 2013/2016
Код
=MID(LEFT(A2&" ";FIND(" ";A2&" ";LOOKUP(2;1/((CODE(MID(A2;ROW(A1:INDEX(A:A;LEN(A2)));1))>=192)*(CODE(MID(A2;ROW(A1:INDEX(A:A;LEN(A2)));1))<=223));ROW(A1:INDEX(A:A;LEN(A2))))));LOOKUP(0;-1/((CODE(MID(A2;2+LEN(A2)-ROW(A2:INDEX(A:A;LEN(A2)));1))>=192)*(CODE(MID(A2;2+LEN(A2)-ROW(A2:INDEX(A:A;LEN(A2)));1))<=223));2+LEN(A2)-ROW(A2:INDEX(A:A;LEN(A2))));256)


Меньше универсальности - меньше символов
Код
=MID(LEFT(A4&" ";FIND(" ";A4&" ";LOOKUP(2;1/((CODE(MID(A4;ROW($1:$999);1))>=192)*(CODE(MID(A4;ROW($1:$999);1))<=223));ROW($1:$999))));LOOKUP(0;-1/((CODE(MID(A4;1001-ROW($2:$999);1))>=192)*(CODE(MID(A4;1001-ROW($2:$999);1))<=223));1001-ROW($2:$999));256)
К сообщению приложен файл: Copy_of_435.xlsx (10.8 Kb)


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Среда, 07.11.2018, 21:29
 
Ответить
Сообщение
Код
=MID(LEFT(A2&" ";FIND(" ";A2&" ";LOOKUP(2;1/((CODE(MID(A2;ROW(A1:INDEX(A:A;LEN(A2)));1))>=192)*(CODE(MID(A2;ROW(A1:INDEX(A:A;LEN(A2)));1))<=223));ROW(A1:INDEX(A:A;LEN(A2))))));LOOKUP(0;-1/((CODE(MID(A2;2+LEN(A2)-ROW(A2:INDEX(A:A;LEN(A2)));1))>=192)*(CODE(MID(A2;2+LEN(A2)-ROW(A2:INDEX(A:A;LEN(A2)));1))<=223));2+LEN(A2)-ROW(A2:INDEX(A:A;LEN(A2))));256)


Меньше универсальности - меньше символов
Код
=MID(LEFT(A4&" ";FIND(" ";A4&" ";LOOKUP(2;1/((CODE(MID(A4;ROW($1:$999);1))>=192)*(CODE(MID(A4;ROW($1:$999);1))<=223));ROW($1:$999))));LOOKUP(0;-1/((CODE(MID(A4;1001-ROW($2:$999);1))>=192)*(CODE(MID(A4;1001-ROW($2:$999);1))<=223));1001-ROW($2:$999));256)

Автор - bmv98rus
Дата добавления - 07.11.2018 в 19:22
evgenyforever Дата: Среда, 07.11.2018, 20:39 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 62
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
bmv98rus, Спасибо за предложенный вариант, он действительно рабочий для текста, который содержит одно предложение.
Мне нужно было сразу сообщить, что может быть несколько предложений, поэтому прикладываю ещё один файл с Вашей формулой.
К сообщению приложен файл: 8566467.xlsx (11.3 Kb)
 
Ответить
Сообщениеbmv98rus, Спасибо за предложенный вариант, он действительно рабочий для текста, который содержит одно предложение.
Мне нужно было сразу сообщить, что может быть несколько предложений, поэтому прикладываю ещё один файл с Вашей формулой.

Автор - evgenyforever
Дата добавления - 07.11.2018 в 20:39
Светлый Дата: Среда, 07.11.2018, 21:08 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1823
Репутация: 507 ±
Замечаний: 0% ±

Excel 2013, 2016
Ещё два варианта массивных формул. Два слова и три, но с инициалами затруднения:
Код
=СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ(ПСТР(A2;НАИМЕНЬШИЙ(ЕСЛИ(КОДСИМВ(ПСТР(A2;СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2)));1))<>КОДСИМВ(ПСТР(СТРОЧН(A2);СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2)));1));СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2))));2);99);" ";ПОВТОР(" ";99));99))&ЕСЛИОШИБКА(" "&СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ(ПСТР(A2;НАИМЕНЬШИЙ(ЕСЛИ(КОДСИМВ(ПСТР(A2;СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2)));1))<>КОДСИМВ(ПСТР(СТРОЧН(A2);СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2)));1));СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2))));3);99);" ";ПОВТОР(" ";99));99));"")
Код
=СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ(ПСТР(A2;НАИМЕНЬШИЙ(ЕСЛИ(КОДСИМВ(ПСТР(A2;СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2)));1))<>КОДСИМВ(ПСТР(СТРОЧН(A2);СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2)));1));СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2))));2);99);" ";ПОВТОР(" ";99));99))&ЕСЛИОШИБКА(" "&СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ(ПСТР(A2;НАИМЕНЬШИЙ(ЕСЛИ(КОДСИМВ(ПСТР(A2;СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2)));1))<>КОДСИМВ(ПСТР(СТРОЧН(A2);СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2)));1));СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2))));3);99);" ";ПОВТОР(" ";99));99));"")&ЕСЛИОШИБКА(" "&СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ(ПСТР(A2;НАИМЕНЬШИЙ(ЕСЛИ(КОДСИМВ(ПСТР(A2;СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2)));1))<>КОДСИМВ(ПСТР(СТРОЧН(A2);СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2)));1));СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2))));4);99);" ";ПОВТОР(" ";99));99));"")


Программировать проще, чем писать стихи.
 
Ответить
СообщениеЕщё два варианта массивных формул. Два слова и три, но с инициалами затруднения:
Код
=СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ(ПСТР(A2;НАИМЕНЬШИЙ(ЕСЛИ(КОДСИМВ(ПСТР(A2;СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2)));1))<>КОДСИМВ(ПСТР(СТРОЧН(A2);СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2)));1));СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2))));2);99);" ";ПОВТОР(" ";99));99))&ЕСЛИОШИБКА(" "&СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ(ПСТР(A2;НАИМЕНЬШИЙ(ЕСЛИ(КОДСИМВ(ПСТР(A2;СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2)));1))<>КОДСИМВ(ПСТР(СТРОЧН(A2);СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2)));1));СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2))));3);99);" ";ПОВТОР(" ";99));99));"")
Код
=СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ(ПСТР(A2;НАИМЕНЬШИЙ(ЕСЛИ(КОДСИМВ(ПСТР(A2;СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2)));1))<>КОДСИМВ(ПСТР(СТРОЧН(A2);СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2)));1));СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2))));2);99);" ";ПОВТОР(" ";99));99))&ЕСЛИОШИБКА(" "&СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ(ПСТР(A2;НАИМЕНЬШИЙ(ЕСЛИ(КОДСИМВ(ПСТР(A2;СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2)));1))<>КОДСИМВ(ПСТР(СТРОЧН(A2);СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2)));1));СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2))));3);99);" ";ПОВТОР(" ";99));99));"")&ЕСЛИОШИБКА(" "&СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ(ПСТР(A2;НАИМЕНЬШИЙ(ЕСЛИ(КОДСИМВ(ПСТР(A2;СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2)));1))<>КОДСИМВ(ПСТР(СТРОЧН(A2);СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2)));1));СТРОКА(СМЕЩ(A$1;;;ДЛСТР(A2))));4);99);" ";ПОВТОР(" ";99));99));"")

Автор - Светлый
Дата добавления - 07.11.2018 в 21:08
bmv98rus Дата: Среда, 07.11.2018, 21:19 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4099
Репутация: 766 ±
Замечаний: 0% ±

Excel 2013/2016
Светлый, и судя по #5 все это напрасно.

evgenyforever, Боюсь что даже минимум невыполним , при таких ограничениях и условиях. в голову ничего не приходит как и за что зацепится, ну ладно бы еще четко знать что в последнем предложении надо искать, так это может не так быть.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеСветлый, и судя по #5 все это напрасно.

evgenyforever, Боюсь что даже минимум невыполним , при таких ограничениях и условиях. в голову ничего не приходит как и за что зацепится, ну ладно бы еще четко знать что в последнем предложении надо искать, так это может не так быть.

Автор - bmv98rus
Дата добавления - 07.11.2018 в 21:19
Светлый Дата: Среда, 07.11.2018, 21:48 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1823
Репутация: 507 ±
Замечаний: 0% ±

Excel 2013, 2016
А вот это работает:
Код
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";200));НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";200));СТРОКА($1:$20)*200;200))&0)-207.5)<16;СТРОКА($1:$20));1)*200;200))&ЕСЛИОШИБКА(" "&СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";200));НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";200));СТРОКА($1:$20)*200;200))&0)-207.5)<16;СТРОКА($1:$20));2)*200;200));"")


Программировать проще, чем писать стихи.
 
Ответить
СообщениеА вот это работает:
Код
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";200));НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";200));СТРОКА($1:$20)*200;200))&0)-207.5)<16;СТРОКА($1:$20));1)*200;200))&ЕСЛИОШИБКА(" "&СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";200));НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";200));СТРОКА($1:$20)*200;200))&0)-207.5)<16;СТРОКА($1:$20));2)*200;200));"")

Автор - Светлый
Дата добавления - 07.11.2018 в 21:48
bmv98rus Дата: Среда, 07.11.2018, 22:18 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4099
Репутация: 766 ±
Замечаний: 0% ±

Excel 2013/2016
Светлый, Читер :-) Я сперва не понял, а потом смотрю на два "слова" работает. Не для всех случаев конечно, но в целом работает,
Пропуск первого слова в предложении подлянку строит, "Трам пам пам . Кузнецов Андрей проверил."


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Среда, 07.11.2018, 22:25
 
Ответить
СообщениеСветлый, Читер :-) Я сперва не понял, а потом смотрю на два "слова" работает. Не для всех случаев конечно, но в целом работает,
Пропуск первого слова в предложении подлянку строит, "Трам пам пам . Кузнецов Андрей проверил."

Автор - bmv98rus
Дата добавления - 07.11.2018 в 22:18
Светлый Дата: Среда, 07.11.2018, 22:42 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1823
Репутация: 507 ±
Замечаний: 0% ±

Excel 2013, 2016
Можно и на три слова,и больше:
Код
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));СТРОКА($1:$20)*999;999))&0)-207.5)<16;СТРОКА($1:$20));1)*999;999))&ЕСЛИОШИБКА(" "&СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));СТРОКА($1:$20)*999;999))&0)-207.5)<16;СТРОКА($1:$20));2)*999;999));"")&ЕСЛИОШИБКА(" "&СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));СТРОКА($1:$20)*999;999))&0)-207.5)<16;СТРОКА($1:$20));3)*999;999));"")
Но пока не вижу никаких признаков, чтобы отличить Имя и любое слово в начале предложения. И ещё буква Ё работать не будет.


Программировать проще, чем писать стихи.

Сообщение отредактировал Светлый - Среда, 07.11.2018, 22:44
 
Ответить
СообщениеМожно и на три слова,и больше:
Код
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));СТРОКА($1:$20)*999;999))&0)-207.5)<16;СТРОКА($1:$20));1)*999;999))&ЕСЛИОШИБКА(" "&СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));СТРОКА($1:$20)*999;999))&0)-207.5)<16;СТРОКА($1:$20));2)*999;999));"")&ЕСЛИОШИБКА(" "&СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));СТРОКА($1:$20)*999;999))&0)-207.5)<16;СТРОКА($1:$20));3)*999;999));"")
Но пока не вижу никаких признаков, чтобы отличить Имя и любое слово в начале предложения. И ещё буква Ё работать не будет.

Автор - Светлый
Дата добавления - 07.11.2018 в 22:42
evgenyforever Дата: Четверг, 08.11.2018, 10:16 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 62
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Светлый, bmv98rus, а можно сделать так, что бы слова, которые начинаются с нижнего регистра - исключить, определить только слова, которые содержат заглавные б. и по ним ориентироваться. (может для этого перебрать алфавит, что-нибудь вроде <>найти({а,б,в...})

Например, если будет целый абзац, то формулы работать либо не будут, или будут, но очень отдалённо от истины)
[vba]
Код
Продавец Лариса Николаевна (далее Л.Н.) является продавцом в продуктовом магазине. Некто подходит к Л.Н. и просит взвесить 1 кг конфет Л.Н. взвешивает товар, берёт деньги и передаёт товар покупателю. Некто объявляет, что он является членом общества защиты прав потребителей, только что произвёл проверочную закупку и хочет самостоятельно произвести перевешивание товара. Действия Л.Н.: — Здравствуйте, уважаемый. Предъявите, пожалуйста Ваши документы Л.П. выясняет, что некто — это председатель общества защиты прав потребителей Сусликов Илья Константинович (далее СИК), адрес его общества такой-то, телефон какой-то. Все эти данные Л.Н. записывает на отдельный листок бумаги и прячет в надёжное место.
[/vba]
Поэтому, если это возможно, то оставить только слова с большой буквы: это будет выглядеть так: Лариса Николаевна Л.Н. Некто Л.Н. Л.Н.Действия Л.Н. Здравствуйте Предъявите Ваши Л.П. Сусликов Илья Константинович СИК Все Л.Н.

А потом, я просто формулой сделаю "подставить" и все эти слова уберу (такие , как Здравствуйте, Предъявите, Ваши и т.д.)
К сообщению приложен файл: 7791991.xlsx (12.3 Kb)


Сообщение отредактировал evgenyforever - Четверг, 08.11.2018, 11:35
 
Ответить
СообщениеСветлый, bmv98rus, а можно сделать так, что бы слова, которые начинаются с нижнего регистра - исключить, определить только слова, которые содержат заглавные б. и по ним ориентироваться. (может для этого перебрать алфавит, что-нибудь вроде <>найти({а,б,в...})

Например, если будет целый абзац, то формулы работать либо не будут, или будут, но очень отдалённо от истины)
[vba]
Код
Продавец Лариса Николаевна (далее Л.Н.) является продавцом в продуктовом магазине. Некто подходит к Л.Н. и просит взвесить 1 кг конфет Л.Н. взвешивает товар, берёт деньги и передаёт товар покупателю. Некто объявляет, что он является членом общества защиты прав потребителей, только что произвёл проверочную закупку и хочет самостоятельно произвести перевешивание товара. Действия Л.Н.: — Здравствуйте, уважаемый. Предъявите, пожалуйста Ваши документы Л.П. выясняет, что некто — это председатель общества защиты прав потребителей Сусликов Илья Константинович (далее СИК), адрес его общества такой-то, телефон какой-то. Все эти данные Л.Н. записывает на отдельный листок бумаги и прячет в надёжное место.
[/vba]
Поэтому, если это возможно, то оставить только слова с большой буквы: это будет выглядеть так: Лариса Николаевна Л.Н. Некто Л.Н. Л.Н.Действия Л.Н. Здравствуйте Предъявите Ваши Л.П. Сусликов Илья Константинович СИК Все Л.Н.

А потом, я просто формулой сделаю "подставить" и все эти слова уберу (такие , как Здравствуйте, Предъявите, Ваши и т.д.)

Автор - evgenyforever
Дата добавления - 08.11.2018 в 10:16
Светлый Дата: Четверг, 08.11.2018, 13:17 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1823
Репутация: 507 ±
Замечаний: 0% ±

Excel 2013, 2016
Немного причесал формулу:
Код
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));СТРОКА($1:$20)*999;999))&0)-207,5)<16;СТРОКА($1:$20));1)*999;999)&ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));СТРОКА($1:$20)*999;999))&0)-207,5)<16;СТРОКА($1:$20);99);2)*999;999)&ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));СТРОКА($1:$20)*999;999))&0)-207,5)<16;СТРОКА($1:$20);99);3)*999;999))
И вторая формула(была с ошибкой - исправил):
Код
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));НАИМЕНЬШИЙ(ЕСЛИОШИБКА(СТРОКА($1:$90)*ЗНАК(ПОИСКПОЗ(КОДСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));СТРОКА($1:$90)*999;999)));СТРОКА($192:$223);));99);1)*999;999)&ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));НАИМЕНЬШИЙ(ЕСЛИОШИБКА(СТРОКА($1:$90)*ЗНАК(ПОИСКПОЗ(КОДСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));СТРОКА($1:$90)*999;999)));СТРОКА($192:$223);));99);2)*999;999)&ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));НАИМЕНЬШИЙ(ЕСЛИОШИБКА(СТРОКА($1:$90)*ЗНАК(ПОИСКПОЗ(КОДСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));СТРОКА($1:$90)*999;999)));СТРОКА($192:$223);));99);3)*999;999))


Программировать проще, чем писать стихи.

Сообщение отредактировал Светлый - Четверг, 08.11.2018, 14:27
 
Ответить
СообщениеНемного причесал формулу:
Код
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));СТРОКА($1:$20)*999;999))&0)-207,5)<16;СТРОКА($1:$20));1)*999;999)&ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));СТРОКА($1:$20)*999;999))&0)-207,5)<16;СТРОКА($1:$20);99);2)*999;999)&ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));СТРОКА($1:$20)*999;999))&0)-207,5)<16;СТРОКА($1:$20);99);3)*999;999))
И вторая формула(была с ошибкой - исправил):
Код
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));НАИМЕНЬШИЙ(ЕСЛИОШИБКА(СТРОКА($1:$90)*ЗНАК(ПОИСКПОЗ(КОДСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));СТРОКА($1:$90)*999;999)));СТРОКА($192:$223);));99);1)*999;999)&ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));НАИМЕНЬШИЙ(ЕСЛИОШИБКА(СТРОКА($1:$90)*ЗНАК(ПОИСКПОЗ(КОДСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));СТРОКА($1:$90)*999;999)));СТРОКА($192:$223);));99);2)*999;999)&ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));НАИМЕНЬШИЙ(ЕСЛИОШИБКА(СТРОКА($1:$90)*ЗНАК(ПОИСКПОЗ(КОДСИМВ(СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A2;". ";" .");" ";ПОВТОР(" ";999));СТРОКА($1:$90)*999;999)));СТРОКА($192:$223);));99);3)*999;999))

Автор - Светлый
Дата добавления - 08.11.2018 в 13:17
Светлый Дата: Четверг, 08.11.2018, 14:01 | Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 1823
Репутация: 507 ±
Замечаний: 0% ±

Excel 2013, 2016
Есть ограничения Excel по длине обрабатываемой строки. Часть текста ещё возможно обработать. Если размер больше, ошибка в команде ПОДСТАВИТЬ, где длинные пробелы вставляются.
К сообщению приложен файл: 8566467-3.xlsx (15.4 Kb)


Программировать проще, чем писать стихи.
 
Ответить
СообщениеЕсть ограничения Excel по длине обрабатываемой строки. Часть текста ещё возможно обработать. Если размер больше, ошибка в команде ПОДСТАВИТЬ, где длинные пробелы вставляются.

Автор - Светлый
Дата добавления - 08.11.2018 в 14:01
bmv98rus Дата: Четверг, 08.11.2018, 14:13 | Сообщение № 14
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4099
Репутация: 766 ±
Замечаний: 0% ±

Excel 2013/2016
evgenyforever, Если убрать
Цитата evgenyforever, 07.11.2018 в 17:20, в сообщении № 1 ()
и без макроса
то UDF , которая будет выглядеть на листе как простая функция, написать не составит труда нашим макрушникам. Это скорее всего не решит проблему лишних слов , так как мух от котлет отделить сложно без наличия явных признаков. Светлый, и так молодец, сделал много, я бросил затею, так как предвидел, что все упрется в известные ограничения.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщениеevgenyforever, Если убрать
Цитата evgenyforever, 07.11.2018 в 17:20, в сообщении № 1 ()
и без макроса
то UDF , которая будет выглядеть на листе как простая функция, написать не составит труда нашим макрушникам. Это скорее всего не решит проблему лишних слов , так как мух от котлет отделить сложно без наличия явных признаков. Светлый, и так молодец, сделал много, я бросил затею, так как предвидел, что все упрется в известные ограничения.

Автор - bmv98rus
Дата добавления - 08.11.2018 в 14:13
sboy Дата: Четверг, 08.11.2018, 14:36 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
то UDF

только слова с большой буквы

[vba]
Код
Function evgenyforever(t) As String
    With CreateObject("vbscript.regexp")
        .Global = True
        .Pattern = "[А-ЯЁ][а-яё.]+"
            If .test(t) Then
                For i = 0 To .Execute(t).Count - 1
                    evgenyforever = evgenyforever & " " & .Execute(t)(i)
                Next i
            End If
        evgenyforever = Trim(evgenyforever)
    End With
End Function
[/vba]
К сообщению приложен файл: 7791991.xlsm (17.9 Kb)


Яндекс: 410016850021169
 
Ответить
Сообщение
то UDF

только слова с большой буквы

[vba]
Код
Function evgenyforever(t) As String
    With CreateObject("vbscript.regexp")
        .Global = True
        .Pattern = "[А-ЯЁ][а-яё.]+"
            If .test(t) Then
                For i = 0 To .Execute(t).Count - 1
                    evgenyforever = evgenyforever & " " & .Execute(t)(i)
                Next i
            End If
        evgenyforever = Trim(evgenyforever)
    End With
End Function
[/vba]

Автор - sboy
Дата добавления - 08.11.2018 в 14:36
Светлый Дата: Четверг, 08.11.2018, 22:55 | Сообщение № 16
Группа: Друзья
Ранг: Старожил
Сообщений: 1823
Репутация: 507 ±
Замечаний: 0% ±

Excel 2013, 2016
все упрется в известные ограничения

Мыши кололись плакали, но ели кактус. Обошёл эти ограничения:
Код
=СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ(ПСТР(A2;НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(ПСТР(A2;ЕСЛИ(ПСТР(ПОДСТАВИТЬ(A2;". ";" .");СТРОКА($1:$998);1)=" ";СТРОКА($2:$999);999);1)&0)-207.5)<16;СТРОКА($2:$999);999);1);20);" ";ПОВТОР(" ";20));20)&ЛЕВБ(ПОДСТАВИТЬ(ПСТР(A2;НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(ПСТР(A2;ЕСЛИ(ПСТР(ПОДСТАВИТЬ(A2;". ";" .");СТРОКА($1:$998);1)=" ";СТРОКА($2:$999);999);1)&0)-207.5)<16;СТРОКА($2:$999);999);2);20);" ";ПОВТОР(" ";20));20)&ЛЕВБ(ПОДСТАВИТЬ(ПСТР(A2;НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(ПСТР(A2;ЕСЛИ(ПСТР(ПОДСТАВИТЬ(A2;". ";" .");СТРОКА($1:$998);1)=" ";СТРОКА($2:$999);999);1)&0)-207.5)<16;СТРОКА($2:$999);999);3);20);" ";ПОВТОР(" ";20));20))


Программировать проще, чем писать стихи.
 
Ответить
Сообщение
все упрется в известные ограничения

Мыши кололись плакали, но ели кактус. Обошёл эти ограничения:
Код
=СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ(ПСТР(A2;НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(ПСТР(A2;ЕСЛИ(ПСТР(ПОДСТАВИТЬ(A2;". ";" .");СТРОКА($1:$998);1)=" ";СТРОКА($2:$999);999);1)&0)-207.5)<16;СТРОКА($2:$999);999);1);20);" ";ПОВТОР(" ";20));20)&ЛЕВБ(ПОДСТАВИТЬ(ПСТР(A2;НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(ПСТР(A2;ЕСЛИ(ПСТР(ПОДСТАВИТЬ(A2;". ";" .");СТРОКА($1:$998);1)=" ";СТРОКА($2:$999);999);1)&0)-207.5)<16;СТРОКА($2:$999);999);2);20);" ";ПОВТОР(" ";20));20)&ЛЕВБ(ПОДСТАВИТЬ(ПСТР(A2;НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(ПСТР(A2;ЕСЛИ(ПСТР(ПОДСТАВИТЬ(A2;". ";" .");СТРОКА($1:$998);1)=" ";СТРОКА($2:$999);999);1)&0)-207.5)<16;СТРОКА($2:$999);999);3);20);" ";ПОВТОР(" ";20));20))

Автор - Светлый
Дата добавления - 08.11.2018 в 22:55
evgenyforever Дата: Пятница, 09.11.2018, 18:51 | Сообщение № 17
Группа: Пользователи
Ранг: Участник
Сообщений: 62
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Светлый, bmv98rus, sboy, Огромное Вам спасибо за труды! Действительно задача была не из простых.
Хорошо справилась с задачей формула, предложенная Светлым:
[vba]
Код
=СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ(ПСТР(A2;НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(ПСТР(A2;ЕСЛИ(ПСТР(ПОДСТАВИТЬ(A2;". ";" .");СТРОКА($1:$998);1)=" ";СТРОКА($2:$999);999);1)&0)-207.5)<16;СТРОКА($2:$999);999);1);20);" ";ПОВТОР(" ";20));20)&ЛЕВБ(ПОДСТАВИТЬ(ПСТР(A2;НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(ПСТР(A2;ЕСЛИ(ПСТР(ПОДСТАВИТЬ(A2;". ";" .");СТРОКА($1:$998);1)=" ";СТРОКА($2:$999);999);1)&0)-207.5)<16;СТРОКА($2:$999);999);2);20);" ";ПОВТОР(" ";20));20)&ЛЕВБ(ПОДСТАВИТЬ(ПСТР(A2;НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(ПСТР(A2;ЕСЛИ(ПСТР(ПОДСТАВИТЬ(A2;". ";" .");СТРОКА($1:$998);1)=" ";СТРОКА($2:$999);999);1)&0)-207.5)<16;СТРОКА($2:$999);999);3);20);" ";ПОВТОР(" ";20));20))
[/vba]
И сработал UDF, предложенный sboy.


Сообщение отредактировал evgenyforever - Пятница, 09.11.2018, 19:02
 
Ответить
СообщениеСветлый, bmv98rus, sboy, Огромное Вам спасибо за труды! Действительно задача была не из простых.
Хорошо справилась с задачей формула, предложенная Светлым:
[vba]
Код
=СЖПРОБЕЛЫ(ЛЕВБ(ПОДСТАВИТЬ(ПСТР(A2;НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(ПСТР(A2;ЕСЛИ(ПСТР(ПОДСТАВИТЬ(A2;". ";" .");СТРОКА($1:$998);1)=" ";СТРОКА($2:$999);999);1)&0)-207.5)<16;СТРОКА($2:$999);999);1);20);" ";ПОВТОР(" ";20));20)&ЛЕВБ(ПОДСТАВИТЬ(ПСТР(A2;НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(ПСТР(A2;ЕСЛИ(ПСТР(ПОДСТАВИТЬ(A2;". ";" .");СТРОКА($1:$998);1)=" ";СТРОКА($2:$999);999);1)&0)-207.5)<16;СТРОКА($2:$999);999);2);20);" ";ПОВТОР(" ";20));20)&ЛЕВБ(ПОДСТАВИТЬ(ПСТР(A2;НАИМЕНЬШИЙ(ЕСЛИ(ABS(КОДСИМВ(ПСТР(A2;ЕСЛИ(ПСТР(ПОДСТАВИТЬ(A2;". ";" .");СТРОКА($1:$998);1)=" ";СТРОКА($2:$999);999);1)&0)-207.5)<16;СТРОКА($2:$999);999);3);20);" ";ПОВТОР(" ";20));20))
[/vba]
И сработал UDF, предложенный sboy.

Автор - evgenyforever
Дата добавления - 09.11.2018 в 18:51
evgenyforever Дата: Пятница, 09.11.2018, 19:12 | Сообщение № 18
Группа: Пользователи
Ранг: Участник
Сообщений: 62
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
sboy, Подскажите пожалуйста, а как установить правило UDF, чтобы брал данные из ячейки A2, а вставлял в ячейку G2?
 
Ответить
Сообщениеsboy, Подскажите пожалуйста, а как установить правило UDF, чтобы брал данные из ячейки A2, а вставлял в ячейку G2?

Автор - evgenyforever
Дата добавления - 09.11.2018 в 19:12
Pelena Дата: Пятница, 09.11.2018, 19:52 | Сообщение № 19
Группа: Админы
Ранг: Местный житель
Сообщений: 19162
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
чтобы брал данные из ячейки A2, а вставлял в ячейку G2

В ячейку G2 запишите формулу
Код
=evgenyforever(A2)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
чтобы брал данные из ячейки A2, а вставлял в ячейку G2

В ячейку G2 запишите формулу
Код
=evgenyforever(A2)

Автор - Pelena
Дата добавления - 09.11.2018 в 19:52
evgenyforever Дата: Пятница, 09.11.2018, 20:36 | Сообщение № 20
Группа: Пользователи
Ранг: Участник
Сообщений: 62
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Pelena, Не поможете на этот файл вставить UDF в ячейку G2?
К сообщению приложен файл: 3503513.xlsx (9.6 Kb)


Сообщение отредактировал evgenyforever - Пятница, 09.11.2018, 20:37
 
Ответить
СообщениеPelena, Не поможете на этот файл вставить UDF в ячейку G2?

Автор - evgenyforever
Дата добавления - 09.11.2018 в 20:36
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Получить слова с большой буквы или (в идеале ФИО) (Формулы/Formulas)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!