Есть текстовая фраза в ячейке A2, содержащая буквы, цифры, знаки. Необходимо написать формулу, которая выделяет последовательность из шести подряд идущих цифр, при этом последовательность цифр может отделяться пробелами, буквами или другими знаками отличных от цифр, быть в начале фразы или в конце, фраза может состоять только из 6 цифр. Если последовательность состоит из менее или более чем 6 цифр то ее выделять не нужно. Если в фразе встречается несколько последовательностей из 6 цифр, то выделяется первая последовательность (или любая, не имеет значения) Если в фразе не встречается ни одной последовательностей из 6 цифр, то возвращается пустая строка. Фраза состоит не более чем из 900 знаков (можно использовать СТРОКА($1:$999) Формула должна быть копируема вниз.
Пример текстовых фраз во вложении. Есть формула менее 140 знаков
Есть текстовая фраза в ячейке A2, содержащая буквы, цифры, знаки. Необходимо написать формулу, которая выделяет последовательность из шести подряд идущих цифр, при этом последовательность цифр может отделяться пробелами, буквами или другими знаками отличных от цифр, быть в начале фразы или в конце, фраза может состоять только из 6 цифр. Если последовательность состоит из менее или более чем 6 цифр то ее выделять не нужно. Если в фразе встречается несколько последовательностей из 6 цифр, то выделяется первая последовательность (или любая, не имеет значения) Если в фразе не встречается ни одной последовательностей из 6 цифр, то возвращается пустая строка. Фраза состоит не более чем из 900 знаков (можно использовать СТРОКА($1:$999) Формула должна быть копируема вниз.
Пусть люди подтянутся. Мало ли какие причины. Подождём до понедельника. Пока лучшее, что я придумал 95 символов и условное форматирование на Н/Д.
Пусть люди подтянутся. Мало ли какие причины. Подождём до понедельника. Пока лучшее, что я придумал 95 символов и условное форматирование на Н/Д.Светлый
Ещё одну формулу придумал на совершенно другом принципе 97 символов, но тоже с #Н/Д. А для 2003 никак не получается. Не могу из плоскости проблемы выйти.
Ещё одну формулу придумал на совершенно другом принципе 97 символов, но тоже с #Н/Д. А для 2003 никак не получается. Не могу из плоскости проблемы выйти.Светлый
Для подавления ошибки я просто добавляю шестизначное число с пробелом за счет СТРОКА()-СТОЛБЕЦ() вместо СТРОКА()+СТОЛБЕЦ()-2, можно было бы сократить 2 символа, но до этого я не додумался
PS: Что то я до ЧАСТОТы не додумался, в формуле Светлого можно подавить ошибки удлинив формулу на 8 знаков (добавив пробел и шестизначное число), получится самая короткая формула
Для подавления ошибки я просто добавляю шестизначное число с пробелом за счет СТРОКА()-СТОЛБЕЦ() вместо СТРОКА()+СТОЛБЕЦ()-2, можно было бы сократить 2 символа, но до этого я не додумался
PS: Что то я до ЧАСТОТы не додумался, в формуле Светлого можно подавить ошибки удлинив формулу на 8 знаков (добавив пробел и шестизначное число), получится самая короткая формула
ПОИСКПОЗ ищет в массиве значение 7, из его номера вычитает 6 - это начало искомой последовательности из 6 цифр. ЧАСТОТА подсчитывает, сколько последовательных чисел СТРОКА(1:999) попадёт в интервалы массива возрастающих чисел, среди которых встречаются нулевые значения. Проще - подсчитывает, сколько подряд нулевых значений в списке +1. Нулевые значения в массиве получаются на месте любой цифры в исходной строке за счёт работы функции ЕОШ. Ошибка получится, если любой вырезанный из строки символ взять со знаком минус. Цифры ошибку не дают. А конструкция A2&-7^7 гарантирует присутствие в исследуемом тексте шести цифр, отделённых от исходного текста знаком минус. Функция ПОИСКПОЗ ошибку не выдаст, но извлекаемые из строки символы будут за пределами исходной строки, если там нет своих шести цифр.
ПОИСКПОЗ ищет в массиве значение 7, из его номера вычитает 6 - это начало искомой последовательности из 6 цифр. ЧАСТОТА подсчитывает, сколько последовательных чисел СТРОКА(1:999) попадёт в интервалы массива возрастающих чисел, среди которых встречаются нулевые значения. Проще - подсчитывает, сколько подряд нулевых значений в списке +1. Нулевые значения в массиве получаются на месте любой цифры в исходной строке за счёт работы функции ЕОШ. Ошибка получится, если любой вырезанный из строки символ взять со знаком минус. Цифры ошибку не дают. А конструкция A2&-7^7 гарантирует присутствие в исследуемом тексте шести цифр, отделённых от исходного текста знаком минус. Функция ПОИСКПОЗ ошибку не выдаст, но извлекаемые из строки символы будут за пределами исходной строки, если там нет своих шести цифр.Светлый
Программировать проще, чем писать стихи.
Сообщение отредактировал Светлый - Четверг, 12.05.2016, 19:14
Кстати, на основе замечательной формулы от Светлый очень легко вывести формулу для выделения от 1 до 20 цифр, просто заменив "6" на нужное количество выделяемых цифр.
Кстати, на основе замечательной формулы от Светлый очень легко вывести формулу для выделения от 1 до 20 цифр, просто заменив "6" на нужное количество выделяемых цифр.
Помогите пожалуйста оптимизировать. Скомбинировал на основе последней формулы bedvit такой алгоритм Выделяется из строки сначала 5 цифр, если не находится - то 4, если нет - то 3
Получилось очень длинно, и очевидно, что не оптимально Как сделать красивее?
Помогите пожалуйста оптимизировать. Скомбинировал на основе последней формулы bedvit такой алгоритм Выделяется из строки сначала 5 цифр, если не находится - то 4, если нет - то 3
Подскажите, эта формула сейчас берет первое вхождение искомого количества цифр. А как сделать чтобы по тому же алгоритму определялись числа, но с конца строки? Типа последнее вхождение находить
krosav4ig, спасибо! Работает. Очень круто. Очень!
Подскажите, эта формула сейчас берет первое вхождение искомого количества цифр. А как сделать чтобы по тому же алгоритму определялись числа, но с конца строки? Типа последнее вхождение находитьjusitnow
krosav4ig, да, спасибо огромное - работает как надо! Думаю многим пригодится чтобы выделять, например, только артикул из строки с полным наименованием товара
krosav4ig, да, спасибо огромное - работает как надо! Думаю многим пригодится чтобы выделять, например, только артикул из строки с полным наименованием товараjusitnow