Excel найти первую цифру в ячейке

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

Вариант 1

{=ПОИСКПОЗ(ЛОЖЬ;ЕОШ(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1)-1);0)}

Формула поиска позиции первой цифры в ячейке

Как она это делает? Из массива вычитается единица (это может быть любое число), далее полученный массив ошибок и валидных значений обрабатывается функцией ЕОШ. Ошибки вычисления (там, где были нечисловые символы) вернут ИСТИНА, цифровые символы – ЛОЖЬ.

Функция ПОИСКПОЗ возвращает позицию первой цифры через поиск первого значения ЛОЖЬ.

Как и все формулы массива в Excel, данная формула вводится сочетанием клавиш Ctrl+Shift+Enter.

Вариант 2

Есть и вот такая вариация формулы массива, использующая функции МИН, ПОИСК, СИМВОЛ и ЕСЛИОШИБКА:

{=МИН(ЕСЛИОШИБКА(ПОИСК(СИМВОЛ(СТРОКА(48:57));A1);""))}

Её принцип несколько иной –

  1. каждый из 10 цифровых символов ищется внутри строки функцией ПОИСК, возвращающей в успешных случаях его позицию, а в неуспешных – ошибку
  2. массив результатов обрабатывается функцией ЕСЛИОШИБКА и вместо ошибок вставляет в массив пустоты, чтобы из-за ошибок не прерывалась работа функции МИН
  3. результирующий массив обрабатывает функция МИН и возвращает минимальную из позиций – это и есть позиция первой цифры в ячейке

Функция более требовательна к ресурсам компьютера (строковые функции “дороже” математических), поэтому рекомендуется первый вариант.

Применение формул

Наиболее понятное применение – это когда нужно отделить в ячейке текст от цифр или удалить текст до первой цифры.

Skip to content

Как быстро извлечь число из текста в Excel

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

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

Вот что мы рассмотрим в этой статье:

  • Как извлечь число в конце текста
  • Получаем число из начала текста
  • Как извлечь все числа из текста
  • Извлекаем числа без формул при помощи Ultimate Suite

Когда дело доходит до извлечения части текстового значения заданной длины, Эксель предоставляет три текстовых функции (ЛЕВСИМВ, ПРАВСИМВ и ПСТР) для быстрого выполнения этой задачи. А вот когда дело доходит до извлечения числа из буквенно-цифровой строки, Microsoft Excel … не предоставляет ничего.

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

Или вы можете запустить инструмент «Извлечь (Extract)» из надстройки Ablebits Ultimate Suite и выполнить эту операцию одним щелчком мыши. Ниже вы найдете полную информацию обо всех этих методах.

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

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

Важное замечание! В приведенных ниже формулах извлечение выполняется с помощью функций ПРАВСИМВ и ЛЕВСИМВ, которые относятся к категории текстовых функций. Эти функции всегда возвращают текст. В нашем случае результатом будет числовая подстрока, которая с точки зрения Excel также является текстом, а не числом. Если вам нужно, чтобы результат был числом (которое можно использовать в дальнейших вычислениях), оберните соответствующую формулу в функцию ЗНАЧЕН, или выполните с ней простейшую математическую операцию (например, двойное отрицание).

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

=МИН(ПОИСК({0;1;2;3;4;5;6;7;8;9}; ячейка &»0123456789″))

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

=МИН(ПОИСК({0;1;2;3;4;5;6;7;8;9};A2&»0123456789″))

Хотя формула содержит константу массива, это обычное выражение, которое вводится обычным способом: нажатием клавиши Enter.

Как только позиция первой цифры определена, можно использовать функцию ПРАВСИМВ для извлечения числа. Чтобы узнать, сколько символов нужно извлечь, вы вычитаете позицию первой цифры из общей длины строки и добавляете единицу к результату, потому что первая цифра также должна быть включена:

=ПРАВСИМВ(A2;ДЛСТР(A2)-B2+1)

Где A2 — исходная ячейка, а B2 — позиция первой цифры.

На следующем скриншоте показаны результаты:

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

=ПРАВСИМВ(A2;ДЛСТР(A2)-МИН(ПОИСК({0;1;2;3;4;5;6;7;8;9};A2&»0123456789″))+1)

Чтобы формула возвращала именно число, а не числовую строку, вложите ее в функцию ЗНАЧЕН:

=ЗНАЧЕН(ПРАВСИМВ(A2;ДЛСТР(A2)-МИН(ПОИСК({0;1;2;3;4;5;6;7;8;9};A2&»0123456789″))+1))

Или просто примените двойное отрицание, использовав два знака «минус»:

=—ПРАВСИМВ(A2;ДЛСТР(A2)-МИН(ПОИСК({0;1;2;3;4;5;6;7;8;9};A2&»0123456789″))+1)

Другой способ извлечь число из конца строки — использовать вот такое выражение:

=ПРАВСИМВ( ячейка ;СУММ(ДЛСТР( ячейка ) — ДЛСТР(ПОДСТАВИТЬ( ячейка ; {«0″;»1″;»2″;»3″;»4″;»5″;»6″;»7″;»8″;»9″};»»))))

Используя исходный текст в A2, вы записываете приведенную ниже формулу в B2 или любую другую пустую ячейку в той же строке, а затем копируете её вниз по столбцу:

=ПРАВСИМВ(A2;СУММ(ДЛСТР(A2) — ДЛСТР(ПОДСТАВИТЬ(A2; {«0″;»1″;»2″;»3″;»4″;»5″;»6″;»7″;»8″;»9″};»»))))

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

Этих недостатков не имеет третья формула, которая извлекает только последнее число в тексте, игнорируя все предыдущие:

=ПРАВСИМВ(A2; ДЛСТР(A2) — МАКС(ЕСЛИ(ЕЧИСЛО(ПСТР(A2; СТРОКА(ДВССЫЛ( «1:»&ДЛСТР(A2))); 1) *1)=ЛОЖЬ; СТРОКА(ДВССЫЛ( «1:»&ДЛСТР(A2))); 0)))

На скриншоте ниже вы видите результат ее работы.

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

Примечание. Если вы используете Excel 2019 или более ранние версии, нужно использовать формулу массива, нажав при вводе комбинацию Ctrl+Shift+Enter. Если у вас Office365, вводите как обычно, через Enter.

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

Если вы работаете со строками, в которых текст находится после числа, решение для извлечения числа будет аналогично описанному выше. С той только разницей, что вы используете функцию ЛЕВСИМВ для извлечения из левой части текста:

=ЛЕВСИМВ( ячейка ;СУММ(ДЛСТР( ячейка )-ДЛСТР(ПОДСТАВИТЬ( ячейка ;{«0″;»1″;»2″;»3″;»4″;»5″;»6″;»7″;»8″;»9″};»»))))

Используя этот метод для A2, извлекаем число при помощи такого выражения:

=ЛЕВСИМВ(A2;СУММ(ДЛСТР(A2)-ДЛСТР(ПОДСТАВИТЬ(A2;{«0″;»1″;»2″;»3″;»4″;»5″;»6″;»7″;»8″;»9″};»»))))

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

Если вы хотите извлечь только числа слева и игнорировать остальные, воспользуйтесь другой формулой:

=ЛЕВСИМВ(A2;ПОИСКПОЗ(ЛОЖЬ;ЕЧИСЛО(—ПСТР(A2;СТРОКА($1:$94);1));0)-1)

Или чуть модифицируем, чтобы ускорить расчеты:

=ЛЕВСИМВ(A2; ПОИСКПОЗ(ЛОЖЬ; ЕЧИСЛО(ПСТР(A2; СТРОКА(ДВССЫЛ( «1:»&ДЛСТР(A2)+1)); 1) *1); 0) -1)

Если у вас Excel 2019 и ниже, вводите ее как формулу массива, используя Ctrl+Shift+Enter. В Office365 и выше можно вводить как обычно.

Примечание. Как и в случае с функцией ПРАВСИМВ, функция ЛЕВСИМВ также возвращает числовую подстроку, которая технически является текстом, а не числом.

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

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

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

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

Для пояснения, как это работает, потребуется отдельная статья. Поэтому вы можете просто скопировать на свой рабочий лист, чтобы убедиться, что это действительно работает :)

Обратите внимание, что в этом случае в тексте могут находиться несколько чисел. Все они будут извлечены и объединены в единое целое.

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

=ЕСЛИ(СУММ(ДЛСТР(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);»»)

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

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

Мы будем искать позицию знака «№» и позицию следующего за ним первого пробела. То, что находится между ними, как раз и будет номером счёта:

=ПСТР(ПОДСТАВИТЬ(A2;» «;»»);НАЙТИ(«№»;ПОДСТАВИТЬ(A2;» «;»»))+1;НАЙТИ(» «;A2;НАЙТИ(«№»;A2;1))-НАЙТИ(«№»;A2;1)-1)

На скриншоте ниже вы видите, как это работает.

Вот еще один возможный вариант вынимания числа из текста. Необходимо извлечь первое встретившееся число из текста.

Используем формулу

=ПРОСМОТР(2^64;—ЛЕВСИМВ(ПСТР(A1&»_0″;МИН(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A1&»_0123456789″));15); {1;2;3;4;5;6;7;8;9;10;11;12;13;14;15}))

или заменяем список цифр функцией:

=ПРОСМОТР(2^64;—ЛЕВСИМВ(ПСТР(A1&»_0″;МИН(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A1&»_0123456789″));15); СТРОКА($A$1:$IV$16)))

Как видите, получаем только первое число, независимо от его расположения:

И еще один пример. Давайте попробуем достать все числа из текста, разграничив их каким-то разделителем. Например, дефисом “-“.

В этом случае придется использовать формулу массива:

{=ПОДСТАВИТЬ(СЖПРОБЕЛЫ(СЦЕП(ЕСЛИ(ЕЧИСЛО(—ПСТР(A2;СТРОКА($1:$94);1));ПСТР(A2;СТРОКА($1:$94);1);» «)));» «;»-«)}

Мы нашли все числа в тексте, как вы видите на скриншоте ниже:

Откорректировав эту формулу, вы можете использовать любой другой разделитель.

Поскольку между ними есть разделители, то вы легко можете распределить эти числа в отдельные ячейки. Как это сделать — читайте в материале 8 способов разделить ячейку Excel на две или несколько.

Как выделить число из текста с помощью Ultimate Suite

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

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

  1. Перейдите на вкладку Ablebits Data > Text и нажмите Извлечь (Extract) :

  1. Выделите все ячейки с данными, которые нужно обработать.
  2. На панели инструмента «Извлечь (Extract)» установите переключатель «Извлечь числа (Extract numbers)».
  3. В зависимости от того, хотите ли вы, чтобы результаты были формулами или значениями, выберите поле «Вставить как формулу (Insert as formula)» или оставьте его пустым (по умолчанию).

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

  1. Нажмите кнопку «Вставить результаты (Insert Results)». Готово!

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

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

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

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

Как быстро посчитать количество слов в Excel В статье объясняется, как подсчитывать слова в Excel с помощью функции ДЛСТР в сочетании с другими функциями Excel, а также приводятся формулы для подсчета общего количества или конкретных слов в…
Как умножить число на процент и прибавить проценты Ранее мы уже научились считать проценты в Excel. Рассмотрим несколько случаев, когда известная нам величина процента помогает рассчитать различные числовые значения. Чему равен процент от числаКак умножить число на процентКак…
Как считать проценты в Excel — примеры формул В этом руководстве вы познакомитесь с быстрым способом расчета процентов в Excel, найдете базовую формулу процента и еще несколько формул для расчета процентного изменения, процента от общей суммы и т.д.…
Функция ПРАВСИМВ в Excel — примеры и советы. В последних нескольких статьях мы обсуждали различные текстовые функции. Сегодня наше внимание сосредоточено на ПРАВСИМВ (RIGHT в английской версии), которая предназначена для возврата указанного количества символов из крайней правой части…
Функция ЛЕВСИМВ в Excel. Примеры использования и советы. В руководстве показано, как использовать функцию ЛЕВСИМВ (LEFT) в Excel, чтобы получить подстроку из начала текстовой строки, извлечь текст перед определенным символом, заставить формулу возвращать число и многое другое. Среди…
5 примеров с функцией ДЛСТР в Excel. Вы ищете формулу Excel для подсчета символов в ячейке? Если да, то вы, безусловно, попали на нужную страницу. В этом коротком руководстве вы узнаете, как использовать функцию ДЛСТР (LEN в английской версии)…
Как быстро сосчитать количество символов в ячейке Excel В руководстве объясняется, как считать символы в Excel. Вы изучите формулы, позволяющие получить общее количество символов в диапазоне и подсчитывать только определенные символы в одной или нескольких ячейках. В нашем предыдущем…

 

Kkim

Пользователь

Сообщений: 18
Регистрация: 26.06.2018

Добрый день,

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

Вариант =ЕСЛИОШИБКА(ПОИСК(0;[@Column2]);ЕСЛИОШИБКА(ПОИСК(1;[@Column2]);… не рассматриваю, хотелось бы узнать более простой вариант.

Благодарю

 

БМВ

Модератор

Сообщений: 21376
Регистрация: 28.12.2016

Excel 2013, 2016

массивная
=MIN(IFERROR(FIND({0;1;2;3;4;5;6;7;8;9};[@Column2]
);1=0))

По вопросам из тем форума, личку не читаю.

 

Сергей

Пользователь

Сообщений: 11251
Регистрация: 01.01.1970

#3

12.10.2018 08:06:12

Цитата
Kkim написал:
узнать более простой вариант.

лист в клеточку и ручка, что вы хотите чтоб мы вам предложили без файла примера какие у вас данные может у вас римские цифры

Лень двигатель прогресса, доказано!!!

 

БМВ

Модератор

Сообщений: 21376
Регистрация: 28.12.2016

Excel 2013, 2016

#4

12.10.2018 08:32:20

Цитата
Сергей написал:
может у вас римские цифры

тогда еще проще. Там знаков меньше i,v,x,.. :-)

По вопросам из тем форума, личку не читаю.

 

Kkim

Пользователь

Сообщений: 18
Регистрация: 26.06.2018

Добавил пример

Можно решить данную задачу без использования формулы массива?

Прикрепленные файлы

  • Книга8.xlsx (12.51 КБ)

 

Bema

Пользователь

Сообщений: 6750
Регистрация: 15.02.2016

Kkim, а чем Вам формулы массива насолили?
=СЖПРОБЕЛЫ(ЛЕВСИМВ(B3;МИН(ПОИСК({0:1:2:3:4:5:6:7:8:9};B3&»0123456789″))-1))
=ПСТР(B3;МИН(ПОИСК({0:1:2:3:4:5:6:7:8:9};B3&»0123456789″));ДЛСТР(B3))

Изменено: Bema12.10.2018 08:50:04

Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл

 

Сергей

Пользователь

Сообщений: 11251
Регистрация: 01.01.1970

#7

12.10.2018 08:53:22

аналог формулы БМВ,

Код
=МИН(ЕСЛИОШИБКА(ПОИСК(СТРОКА($1:$10)-1;B3);"Ё"))

Лень двигатель прогресса, доказано!!!

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

=СЖПРОБЕЛЫ(ЛЕВБ($B3;АГРЕГАТ(15;6;ПОИСК(СТРОКА(ДВССЫЛ(«1:10»))-1;$B3);1)-1))
=ПРАВБ($B3;ДЛСТР($B3)-АГРЕГАТ(15;6;ПОИСК(СТРОКА(ДВССЫЛ(«1:10»))-1;$B3);1)+1)

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

БМВ

Модератор

Сообщений: 21376
Регистрация: 28.12.2016

Excel 2013, 2016

для правой части
=REPLACE(B3;1;MIN(IFERROR(INDEX(FIND({0;1;2;3;4;5;6;7;8;9};B3););1=0))-1;»»)

По вопросам из тем форума, личку не читаю.

 

массивная
=ПОИСКПОЗ(;1-ЕЧИСЛО(-ПСТР(B3;СТРОКА($1:$99);1));)

Изменено: Казанский12.10.2018 09:28:57

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Немассивная
=ПСТР(B3;МИН(ПОИСК({1;2;3;4;5;6;7;8;9;0};B3&1234567890));9)

 

Kkim

Пользователь

Сообщений: 18
Регистрация: 26.06.2018

БМВ

,

vikttur

,

Казанский

,

JayBhagavan

,

Сергей

,

Bema

, большое Вам спасибо.
Решил задачу.
Касательно формул массива, не особо хорошо в них разбираюсь и файл делаю для общего пользования и при редактировании не все используют при вводе CSE, что в свою очередь будет «ломать» файл.
Также хотел спросить, как работает логика ПОИСК({1;2;3;4;5;6;7;8;9;0}
Что дают значения в фигурных скобках, получается формула ищет каждое значение в строке?

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#13

12.10.2018 12:29:36

Цитата
Kkim написал: как работает логика ПОИСК({1;2;3;4;5;6;7;8;9;0}

Так — не работает. Но если укажем, где искать…
Поиск каждого из значений массива констант. Получаем массив из позиций в строке. Если значения из массива констант нет в тексте, получим ошибку. Для избежания ошибки цепляем справа все числа: B3&1234567890

 

БМВ

Модератор

Сообщений: 21376
Регистрация: 28.12.2016

Excel 2013, 2016

#14

12.10.2018 12:46:59

Цитата
Kkim написал:
Что дают значения в фигурных скобках

это указывает что внутри массив значений.

Цитата
Kkim написал:
получается формула ищет каждое значение в строке

да и выдает позицию в строке

Цитата
Kkim написал:
Касательно формул массива, не особо хорошо в них разбираюсь и файл делаю для общего пользования

В этом случае и для данного случая можно использовать АГРЕГАТ, но я б предпочел заменить им МИН но не использовать полностью вариант JayBhagavan и естесвенно при подходящей версии excel
=MID(B3;AGGREGATE(15;6;FIND({1;2;3;4;5;6;7;8;9;0};B3);1);9)
Или
=REPLACE(B3;1;AGGREGATE(15;6;FIND({1;2;3;4;5;6;7;8;9;0};B3);1)-1;»»)

=MID(B3;AGGREGATE(15;6;FIND(ROW(1:10)-1;B3);1);9)
=REPLACE(B3;1;AGGREGATE(15;6;FIND(ROW(1:10)-1;B3);1)-1;»»)

По вопросам из тем форума, личку не читаю.

 

Андрей Сопилов

Пользователь

Сообщений: 4
Регистрация: 11.01.2013

#15

12.10.2018 13:14:11

Код
Function F_Numeric(ActiveCell)

Dim MyCell As String
Dim My_first_num As Long

My_first_num = 0
MyCell = ActiveCell
j = Len(MyCell)

For i = 1 To j
    If IsNumeric(Mid(MyCell, i, 1)) = True Then
        My_first_num = Mid(MyCell, i, 1)
        If IsNumeric(Mid(MyCell, i + 1, 1)) = True Then
            i2 = i
            j2 = 0
            Do
                i2 = i2 + 1
                j2 = j2 + 1
            Loop Until IsNumeric(Mid(MyCell, i2, 1)) = False
            My_first_num = Mid(MyCell, i, j2)
            Exit For
        End If
     Exit For
    End If
Next i

F_Numeric = My_first_num

End Function

Изменено: Андрей Сопилов12.10.2018 15:48:37

 

Юрий М

Модератор

Сообщений: 60570
Регистрация: 14.09.2012

Контакты см. в профиле

Андрей Сопилов, оформите код соответствующим тегом.

 

кузя1972

Пользователь

Сообщений: 189
Регистрация: 10.12.2017

#17

12.10.2018 15:18:27

в дополнение к #15,вариант трёх UDF в столбцах E FG ,например ccc в столбце G

Код
Function ccc$(t$)
 With CreateObject("VBScript.RegExp"): .Pattern = "D+"
  If .test(t) Then ccc = Trim(.Replace(t, ""))
 End With
End Function

Прикрепленные файлы

  • example_12_10_2018_pl_digit2.xls (42.5 КБ)

Изменено: кузя197212.10.2018 15:18:43

 

eeigor

Пользователь

Сообщений: 57
Регистрация: 18.10.2016

Зачем писать код на VBA, если всё уже написано?
См. функцию автора сайта RegExpExtract().

https://www.planetaexcel.ru/techniques/7/4844/

Речь идет об использовании регулярных выражений. Это как раз тот случай. И вряд ли это сложно.
Итак, пишем в один столбец (справа) следующую формулу:
=RegExpExtract(СЖПРОБЕЛЫ(A2);»(^[^d]+)|d.*$»)

и во второй столбец (еще правее; отличие в последнем аргументе, который говорит, какой элемент по порядку извлечь):
=RegExpExtract(СЖПРОБЕЛЫ(A2);»(^[^d]+)|d.*$»;2)

Комментарий.
Текст находится в столбце A (ссылка на A2). Лишние пробелы удаляются.
Регулярное выражение
(^[^d]+)|d.*$
означает найти:
с начала строки ^ один или более символов, кроме цифр [^d]+,
ИЛИ |
подстроку, начинающуюся с цифры (как Вы и просили) d, и всё до конца строки .*$.

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

P.S. С учетом заметки от автора выше заменим [^d]+ на D+
(^D+)|d.*$

Изменено: eeigor12.10.2018 15:56:11

 

кузя1972

Пользователь

Сообщений: 189
Регистрация: 10.12.2017

#19

12.10.2018 16:07:00

eeigor, в добавление к #18,тогда лучше использовать более эффективный вариант

Код
RegExpExtract(СЖПРОБЕЛЫ(B3);"(?:^[^d]+)|d.*$")

Изменено: кузя197212.10.2018 16:07:13

 

eeigor

Пользователь

Сообщений: 57
Регистрация: 18.10.2016

#20

12.10.2018 17:50:35

Да, это будет приемлемый вариант:
(?:^D+)|d.*$

При условиях автора заметки:
«Имеется номенклатурный список из названия и характеристик. Характеристика номенклатуры начинается с цифры…»
И если включение программного модуля с одной функцией не сильно усложнит задачу.
Автору заметки хотелось узнать более простой вариант. Вряд ли это совсем уж просто. Правда, позволяет использовать, не вникая: бери «как есть».
В таблицу данных с именем «Таблица1» надо вставить свои данные и заполнить все ячейки одной и той же формулой.

В файле на первом листе готовый пример с одной формулой для всех ячеек:
=RegExpExtract(СЖПРОБЕЛЫ(Таблица1[Исходник]);R1C2;R1C)

P.S. Как ни странно, и так работает:
D+|d.*
но с ограничителями строки в начале и в конце, кажется, должно работать быстрее:
^D+|d.*$

Прикрепленные файлы

  • Пример с regexp (2).xlsm (18.87 КБ)

Изменено: eeigor12.10.2018 22:35:00

Форум: Цифровая Техника и Программное обеспечение

Аватара пользователя

Vasilich

Мастер
Сообщения: 498
Зарегистрирован: 17 ноя 2008, 09:55
Откуда: Хабаровск
Контактная информация:

Как в строке EXCEL найти позицию первого встретившегося числа?

Вроде кажись простая задача… ((
есть строчка в ячейке: «пр.-т. Мира 284 д» как найти в ней позицию первого числа т.е. цифры 2
в EXCEL-е 2007 кому это важно


Аватара пользователя

Vasilich

Мастер
Сообщения: 498
Зарегистрирован: 17 ноя 2008, 09:55
Откуда: Хабаровск
Контактная информация:

Re: Как в строке EXCEL найти позицию первого встретившегося числа?

Непрочитанное сообщение

Vasilich » 01 июл 2010, 16:14

TDA_ писал(а):

Vasilich писал(а):а проще? ли

F1

Нету у меня под руками Excel :)

да какой F1 тут даже гугля не помогает


Аватара пользователя

Vasilich

Мастер
Сообщения: 498
Зарегистрирован: 17 ноя 2008, 09:55
Откуда: Хабаровск
Контактная информация:

Re: Как в строке EXCEL найти позицию первого встретившегося числа?

Непрочитанное сообщение

Vasilich » 01 июл 2010, 16:27

Zapost писал(а):Vasilich
Если поможеь, с тебя гайка 8)

нет не поможет ))) вот город выдергивается из ячейки двумя формулами, одна из них:

Код: Выделить всё

=ЕСЛИОШИБКА(ЕСЛИОШИБКА(ПСТР(ПСТР(G2;ЕСЛИОШИБКА(НАЙТИ("г.";G2);ЕСЛИОШИБКА(НАЙТИ("п.";G2);ЕСЛИОШИБКА(НАЙТИ("с.";G2);"")));I2-ЕСЛИОШИБКА(НАЙТИ("г.";G2);ЕСЛИОШИБКА(НАЙТИ("п.";G2);ЕСЛИОШИБКА(НАЙТИ("с.";G2);"")))+1);1;(НАЙТИ(",";ПСТР(G2;ЕСЛИОШИБКА(НАЙТИ("г.";G2);ЕСЛИОШИБКА(НАЙТИ("п.";G2);ЕСЛИОШИБКА(НАЙТИ("с.";G2);"")));I2-ЕСЛИОШИБКА(НАЙТИ("г.";G2);ЕСЛИОШИБКА(НАЙТИ("п.";G2);ЕСЛИОШИБКА(НАЙТИ("с.";G2);"")))+1)))-1);ПСТР(G2;ЕСЛИОШИБКА(НАЙТИ("г.";G2);ЕСЛИОШИБКА(НАЙТИ("п.";G2);ЕСЛИОШИБКА(НАЙТИ("с.";G2);"")));I2-ЕСЛИОШИБКА(НАЙТИ("г.";G2);ЕСЛИОШИБКА(НАЙТИ("п.";G2);ЕСЛИОШИБКА(НАЙТИ("с.";G2);"")))+1));"")

)))))))))))))


banderas

Прописавшийся
Сообщения: 171
Зарегистрирован: 15 май 2007, 20:20
Откуда: Хабаровск

Re: Как в строке EXCEL найти позицию первого встретившегося числа?

Непрочитанное сообщение

banderas » 01 июл 2010, 16:30

=МИН(ЕСЛИОШИБКА(НАЙТИ(1;A1);1000);ЕСЛИОШИБКА(НАЙТИ(2;A1);1000);ЕСЛИОШИБКА(НАЙТИ(3;A1);1000);ЕСЛИОШИБКА(НАЙТИ(4;A1);1000);ЕСЛИОШИБКА(НАЙТИ(5;A1);1000);ЕСЛИОШИБКА(НАЙТИ(6;A1);1000);ЕСЛИОШИБКА(НАЙТИ(7;A1);1000);ЕСЛИОШИБКА(НАЙТИ(8;A1);1000);ЕСЛИОШИБКА(НАЙТИ(9;A1);1000);ЕСЛИОШИБКА(НАЙТИ(0;A1);1000))

если в а1 искомая строка не более 1000 знаков.


Аватара пользователя

Vasilich

Мастер
Сообщения: 498
Зарегистрирован: 17 ноя 2008, 09:55
Откуда: Хабаровск
Контактная информация:

Re: Как в строке EXCEL найти позицию первого встретившегося числа?

Непрочитанное сообщение

Vasilich » 01 июл 2010, 16:39

banderas писал(а):

Код: Выделить всё

=МИН(ЕСЛИОШИБКА(НАЙТИ(1;A1);1000);ЕСЛИОШИБКА(НАЙТИ(2;A1);1000);ЕСЛИОШИБКА(НАЙТИ(3;A1);1000);ЕСЛИОШИБКА(НАЙТИ(4;A1);1000);ЕСЛИОШИБКА(НАЙТИ(5;A1);1000);ЕСЛИОШИБКА(НАЙТИ(6;A1);1000);ЕСЛИОШИБКА(НАЙТИ(7;A1);1000);ЕСЛИОШИБКА(НАЙТИ(8;A1);1000);ЕСЛИОШИБКА(НАЙТИ(9;A1);1000);ЕСЛИОШИБКА(НАЙТИ(0;A1);1000))

если в а1 искомая строка не более 1000 знаков.

гениально ))))) вот самое простое решение, тупо перебрать от 0 до 9, спасибо….


Например, у вас есть список текстовой строки, состоящей из букв и цифр. Если вы хотите найти положение первого или последнего числа в каждой строке, что бы вы сделали? Фактически, использование формулы поможет вам быстро найти положение первого / последнего числа в указанной текстовой строке. В этом руководстве мы покажем вам подробности решения этой проблемы.

Найти позицию первого числа в текстовой строке в Excel
Найти позицию последнего числа в текстовой строке в Excel


Найти позицию первого числа в текстовой строке в Excel

Как показано на скриншоте ниже, для поиска позиций первых чисел в текстовых строках выполните следующие действия.

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

1). Формула 1: = МИН (ПОИСК ({0,1,2,3,4,5,6,7,8,9}, A2 & «0123456789»));

2). Формула 2: =MATCH(TRUE,ABS(CODE(MID(A2,ROW($A$1:INDEX(A:A,LEN(A2))),1))-52.5)<5,0) + Ctrl + Shift + Enter;

3). Формула 3: =MIN(IF(ISERROR(FIND({1;2;3;4;5;6;7;8;9;0},A2)),»»,FIND({1;2;3;4;5;6;7;8;9;0},A2))).

2. Затем в ячейке B2 отображается первая числовая позиция первой строки. Теперь перетащите маркер заполнения в ячейку B7, чтобы заполнить указанный ниже диапазон.

Затем перечисляются все первые числовые позиции целых строк.


Найти позицию последнего числа в текстовой строке в Excel

После нахождения позиции первого числа мы теперь начинаем находить позицию последнего числа в строках.

В этом разделе для вас есть две формулы.

Формула 1: = МАКС (ЕСЛИ (ЕЧИСЛО (ЗНАЧЕНИЕ (СРЕДНЕЕ (A2; СТРОКА (КОСВЕННАЯ («1:» & ДЛИН (A2))); 1))); СТРОКА (КОСВЕННАЯ («1:» & ДСТР (A2)))) ) + Ctrl + Shift + Enter;

Формула 2: =MAX(IFERROR(FIND({1,2,3,4,5,6,7,8,9,0},A2,ROW(INDIRECT(«1:»&LEN(A2)))),0)) + Ctrl + Shift + Enter

1. Выберите ячейку B2, скопируйте и вставьте одну из приведенных выше формул в панель формул, затем одновременно нажмите клавиши Ctrl + Shift + Enter. Затем вы можете увидеть результат в B2.

2. Выберите B2, перетащите маркер заполнения в ячейку B7, чтобы автоматически заполнить диапазон.

Тогда вы сразу получите позиции всех последних чисел всей текстовой строки.



Статьи по теме:

  • Как найти первые пустые ячейки в столбце в Excel?
  • Как найти ячейки с условным форматированием / с условным форматированием в Excel?
  • Как найти ячейки с / с проверкой данных в Excel?

Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Like this post? Please share to your friends:
  • Excel найти первое положительное число в строке
  • Excel найти первое непустое значение в столбце
  • Excel найти первое вхождение
  • Excel найти ошибка знач
  • Excel найти определенный символ