Извлечь число из текстовой строки

В учебнике показано, как извлечь число из различных текстовых строк в Excel с помощью формул и инструмента «Извлечь».

Когда дело доходит до извлечения части текстовой строки заданной длины, Excel предоставляет три функции подстроки (левая, правая и средняя) для быстрого выполнения задачи. Когда дело доходит до извлечения чисел из буквенно-цифровой строки, Microsoft Excel… ничего не дает.

Чтобы получить число из строки в Excel, нужно немного смекалки, немного терпения и куча разных функций, вложенных друг в друга. Или вы можете запустить инструмент «Извлечение» и выполнить работу одним щелчком мыши. Ниже вы найдете полную информацию об обоих методах.

Как извлечь число из конца текстовой строки

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

ПРАВИЛЬНО(клеткаЛЕН(клетка) – МАКС(ЕСЛИ(ЧИСЛО(СРЕДНЕЕ(клеткаСТРОКА(ДВССЫЛ(“1:”&ДЛСТР(клетка))), 1) *1)=ЛОЖЬ, СТРОКА(ДВССЫЛ(“1:”&ДЛСТР(клетка))), 0)))

На логике формулы остановимся чуть позже. А пока просто замените клетка со ссылкой на ячейку, содержащую исходную строку (в нашем случае A2), и введите формулу в любую пустую ячейку в той же строке, скажем, в B2:

=ПРАВАЯ(A2, ДЛСТР(A2) – МАКС(ЕСЛИ(ЧИСЛО(ЧИСЛО(СРЕДНЯЯ(A2, СТРОКА(ДВССЫЛ(“1:”&ДЛСТР(A2))), 1) *1)=ЛОЖЬ, СТРОКА(ДВССЫЛ(“1: “&ДЛСТР(A2))), 0)))

Эта формула получает число только с конца. Если в строке также есть числа в начале или в середине, они игнорируются:
alt=

Извлечение выполняется с помощью функции ПРАВО, которая относится к категории текстовых функций. Вывод этой функции всегда текст. В нашем случае результатом является числовая подстрока, которая в терминах Excel тоже является текстом, а не числом.

Если вам нужно, чтобы результатом было число (которое вы можете использовать в дальнейших вычислениях), то заверните формулу в функцию ЗНАЧ или выполните арифметическую операцию, которая не изменит результат, скажем, умножьте на 1 или прибавьте 0. Чтобы поймать ошибки в строках, не содержащих ни одного числа, используйте функцию ЕСЛИОШИБКА. Например:

=ЕСЛИОШИБКА(ЗНАЧЕНИЕ(ПРАВО(A2, ДЛСТР(A2) – МАКС(ЕСЛИ(ЕСЧИСЛО(СРЕДН(A2, СТРОКА(ДВССЫЛ(“1:”&ДЛСТР(A2))), 1)*1)=ЛОЖЬ, СТРОКА(ДВССЫЛ (“1:”&ДЛСТР(A2))), 0)))), “”)

или же

=ЕСЛИОШИБКА(ПРАВО(A2, ДЛСТР(A2) – МАКС(ЕСЛИ(ЕСЧИСЛО(СРЕДН(A2, СТРОКА(ДВССЫЛ(“1:”&ДЛСТР(A2))), 1) *1)=ЛОЖЬ, СТРОКА(ДВССЫЛ(” 1:”&ДЛСТР(A2))), 0))) +0, “”)
Улучшенная формула для извлечения числа из конца строки.

Примечание. В Dynamic Array Excel (Office 365 и 2021) вы вводите формулу обычным способом с помощью клавиши Enter. В Excel 2019 и более ранних версиях он работает только как формула массива, поэтому не забудьте нажать Ctrl + Shift + Enter, чтобы завершить его.

Как работает эта формула:

Чтобы извлечь число из буквенно-цифровой строки, первое, что вам нужно знать, это где начать извлечение. Позиция последнего нечислового символа в строке определяется с помощью этой хитрой формулы:

МАКС(ЕСЛИ(ЕСЧИСЛО(СРЕДН(A2, СТРОКА(ДВССЫЛ(“1:”&ДЛСТР(A2))), 1)*1)=ЛОЖЬ, СТРОКА(ДВССЫЛ(“1:”&ДЛСТР(A2))), 0) )

Чтобы понять логику, давайте исследуем его изнутри:

Комбинация ROW(INDIRECT(“1:”&LEN(A2))) создает последовательность чисел, соответствующую общему количеству символов в исходной строке (A2), и мы подаем эти последовательные числа в MID в качестве начальных чисел:

СРЕДНЕ(A2, {1;2;3;4;5;6;7;8}, 1)

Функция MID извлекает каждый отдельный символ из A2 и возвращает их в виде массива:

{“0″;”5″;”-“;”Е”;”С”;”-“;”0″;”1”}

Поскольку MID является текстовой функцией, ее вывод всегда является текстом (как вы можете заметить, все символы заключены в кавычки). Чтобы преобразовать числовые единицы в числа, мы умножаем массив на 1 (двойное отрицание –MID() будет иметь тот же эффект). Результатом этой операции является массив чисел и #ЗНАЧ! ошибки, представляющие нечисловые символы:

IЧИСЛО({0;5;#ЗНАЧ!;#ЗНАЧ!;#ЗНАЧ!;#ЗНАЧ!;0;1})

Функция ISNUMBER оценивает каждый элемент массива и выдает свой вердикт в виде логических значений — TRUE для чисел, FALSE для всего остального:

{ИСТИНА; ИСТИНА; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ИСТИНА; ИСТИНА}

Этот массив проходит логическую проверку функции ЕСЛИ, где каждый элемент массива сравнивается с ЛОЖЬЮ:

ЕСЛИ({ИСТИНА;ИСТИНА;ЛОЖЬ;ЛОЖЬ;ЛОЖЬ;ЛОЖЬ;ИСТИНА;ИСТИНА}=ЛОЖЬ, СТРОКА(ДВССЫЛ(“1:”&ДЛСТР(A2))), 0)

Для каждого FALSE (нечислового значения) другая функция ROW(INDIRECT()) возвращает его относительную позицию в строке. Для каждого TRUE (числовое значение) возвращается ноль. Результирующий массив выглядит следующим образом:

{0;0;3;4;5;6;0;0}

Остальное легко. Функция MAX находит наибольшее число в приведенном выше массиве, которое является позицией последнего нечислового значения в строке (6 в нашем случае). Просто вычтите эту позицию из общей длины строки, возвращаемой LEN, и передайте результат в RIGHT, чтобы он знал, сколько символов нужно извлечь из правой части строки:

ВПРАВО(A2, ДЛИН.(A2) – 6)

Сделанный!

Как извлечь число из начала текстовой строки

Если вы работаете с записями, в которых текст стоит после числа, вы можете извлечь число из начала строки, используя эту общую формулу:

ОСТАВИЛ(клеткаСОВПАДЕНИЕ(ЛОЖЬ, IНОМЕР(СРЕДНИЙ(клеткаСТРОКА(ДВССЫЛ(“1:”&ДЛСТР(клетка)+1)), 1) *1), 0) -1)

С исходной строкой в ​​A2 используйте следующую формулу, чтобы получить число:

=ЛЕВО(A2, СОВПАДЕНИЕ(ЛОЖЬ, IНОМЕР(СРЕДН(A2, СТРОКА(ДВССЫЛ(“1:”&ДЛСТР(A2)+1)), 1) *1), 0) -1)

Независимо от того, сколько цифр в середине или в конце, извлекается только начальное число:
Формула для извлечения числа из начала текстовой строки

Примечание. В Excel 365 и Excel 2021 благодаря поддержке динамических массивов обычная формула работает нормально. В Excel 2019 и более ранних версиях вы должны нажать Ctrl + Shift + Enter, чтобы явно сделать его формулой массива.

Как работает эта формула:

Здесь мы снова используем комбинацию функций СТРОКА, ДВССЫЛ и ДЛСТР, чтобы создать последовательность чисел, равную общему количеству символов в исходной строке плюс 1 (роль этого дополнительного символа станет ясна чуть позже).

СТРОКА(ДВССЫЛ(“1:”&ДЛСТР(A2)+1))

MID и ISNUMBER выполняют ту же работу, что и в предыдущем примере — MID извлекает отдельные символы, а ISNUMBER преобразует их в логические значения. Результирующий массив значений ИСТИНА и ЛОЖЬ поступает в функцию ПОИСКПОЗ в виде массива поиска:

СОВПАДЕНИЕ (ЛОЖЬ, {ИСТИНА; ИСТИНА; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ИСТИНА; ИСТИНА; ЛОЖЬ}, 0)

ПОИСКПОЗ вычисляет относительную позицию первого FALSE, давая нам позицию первого нечислового символа в строке (3 в A2). Чтобы извлечь предыдущие числа, мы вычитаем 1 из позиции первого текстового символа и передаем разницу в num_chars аргумент ЛЕВОЙ функции:

ВЛЕВО(A2, 3-1)

Теперь вернемся к «лишнему» символу в последовательности, сгенерированной ROW(INDIRECT()+1)). Как вы уже знаете, эта последовательность служит отправной точкой для функции MID. Без +1 MID извлечет ровно столько символов, сколько содержится в исходной строке. Если строка содержит только числа, ISNUMBER вернет только TRUE, а MATCH требует хотя бы одного FALSE. Для этого мы добавляем к общей длине строки еще один символ, который функция MID преобразует в пустую строку. Например, в B7 MID возвращает этот массив:

{“1″;”2″;”3″;”4″;””}

Примечание. Как и в случае с функцией RIGHT, LEFT также возвращает числовую подстроку, которая технически является текстом, а не числом. Чтобы получить результат в виде числа, а не числовой строки, вложите формулу в функцию ЗНАЧ или умножьте результат на 1, как показано в первом примере.

Как получить число с любой позиции в строке

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

=СУММПРОИЗВ(СРЕДН(0&A2, НАИБОЛЬШИЙ(ИНДЕКС(ЧИСЛО(–СРЕДН(A2, СТРОКА(ДВССЫЛ(“1:”&ДЛСТР(A2))), 1)) * СТРОКА(ДВССЫЛ(“1:”&ДЛСТР(A2) )), 0), СТРОКА(ДВССЫЛ(“1:”&ДЛСТР(A2))))+1, 1) * 10^СТРОКА(ДВССЫЛ(“1:”&ДЛСТР(A2)))/10)

Где A2 — исходная текстовая строка.

Разбор этой формулы потребует отдельной статьи, поэтому вы можете просто скопировать ее на свой рабочий лист, чтобы убедиться, что она действительно работает 🙂
Формула для получения числа из любой позиции в строке

Однако при изучении результатов можно заметить один незначительный недостаток — если исходная строка не содержит числа, формула возвращает ноль, как в строке 6 на скриншоте выше. Чтобы исправить это, вы можете обернуть формулу в оператор IF, логическая проверка которого проверяет, содержит ли исходная строка какое-либо число. Если это так, формула извлекает число, иначе возвращает пустую строку:

=ЕСЛИ(СУММ(ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2, {“0″,”1″,”2″,”3″,”4″,”5″,”6″,”7″,” 8″,”9″}, “”)))>0, СУММПРОИЗВ(СРЕДН(0&A2, НАИБОЛЬШИЙ(ИНДЕКС(ЧИСЛО(–СРЕДН(A2,СТРОКА(ДВССЫЛ(“$1:$”&ДЛСТР(A2))), 1))* СТРОКА(ДВССЫЛ(“$1:$”&ДЛСТР(A2))),0), СТРОКА(ДВССЫЛ(“$1:$”&ДЛС(A2))))+1,1) * 10^СТРОКА(ДВССЫЛ (“$1:$”&ДЛСТР(A2)))/10),””)

Как показано на снимке экрана ниже, улучшенная формула прекрасно работает (спасибо Алексу, нашему гуру Excel, за это улучшение):
Улучшенная формула для извлечения числа из любого места в строке.

В отличие от всех предыдущих примеров результатом этой формулы является число. Чтобы убедиться в этом, просто обратите внимание на выровненные по правому краю значения в столбце B и усеченные ведущие нули.

Кончик. В Excel 365 – Excel 2019 есть гораздо более простое решение с помощью функции TEXTJOIN. См. Как удалить текст и сохранить числа.

Извлечь число из текстовой строки с помощью Ultimate Suite

Как вы только что видели, не существует тривиальной формулы Excel для извлечения числа из текстовой строки. Если у вас есть трудности с пониманием формул или их настройкой для ваших наборов данных, вам может понравиться этот простой способ получить число из строки в Excel.

С нашим Ultimate Suite, добавленным на вашу ленту Excel, вы можете быстро получить число из любой буквенно-цифровой строки:

  1. Перейти к Данные об аблебитах вкладка > Текст группу и нажмите Извлечь:
    Инструмент извлечения для Excel
  2. Выберите все ячейки с исходными строками.
  3. На панели инструмента «Извлечь» выберите переключатель «Извлечь числа».
  4. В зависимости от того, хотите ли вы, чтобы результаты были формулами или значениями, установите флажок «Вставить как формулу» или оставьте его невыбранным (по умолчанию).

    Я советую установить этот флажок, если вы хотите, чтобы извлеченные числа автоматически обновлялись, как только в исходные строки вносятся какие-либо изменения. Если вы хотите, чтобы результаты не зависели от исходных строк (например, если вы планируете удалить исходные данные позже), не устанавливайте этот флажок.

  5. Нажмите кнопку Вставить результаты. Сделанный!

Извлекайте числа и вставляйте результаты в виде формул или значений.

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

В этом примере мы решили вставить результаты в виде значений, и надстройка сделала именно то, о чем просили:
Числа извлекаются из строк как значения.

Если Вставить как формулу Если флажок установлен, вы увидите формулу в строке формул. Интересно узнать какой? Просто скачайте пробную версию Ultimate Suite и убедитесь сами 🙂

Доступные загрузки

Номер извлечения Excel — образец книги (файл .xlsx)
Ultimate Suite – пробная версия (файл .exe)

Вас также могут заинтересовать

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *