Страницы: 1
RSS
Извлечь первую группу цифр из строки (формулой), не менее 2 символов подряд
 
Добрый день всем.

Есть строки, содержащие буквы, цифры, пробелы и символы типа "-", "/", ",", "."
Мне необходимо извлечь из строки первую группу цифр длиной не менее 2 символов. Позиция группы не фиксирована, перед ней могут встречаться одиночные цифры. Последовательность может начинаться с 0, такую тоже считаем. Например, "07" - нас интересует.

Например,
"RAS-5M34UAV-E наружный блок мультисистемы, 10,0 кВт, инвертор" - результат д.б. 34
"RAS-18N3KV-E внутренний (настенный) блок"  - результат д.б. 18
"MMY-MAP1204HT8P-E наружный блок VRF системы, 33,5 кВт, инвертор" - результат д.б. 1204

Как извлечь первую/последнюю цифру - знаю. Как извлечь все цифры из строки - знаю. Как извлечь цифровую последовательность заданной длины - тоже нашел.

Но вот как извлечь первую цифровую последовательность длиной не менее N символов?

Понятно, что быстрее всего регулярками, чуть медленнее, но тоже быстро - обычным макросом, но нужно именно формулами, и желательно одной формулой.

Подкиньте идею, плз. Мои жалкие попытки и образцы текста в файле. Пока максимум, чего удалось достичь - массив позиций цифр в строке.
Изменено: Максим Зеленский - 08.07.2015 11:56:34
F1 творит чудеса
 
=ПСТР(A2;ПОИСКПОЗ(1=1;ЕЧИСЛО(--ПСТР(ПОДСТАВИТЬ(A2;"-";"ю");СТРОКА($1:$99);2));0);ПОИСКПОЗ(1=1;ЕОШ(--ПСТР(ПСТР(A2;ПОИСКПОЗ(1=1;ЕЧИСЛО(--ПСТР(ПОДСТАВИТЬ(A2;"-";"ю");СТРОКА($1:$99);2));0);99);СТРОКА($1:$99);1));0)-1)
 
=ЕСЛИ(ЕЧИСЛО(--ПСТР(A2;СТРОКА(1:99);2))...)
где 2 - длина числа. Добавить удаление пробелов, т.к. с пробелами возможно неправильное определение.
 
vikttur, а длина числа изначально не известна. Была бы известна - какой вопрос...
но поразмыслить в этом направлении дальше можно
F1 творит чудеса
 
2 - это не длина числа, а
Цитата
Максим Зеленский написал:
первую группу цифр длиной не менее 2 символов
 
Catboyun, спасибо, работает! Возьму на заметку
F1 творит чудеса
 
=ПРОСМОТР(9^9;--ПСТР(A2;ПОИСКПОЗ(2;МУМНОЖ(--ЕЧИСЛО(-ПСТР(A2;СТРОКА($1:$99)+{0;1};1));{1:1}););{1;2;3;4;5}))

выбирает первое число не менее 2 символов и не более 5 (это все легко правится без существенного увеличения формулы),
возвращается числом с удалением ведущих нулей
 
MCH, спасибо! для практических целей подойдет в самый раз

Catboyun, так вроде комментарий был по поводу формулы vikttur с ЕСЛИ, если честно, его идею я до конца не проверял.
F1 творит чудеса
 
vikttur, просто дал направление мысли,
оно сходится с моей формулой
моя часть формулы
ЕЧИСЛО(--ПСТР(ПОДСТАВИТЬ(A2;"-";"ю");СТРОКА($1:$99);2))
vikttur:
ЕЧИСЛО(--ПСТР(A2;СТРОКА(1:99);2))
практически тоже самое.
Изменено: Catboyun - 08.07.2015 16:21:34
Страницы: 1
Наверх