Формула Excel: разделение текста и чисел -

Содержание

Общая формула

=MIN(FIND((0,1,2,3,4,5,6,7,8,9),A1&"0123456789"))

Резюме

Чтобы разделить текст и числа, вы можете использовать формулу, основанную на функции НАЙТИ, функции МИН и функции ДЛСТР с функцией ВЛЕВО или ВПРАВО, в зависимости от того, хотите ли вы извлечь текст или число. В показанном примере формула C5 имеет следующий вид:

=MIN(FIND((0,1,2,3,4,5,6,7,8,9),B5&"0123456789"))

который возвращает 7, позицию числа 3 в строке "apples30".

Объяснение

Обзор

Формула выглядит сложной, но на самом деле механика довольно проста.

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

В этом случае мы предполагаем, что числа и текст объединены, и что число появляется после текста. Из исходного текста, который отображается в одной ячейке, вы хотите разделить текст и числа на отдельные ячейки, например:

Оригинал Текст Число
Яблоки30 Яблоки 30
персики24 персики 24
апельсины12 апельсины 12
персики0 персики 0

Как указано выше, ключ в этом случае - найти начальную позицию числа, что можно сделать с помощью такой формулы:

=MIN(FIND((0,1,2,3,4,5,6,7,8,9),A1&"0123456789"))

Когда у вас есть позиция, чтобы извлечь только текст, используйте:

=LEFT(A1,position-1)

И, чтобы извлечь только число, используйте:

=RIGHT(A1,LEN(A1)-position+1)

В первой формуле выше мы используем функцию НАЙТИ, чтобы найти начальную позицию числа. Для find_text мы используем константу массива (0,1,2,3,4,5,6,7,8,9), это заставляет функцию FIND выполнять отдельный поиск для каждого значения в константе массива. Поскольку константа массива содержит 10 чисел, результатом будет массив с 10 значениями. Например, если исходный текст - «яблоки30», результирующий массив будет:

(8,10,11,7,13,14,15,16,17,18)

Каждое число в этом массиве представляет позицию элемента в константе массива внутри исходного текста.

Затем функция MIN возвращает наименьшее значение в списке, которое соответствует позиции первого числа в исходном тексте. По сути, функция НАЙТИ получает все числовые позиции, а MIN дает нам первую числовую позицию: обратите внимание, что 7 - это наименьшее значение в массиве, которое соответствует позиции числа 3 в исходном тексте.

Вам может быть интересно узнать о странной конструкции для within_text в функции поиска:

B5&"0123456789"

Эта часть формулы объединяет все возможные числа от 0 до 9 с исходным текстом в B5. К сожалению, FIND не возвращает ноль, если значение не найдено, поэтому это просто умный способ избежать ошибок, которые могут возникнуть, когда число не найдено.

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

Если исходный текст не содержит цифр, будет возвращена "фиктивная" позиция, равная длине исходного текста + 1. С этой фиктивной позицией приведенная выше формула LEFT по-прежнему будет возвращать текст, а формула RIGHT вернет пустую строку ("").

Хорошие ссылки

Формула Рика Ротштейна на Mr Excel

Интересные статьи...