Новости:

Новая редакция правил форума: 2.4. Если вопрос или ответ содержится во вложенном файле, все-равно кратко описывайте в сообщении вопрос или суть решения. Это необходимо, чтобы тему можно было найти через поиск.

Главное меню

=СИМВОЛ() и больше/меньше

Автор 0mega, 06.08.2012, 08:33

« назад - далее »

0mega

Доброго времени суток.

sub no
Дано:
Столбец с буквенно-цифровой информацией. (сначала текст, потом цифры)
И в тексте и в цифрах допускается использование пробелов и др знаков.
Надо цифровую информацию вывести в отдельный столбец

текст 4756 4847 09                             4756 4847 09
текст из нескольких слов81975038     81975038
English text 626-756-344                     626-756-344

Первое что пришло на ум (оно же и последнее ) - это использовать
=ПОИСК(СИМВОЛ();A1)
как заставить машину искать символ, значение которого больше 47 и меньше 58 ?




cheshiki1

чтоб облегчить формулу  зайдем в именованный диапазон и создадим имя с формулой вида =НАИМЕНЬШИЙ(ЕСЛИ(ЕОШИБКА(ПОИСК({1:2:3:4:5:6:7:8:9};Лист1!$A6;СТРОКА(Лист1!1:999)));99;ПОИСК({1:2:3:4:5:6:7:8:9};Лист1!$A6;СТРОКА(Лист1!1:999)));1) и именем например "формула"
тогда формула в ячейке примет вид
=ПСТР(A6;формула;ДЛСТР(A6)-формула+1)

cheshiki1

Barbarian12 Вы обратили внимание что Хочу не соответствует тому что у вас получилось.

Barbarian12

Цитата: cheshiki1 от 06.08.2012, 10:32
Barbarian12 Вы обратили внимание что Хочу не соответствует тому что у вас получилось.
Подправил. Не заметил, что отпали последние цифры из-за пробелов и тире между цифрами. :)
Формула должна быть такой (вводить как формулу массива, зажав ctrl+shift+enter):
=ПСТР(A6;ПОИСКПОЗ(ИСТИНА;ЕЧИСЛО(1*ПСТР(A6;СТРОКА(ДВССЫЛ("A1:A"&ДЛСТР(A6)));1));0);ДЛСТР(A6)-ПОИСКПОЗ(ИСТИНА;ЕЧИСЛО(1*ПСТР(A6;СТРОКА(ДВССЫЛ("A1:A"&ДЛСТР(A6)));1));0)+1)

0mega

cheshiki1, Barbarian12
благодарю за ответы.
сейчас попытаюсь всю эту информацию впихнуть в свое серое вещество и потом обязательно отпишусь

Serge 007

Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

_Boroda_

0mega
Для Вашего случая можно, например, так
=ПСТР(A1;МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(A1;СТРОКА(A1:A999);1));СТРОКА(A1:A999)));999)
Скажи мне, кудесник, любимец ба'гов...



Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995

cheshiki1

Цитата: _Boroda_ от 06.08.2012, 11:34
0mega
Для Вашего случая можно, например, так
=ПСТР(A1;МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(A1;СТРОКА(A1:A999);1));СТРОКА(A1:A999)));999)

_Boroda_ не подскажите чем здесь служит "-" перед ПСТР на будушее? Хотел понять суть но чет не понял (с минусом работает, без - нет)

_Boroda_

Цитата: cheshiki1 от 06.08.2012, 11:48_Boroda_ не подскажите чем здесь служит "-" перед ПСТР на будушее? Хотел понять суть но чет не понял (с минусом работает, без - нет)
=ПСТР(A1;МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(A1;СТРОКА(A1:A999);1));СТРОКА(A1:A999)));999)
ПСТР(A1;СТРОКА(A1:A999);1) дает разбивку текста из А1 посимвольно (буковки, циферки, пробелы всякие и т.д.). И каждый из этих символов является ТЕКСТОМ (даже цифры). Если сменить знак у "текстового" числа, то получится число, а если у буквы - то ошибка. Все это (числа и ошибки) и ловит ЕЧИСЛО
Скажи мне, кудесник, любимец ба'гов...



Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995

cheshiki1


0mega

Александр, спасибо. Красивое решение. Как всегда, после тебя добавить нечего и некому   ;)

Цитата: _Boroda_ от 06.08.2012, 11:34
Для Вашего случая можно, например, так =... (A1:A999)));999)
Меня даже так  =... (A1:A999)));19) устраивает  с запасом.
P.S.
К сожалению, постоянный цейтнот не позволил вникнуть в ответ cheshiki1.
Если сегодня еще буду дома, тогда вечером задам пару вопросиков для cheshiki1.
Но большая вероятность что это будет уже на след. неделе
Всем спасибо