Как в excel оставить только цифры без букв

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

Содержание

  1. Способы удаления текста и сохранения числовой информации
  2. Первый метод: использование специальной формулы
  3. Второй метод: использование специального макроса
  4. Заключение и выводы о процедуре извлечение

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

Представим, что у нас есть такая информация, располагающаяся в ячейке: «Было доставлено кусков мыла 763шт». Нам необходимо сделать так, чтобы осталось только значение 763 для проведения разнообразных математических операций. Хорошо, если нужно избавиться от текстовых данных только в одной ячейке, тогда можно реализовать удаление ручным способом, но этот вариант не подходит, когда в табличке находится слишком много разной информации. Здесь необходимо применять различные специальные функции табличного редактора.

Первый метод: использование специальной формулы

Для реализации этой процедуры можно применять специальную массивную формулу. Примерная формула выглядит так:

=ПСТР(A1;МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(А1;СТРОКА($1:$99);1));СТРОКА($1:$99)));ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР(А1;СТРОКА($1:$99);1));СТРОКА($1:$99))-МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(А1;СТРОКА($1:$99);1));СТРОКА($1:$99)))+1)

Разберем основные моменты:

  1. Специальную формулу необходимо вбивать в поле при помощи комбинации кнопок «Ctrl+Shift+Enter».
  2. Стоит заметить, что в таком виде массивная формула может использоваться только с текстовой информацией, в которой число знаков не больше 99. Для увеличения диапазона нужно, к примеру, заменить параметр «СТРОКА($1:$99)» на «СТРОКА($1:$200)». Иными словами, мы вместо показателя 99 вводим число знаков с запасом. Если ввести слишком большой диапазон, то обработка формулы может занять длительное время.
  3. Если в текстовых данных числовые значения разбросаны по всему тексту, то формула не сможет правильно обработать информацию.

Детально рассмотрим специальную массивную формулу на таком примере: «Было доставлено кусков мыла 763шт., а заказывали 780»

  1. В поле А1 располагается сама текстовая информация, из которой мы будем извлекать числовые данные.
  2. Фрагмент: МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(А1;СТРОКА($1:$99);1));СТРОКА($1:$99))) позволяет определить позицию 1-го значения в поле. Получаем значение 29.
  3. Фрагмент: ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР(А1;СТРОКА($1:$99);1));СТРОКА($1:$99)) позволяет определить позицию последнего значения в поле. Получаем значение 31.
  4. Мы получаем такую формулу: =ПСТР(А1;29;31-29+1). Оператор ПСТР позволяет извлечь из текстовой информации, указанной 1-м аргументом, начиная с заданной позиции (29) с числом знаков, заданным 3-м аргументом.
  5. В результате мы получаем:
    =ПСТР(А1;29;31-29+1)

    • =ПСТР(А1;29;2+1)
    • =ПСТР(А1;29;3)
    • 763

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

Как оставить в ячейке Excel только числа, а весь текст удалить

Нам необходимо сохранить только текстовую информацию.

Как оставить в ячейке Excel только числа, а весь текст удалить

Специальная формула применяется по аналогичному алгоритму, что и вышерассмотренная. Она выглядит так: =ПСТР(А1;ПОИСК(«-«;А1)+1;ПОИСКПОЗ(ИСТИНА;ЕЧИСЛО(—ПСТР(ПСТР(А1;ПОИСК(«-«;А1)+1;999);СТРОКА($1:$99);1));0)-1)

Здесь мы, благодаря фрагменту ПОИСК(«-«;А1) отыскали локацию тире, а затем при помощи оператора ПОИСКПОЗ нашли в извлеченных текстовых данных позицию 1-го числа. Передали эти показатели в оператор ПСТР, который реализовал все дальнейшие преобразования.

Второй метод: использование специального макроса

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

Как оставить в ячейке Excel только числа, а весь текст удалить

В табличном редакторе отсутствует интегрированная функция, поэтому нам необходимо создать такой пользовательский макрос:

Public Function GetNumbers(TargetCell As Range) As String

Dim LenStr As Long

For LenStr = 1 To Len(TargetCell)

Select Case Asc(Mid(TargetCell, LenStr, 1))

Case 48 To 57

GetNumbers = GetNumbers & Mid(TargetCell, LenStr, 1)

End Select

Next

End Function

Подробная инструкция по созданию пользовательского макроса выглядит так:

  1. Используя специальную комбинацию клавиш «Alt+F11», производим открытие редактора VBA. Альтернативный вариант – нажать ПКМ по рабочему листу и выбрать элемент «Исходный текст».
  2. Реализуем создание нового модуля. Для осуществления этой процедуры жмем левой клавишей мышки на элемент, имеющий наименование «Insert», а затем выбираем объект «Module».
  3. Производим копирование кода, который располагается выше, и вставляем его в созданный модуль. Копирование реализуем при помощи сочетания клавиш «Ctrl+C», а вставку – «Ctrl+V».
  4. Теперь в необходимой ячейке, в которой мы планируем вывести только числовую информацию, вбиваем такую формулу: =GetNumbers(А1).
  5. Нам нужно растянуть формулу вниз на все ячейки колонки. Для этого наводим указатель на нижний правый уголок ячейки. Курсор принял форму небольшого плюсика темного цвета. Зажимаем левую клавишу мышки и протягиваем формулу вниз до окончания таблички.

Как оставить в ячейке Excel только числа, а весь текст удалить

  1. Готово! Мы реализовали извлечение числовой информации при помощи специального макроса.

Заключение и выводы о процедуре извлечение

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

Оцените качество статьи. Нам важно ваше мнение:

Хитрости »

1 Май 2011              398251 просмотров


Как оставить в ячейке только цифры или только текст?

Вот бывает так: есть у Вас в ячейке некий текст. Допустим «Было доставлено кусков мыла 763шт.». Вам нужно из этого только 763 — чтобы можно было провести с этим некие математические действия. Если это только одна ячейка — проблем тут нет, а если таких ячеек пару тысяч? И к тому же все разные?

  • Было доставлено кусков мыла 763шт.
  • Всего пришло 34
  • Тюбики — 54 доставлено
  • и т.д.

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


СПОСОБ 1: не используем макросы
можно применить формулу массива, вроде такой:
=ПСТР(A1;МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(A1;СТРОКА($1:$99);1));СТРОКА($1:$99)));ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР(A1;СТРОКА($1:$99);1));СТРОКА($1:$99))-МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(A1;СТРОКА($1:$99);1));СТРОКА($1:$99)))+1)
Три важных момента:

  1. Формула вводится в ячейку сочетанием клавиш Ctrl+Shift+Enter, т.к. является формулой массива. Подробнее про эти формулы читайте в статье: Что такое формула массива
  2. в таком виде формула работает с текстом, количество символов в котором не превышает 99. Чтобы расширить необходимо в формуле во всех местах заменить СТРОКА($1:$99) на СТРОКА($1:$200). Т.е. вместо 99 указать количество символов с запасом. Только не увлекайтесь, иначе может получиться, что формула будет работать слишком долго
  3. формула не обработает корректно текст «Было доставлено кусков мыла 763шт., а заказывали 780» и ему подобный, где числа раскиданы по тексту.

Теперь коротко разберем формулу на примере фразы: Было доставлено кусков мыла 763шт.

  • в A1 сам текст, из которого необходимо извлечь числа: Было доставлено кусков мыла 763шт., а заказывали 780
  • блок: МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(A1;СТРОКА($1:$99);1));СТРОКА($1:$99)))
    вычисляет позицию первой цифры в ячейке — 29
  • блок: ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР(A1;СТРОКА($1:$99);1));СТРОКА($1:$99))
    вычисляет позицию последней цифры в ячейке — 31
  • в результате получается: =ПСТР(A1;29;3129+1)
    функция ПСТР извлекает из текста, указанного первым аргументом(A1) текст, начиная с указанной позиции(29) с количеством символов, указанным третьим аргументом(3129+1)
  • И в итоге:
    =ПСТР(A1;29;3129+1)
    => =ПСТР(A1;29;2+1)
    => =ПСТР(A1;29;3)
    => 763

Может быть задача проще — необходимо извлечь односоставной текст, убрав цифры вначале и в конце строки, учитывая, что сам текст всегда следует после разделителя(например, тире):

12.08-АГСВ2
12.08-АГСВ1
01.03-ОВ2
12.03-КЖ6.1

Из этих данных надо получить только текст после тире(-) и отсечь цифры на конце:

АГСВ
АГСВ
ОВ
КЖ

Формула будет работать почти по тому же принципу, что и формула выше, но она проще:

=ПСТР(A1;ПОИСК(«-«;A1)+1;ПОИСКПОЗ(ИСТИНА;ЕЧИСЛО(—ПСТР(ПСТР(A1;ПОИСК(«-«;A1)+1;999);СТРОКА($1:$99);1));0)-1)

В данном случае мы при помощи

ПОИСК(«-«;A1)

ищем сначала позицию тире, далее при помощи

ПОИСКПОЗ(ИСТИНА;ЕЧИСЛО(—ПСТР(ПСТР(A1;ПОИСК(«-«;A1)+1;999);СТРОКА($1:$99);1));0)

находим именно в отсеченном тексте позицию первой цифры. Передаем эти значения в

ПСТР

, которая отбирает из этого текста все от первого тире(+1) до первого числа, идущего после текста.


СПОСОБ 2: используем макросы
Самый главный недостаток метода при помощи формулы, приведенной выше — из текста «Было доставлено кусков мыла 763шт., а заказывали 780» формула вернет не только числа, а и текст между первой и последней цифрой: 763шт., а заказывали 780.
Решить же проблему извлечения цифр даже из такого текста при помощи VBA куда проще и гибче. Плюс можно не только цифры извлекать, но и наоборот — цифры удалить, а извлечь только текст. Ниже приведен код пользовательской функции, которая поможет извлечь из строки только числа либо только текст. Иными словами, результатом функции будет либо только текст, либо только числа.

Function Extract_Number_from_Text(sWord As String, Optional Metod As Integer)
'sWord = ссылка на ячейку или непосредственно текст
'Metod = 0 – числа
'Metod = 1 – текст
    Dim sSymbol As String, sInsertWord As String
    Dim i As Integer
 
    If sWord = "" Then Extract_Number_from_Text = "Нет данных!": Exit Function
    sInsertWord = ""
    sSymbol = ""
    For i = 1 To Len(sWord)
        sSymbol = Mid(sWord, i, 1)
        If Metod = 1 Then
            If Not LCase(sSymbol) Like "*[0-9]*" Then
                If (sSymbol = "," Or sSymbol = "." Or sSymbol = " ") And i > 1 Then
                    If Mid(sWord, i - 1, 1) Like "*[0-9]*" And Mid(sWord, i + 1, 1) Like "*[0-9]*" Then
                        sSymbol = ""
                    End If
                End If
                sInsertWord = sInsertWord & sSymbol
            End If
        Else
            If LCase(sSymbol) Like "*[0-9.,;:-]*" Then
                If LCase(sSymbol) Like "*[.,]*" And i > 1 Then
                    If Not Mid(sWord, i - 1, 1) Like "*[0-9]*" Or Not Mid(sWord, i + 1, 1) Like "*[0-9]*" Then
                        sSymbol = ""
                    End If
                End If
                sInsertWord = sInsertWord & sSymbol
            End If
        End If
    Next i
    Extract_Number_from_Text = sInsertWord
End Function

Чтобы правильно использовать приведенный код, необходимо сначала ознакомиться со статьей Что такое функция пользователя(UDF)?. Вкратце: скопировать текст кода выше, перейти в редактор VBA(Alt+F11) -создать стандартный модуль(InsertModule) и в него вставить скопированный текст. После чего функцию можно будет вызвать из Диспетчера функций(Shift+F3), отыскав её в категории Определенные пользователем (User Defined Functions) и применять как обычную функцию на листе.
Для извлечения только чисел
=Extract_Number_from_Text(A1; 0)
или
=Extract_Number_from_Text(A1)
Для извлечения только текста
=Extract_Number_from_Text(A1; 1)

Подробнее про создание пользовательских функции и их применении можно почитать в статье Что такое функция пользователя(UDF)?


Помимо функции пользователя решил выложить и вариант с использованием диалогового окна:

Выбрать ячейку или диапазон с текстом(Лист1!$A$2:$A$10) — здесь указывается диапазон с исходными значениями, из которого необходимо оставить только числа или только текст.

Выберите ячейку для вывода данных(Лист1!$A$2) — указывается одна ячейка, с которой начать вывод преобразованных значений. В качестве этой ячейки можно выбрать первую ячейку диапазона с текстом(исходного) если необходимо произвести изменения сразу в этих же ячейках(как на рисунке). Осторожнее с таким указанием, т.к. результат работы кода может быть не совсем таким, какой вы ожидали, а вернуть прежние данные уже не получится — если только не закрыть файл без сохранения изменений.

Оставить только цифры, Оставить только текст— думаю не надо пояснять. Здесь выбираем, что оставить в качестве результата.

Небольшое дополнение к использованию кода
В коде есть строка:

If LCase(sSymbol) Like "*[0-9.,;:-]*" Then

Данная строка отвечает за текстовые символы, которые могут встречаться внутри чисел и которые надо оставить(не удалять наравне с другими не числовыми символами). Следовательно, если какие-то из данных символов не нужны в конечном тексте — их надо просто удалить. Например, чтобы оставались исключительно числа(без запятых и пр.):

If LCase(sSymbol) Like "*[0-9]*" Then

если надо исключить из удаления помимо цифр точку(т.е. будут извлечены цифры и точка):

If LCase(sSymbol) Like "*[0-9.]*" Then

и т.д.
Скачать пример:

  Число из текста и наоборот.xls (99,0 KiB, 17 669 скачиваний)

Также см.:
Извлечение числа из текста
Что такое функция пользователя(UDF)?
Как получить адрес гиперссылки из ячейки
Оставить цифры или текст при помощи PowerQuery


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Оставить в ячейке только числа (удалить весь текст)

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

Оставить в ячейке только числа (удалить весь текст)

Чтобы воспользоваться данной командой выделите ячейки с текстом из которых вы хотите удалить текст и оставить числа, перейдите во вкладку «ЁXCEL» Главного меню, нажмите кнопку «Ячейки» и выберите команду «Оставить в ячейке только числа (удалить весь текст)»:

ostavit-v-yachejke-tolko-chisla-udalit-ves-tekst

В выделенных ячейках останутся только числа.

Для отмены операции нажмите кнопку отмены:

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

  • Заменой остальных символов
  • Извлечение цифр из ячейки формулой
  • С помощью пользовательских функций (UDF)
  • С помощью синтаксиса регулярных выражений
  • Извлечь цифры из текста в 1 клик
  • Видеоинструкция

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

Заменой остальных символов

Самым неоптимальным способом стала бы последовательная замена всех символов на «пустоту». Если лишних символов немного и вы умеете быстро печатать, можно обойтись и таким образом :) Но статья, конечно же, не о таких кейсах. Если данных тысячи строк и лишних символов много, такой подход приведет к трате огромного количества времени.

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

Извлечение цифр из ячейки формулой

Такая формула массива будет работать только в сборках Excel, в которых поддерживается функция СЦЕП (аналог JOIN в Google Spreadsheets) – это некоторые сборки Excel 2016, 2019, и все релизы Excel 2021. Отличие СЦЕП от СЦЕПИТЬ в том, что она может принимать на вход диапазоны и массивы и возвращать при этом единое значение.

Так будет выглядеть формула, извлекающая только цифры из ячейки A1:

=СЦЕП(ЕСЛИОШИБКА(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1)+0;""))

Механика её работы:

  1. Сначала измеряется длина текстового значения ячейки функцией ДЛСТР
  2. Далее создается текстовое выражение диапазона строк с помощью конкатенации амперсандом (&)
  3. Это текстовое выражение преобразуется в реальный диапазон функцией ДВССЫЛ
  4. Функция СТРОКА возвращает массив чисел от 1 до числа, соответствующего концу этого диапазона
  5. Функция ПСТР извлекает по этому массиву чисел соответствующие символы по порядку
  6. К каждому символу прибавляется 0 – это позволяет отличить цифры от остальных символов, т.к. цифры не вернут ошибку, а все остальные вернут
  7. Функция ЕСЛИОШИБКА заменяет все ошибки на пустые строки
  8. В финале функция СЦЕП объединяет массив в единую строку

С помощью пользовательских функций (UDF)

Пример пользовательской функции, которая поможет с извлечением чисел из текста:

Function extrNum(x As String) As Long   
   For n = 1 To Len(x)   
       If Mid(x, n, 1) Like "#" Then extrNum = extrNum & Mid(x, n, 1)   
   Next n   
End Function

Как применить данный код:

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

С помощью синтаксиса регулярных выражений

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

Как в платной, так и в бесплатной версии !SEMTools есть функции:

  • regexReplace, берущая на вход 3 аргумента — строку с данными, текст регулярного выражения и строку для замены;
  • regexExtract с двумя аргументами — строкой и паттерном для извлечения.

Выражение для замены любых символов, кроме цифр, на пустоту, будет выглядеть следующим образом:

=REGEXREPLACE(A1;"[^d]";"")

Выражение для извлечения первой сплошной последовательности цифр:

Что потребуется:

  1. установить !SEMTools,
  2. применить функции.

Извлечь цифры из текста в 1 клик

Пользователям платной версии !SEMTools доступна возможность извлекать цифры моментально прямо “на месте”, не прописывая никаких функций.

Макрос находится в группе «ИЗВЛЕЧЬ» в меню “Извлечь символы”.

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

Если необходимости в этом нет, можно постфактум просто заменить пробел на «пустоту».

Видеоинструкция

Удалить текст, а цифры оставить — именно такова механика алгоритма !SEMTools. Смотрите короткий видеопример:

Извлечение цифр из ячеек со смешанным содержимым в !SEMTools

Нужно извлечь числа из текста в Excel?
В !SEMTools есть это и сотни других готовых решений!!

 

borro

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

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

Здравствуйте!

Есть файл с числами, которые представляют собой номера счетчиков. Если я заменяю символы «СЧ № » на пустой символ, то номер СЧ № 2171010103026 превращается в число в формате 2,17101E+12. Как сделать так, чтобы после подмены «СЧ № » оставалось значение 2171010103026? Нужно будет в принципе все значения этого столбца(я привел только часть в файле) заменить на значения, которые состоят только из цифр.

 

vikttur

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

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

=»»&ПОДСТАВИТЬ(RC[-1];»СЧ № «;)
Преобразовать в значения, заменить исходные данные.

 

borro

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

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

Спасибо. И так на каждый чуждый цифрам символ сочинять формулу? Чтобы все не цифры убрать.

Изменено: borro15.06.2018 10:48:44

 

vikttur

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

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

Если их много, написать макрос замены

 

Kuzmich

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

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

#5

15.06.2018 10:33:51

UDF

Код
Function iNumber(cell$) As String
 With CreateObject("VBScript.RegExp")
     .Global = True
     .Pattern = "d+"
     iNumber = .Execute(cell)(0)
 End With
End Function
 

zxc753

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

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

1. Выполнить автозамену
2. Выделить все ячейки
3. Правый клик — Формат ячеек — Числовой — ОК

 

vikttur

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

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

… и ведущие нули пропадут… А это номер счета!

 

borro

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

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

#8

15.06.2018 11:19:23

Цитата
Kuzmich написал:
UDF

Спасибо! Классная функция. Вот только она меняет 0091124 на 91124. Как это запретить?
На значение «<>» в ячейке эта функция возвращает #ЗНАЧ!. Что надо в ней добавить, чтобы «0» возвращала в таких случаях?

Изменено: borro15.06.2018 11:32:04

желаю всем счастья

 

Kuzmich

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

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

#9

15.06.2018 11:25:56

Цитата
На значение «<>» в ячейке эта функция возвращает #ЗНАЧ!

Приведите пример заполнения ячейки

 

borro

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

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

приложил файл

Изменено: borro15.06.2018 11:31:44

 

Kuzmich

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

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

#11

15.06.2018 11:32:34

Код
Function iNumber(cell$) As String
 With CreateObject("VBScript.RegExp")
     .Global = True
     .Pattern = "d+"
     If .test(cell) Then
       iNumber = .Execute(cell)(0)
     Else
       iNumber = "0"
     End If
 End With
End Function
 

borro

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

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

Kuzmich, спасибо.
Есть два вида «деффектов» — функция обрезает начальные нули(в некоторых случаях) и отрезает цифры, которые идут после буквы, расположенной не в начале исходного значения. Прикладываю файл

 

borro

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

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

#13

15.06.2018 11:47:26

Цитата
vikttur написал:
=»»&ПОДСТАВИТЬ(RC[-1];»СЧ № «;)Преобразовать в значения, заменить исходные данные.

А почему этот метод не производит создания чисел в формате «E+», а замена через Ctrl+H создает? Похоже из-за «» в начале

Изменено: borro15.06.2018 11:52:23

желаю всем счастья

 

Kuzmich

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

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

Указанного файла не существует.

 

borro

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

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

 

vikttur

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

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

#16

15.06.2018 11:56:03

Цитата
borro написал: А почему этот метод не производит создания чисел в формате «E+»,

Две ячейки:
=»»&1
=1
Посмотрите на результат.
В первой значение прижато к леваму краю ячейки, во второй — к правому. А какие значения так расположены?

 

ZVI

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

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

#17

15.06.2018 12:12:42

Там некоторые нули в исходных данных создаются форматированием.
Их учесть можно таким образом:

Код
Function GetNum(Code As Range) As String
  Static RegEx As Object
  If RegEx Is Nothing Then
    Set RegEx = CreateObject("VBScript.RegExp")
    RegEx.Global = True
    RegEx.Pattern = "D+"
  End If
  GetNum = RegEx.Replace(Code.Text, vbNullString)
  If Len(GetNum) = 0 Then GetNum = "0"
End Function

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

  • Номера_счетчиков.xls (33.5 КБ)

Изменено: ZVI15.06.2018 12:16:55

 

bedvit

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

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

Виталий

Формулой.
Была похожая тема в избушке. Вариант с количеством цифр до 20. Решение не моё, доделал до применимости с любым кол-ом знаков.

Моя цитата по той теме.
Отличное решение от «Светлый»! На его основе положу в коллекцию универсальный вариант для пользователей (от 1 до 20 символов), меняя текущий — знак «6» на нужный пользователю (кол-во искомых цифр).
=ПСТР(A2;ПОИСКПОЗ(6+1;ЧАСТОТА(СТРОКА($1:$999);ЕОШ(-ПСТР(A2&-(9^6);СТРОКА($1:$999);1))*СТРОКА($1:$999));)-6;6)
Если первые нули пропадают, можно так (для 13 цифр)
=»‘»&ПСТР(A2;ПОИСКПОЗ(13+1;ЧАСТОТА(СТРОКА($1:$999);ЕОШ(-ПСТР(A2&-(9^13);СТРОКА($1:$999);1))*СТРОКА($1:$999));)-13;13)

Изменено: bedvit15.06.2018 14:43:46

«Бритва Оккама» или «Принцип Калашникова»?

 

borro

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

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

 

_Boroda_

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

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

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

Скажи мне, кудесник, любимец ба’гов…

 

Юрий М

Модератор

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

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

borro, размещаете свой вопрос на нескольких ресурсах — информируйте об этом.

 

borro

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

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

#22

21.06.2018 12:16:26

Юрий, понял. Спасибо

Изменено: borro21.06.2018 12:17:04

желаю всем счастья

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

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

Как получить из строки только цифры в Excel

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

Public Function GetNumbers(TargetCell As Range) As String
 Dim LenStr As Long
 For LenStr = 1 To Len(TargetCell)
 Select Case Asc(Mid(TargetCell, LenStr, 1))
 Case 48 To 57
 GetNumbers = GetNumbers & Mid(TargetCell, LenStr, 1)
 End Select
 Next
End Function

Как пользоваться?

Открываем редактор VBA в Excel (Alt+F11), или правой кнопкой по листу и выбираем пункт «Исходный текст».

Создаем новый модуль → Insert → Module

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

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

=GetNumbers(A1)

и протягиваем ее вниз

Как получить из строки только цифры в Excel - пользовательская функция

Удалить цифры, что бы остались только буквы.

Taliya

Дата: Пятница, 18.07.2014, 12:26 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

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

 

Ответить

_Boroda_

Дата: Пятница, 18.07.2014, 12:39 |
Сообщение № 2

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Это не в ячейке содержится. Это формат ячейки такой 0,000″ м.»;[Красный]-0,000″ м.». А в ячейке просто число, без букв.


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Taliya

Дата: Пятница, 18.07.2014, 12:52 |
Сообщение № 3

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Можно как-то сделать так что бы ячейки имели вид только с буквами?

 

Ответить

_Boroda_

Дата: Пятница, 18.07.2014, 12:53 |
Сообщение № 4

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Можно. Функцией пользователя
[vba]

Код

Function buk(adr As Range)
     f_ = adr.NumberFormat
     t_ = Mid(f_, WorksheetFunction.Search(«»»», f_) + 2, WorksheetFunction.Search(«»»;», f_) — WorksheetFunction.Search(«»»», f_) — 2)
End Function

[/vba]
Смотрите в файле.
Макросы должны быть разрешены


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Taliya

Дата: Пятница, 18.07.2014, 13:25 |
Сообщение № 5

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Других вариантов нет?
Пол часа танца с бубном..ниче не получается((

 

Ответить

Taliya

Дата: Пятница, 18.07.2014, 14:00 |
Сообщение № 6

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Не пойму что не так делаю..все как Вы написали

ПыСы а в графе выходи или «ЗНАЧ» или «0»

К сообщению приложен файл:

8740294.xlsm
(48.2 Kb)

Сообщение отредактировал TaliyaПятница, 18.07.2014, 14:01

 

Ответить

_Boroda_

Дата: Пятница, 18.07.2014, 14:11 |
Сообщение № 7

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

А потому, что в ЭТОМ примере у Вас шт. не форматом выведены, а текстом.
вот тут Вам нужна формула

Код

=ПСТР(B7;ПОИСК(» «;B7)+1;99)


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Taliya

Дата: Пятница, 18.07.2014, 14:31 |
Сообщение № 8

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

СПАСИБО! Теперь разобралась как мне проще делать..с функцией так и не подружилась..но если графу с форматом ячеек «0,000» м.»;[Красный]-0,000″ м.» скопировать в ворд а потом обратно в ексель то формат ячеек меняется на общий и появляются уже шт. м. и т.д. А потом уже вставляю Вашу формулу!
Большое спасибо..сэкономили час жизни еженедельно!!! hands

 

Ответить

Michael_S

Дата: Пятница, 18.07.2014, 14:38 |
Сообщение № 9

Группа: Друзья

Ранг: Старожил

Сообщений: 2012


Репутация:

373

±

Замечаний:
0% ±


Excel2016

но если графу с форматом ячеек «0,000» м.»;[Красный]-0,000″ м.» скопировать в ворд

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

 

Ответить

Taliya

Дата: Пятница, 18.07.2014, 14:44 |
Сообщение № 10

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

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

Эт как?

 

Ответить

ArkaIIIa

Дата: Пятница, 18.07.2014, 14:50 |
Сообщение № 11

Группа: Проверенные

Ранг: Ветеран

Сообщений: 894


Репутация:

115

±

Замечаний:
0% ±


2010

Taliya

Позволю себе модифицировать формулу многоуважаемого Бороды

Код

=ЕСЛИОШИБКА(ЕСЛИ(—ЛЕВСИМВ(B7;ПОИСК(«.»;B7;1)-1)>=0;ПСТР(B7;ПОИСК(» «;B7)+1;99);»»);ПСТР(B7;ПОИСК(» «;B7;ПОИСК(» «;B7)+1)+1;99))

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

Сообщение отредактировал ArkaIIIaПятница, 18.07.2014, 14:53

 

Ответить

Taliya

Дата: Пятница, 18.07.2014, 14:58 |
Сообщение № 12

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

ArkaIIIa
Огромное СПАСИБО! как раз на этом «споткнулась»..только хотела спросить.. а уже готов ответ! hands

 

Ответить

_Boroda_

Дата: Пятница, 18.07.2014, 15:00 |
Сообщение № 13

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Для любого кол-ва пробелов

Код

=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(B7;» «;ПОВТОР(» «;99));99*(ДЛСТР(B7)-ДЛСТР(ПОДСТАВИТЬ(B7;» «;»»)));99))


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

ArkaIIIa

Дата: Пятница, 18.07.2014, 15:03 |
Сообщение № 14

Группа: Проверенные

Ранг: Ветеран

Сообщений: 894


Репутация:

115

±

Замечаний:
0% ±


2010

_Boroda_
Класс! Очень универсально и вроде бы даже не слишком сложно :-)

 

Ответить

Michael_S

Дата: Пятница, 18.07.2014, 18:13 |
Сообщение № 15

Группа: Друзья

Ранг: Старожил

Сообщений: 2012


Репутация:

373

±

Замечаний:
0% ±


Excel2016

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

Эт как?

 

Ответить

Michael_S

Дата: Пятница, 18.07.2014, 18:15 |
Сообщение № 16

Группа: Друзья

Ранг: Старожил

Сообщений: 2012


Репутация:

373

±

Замечаний:
0% ±


Excel2016

продолжение

 

Ответить

Michael_S

Дата: Пятница, 18.07.2014, 18:16 |
Сообщение № 17

Группа: Друзья

Ранг: Старожил

Сообщений: 2012


Репутация:

373

±

Замечаний:
0% ±


Excel2016

далее

 

Ответить

Michael_S

Дата: Пятница, 18.07.2014, 18:17 |
Сообщение № 18

Группа: Друзья

Ранг: Старожил

Сообщений: 2012


Репутация:

373

±

Замечаний:
0% ±


Excel2016

Последнее действие в ворде — удалить пробелы, и результат:

К сообщению приложен файл:

5320391.docx
(45.7 Kb)

 

Ответить

Michael_S

Дата: Пятница, 18.07.2014, 18:37 |
Сообщение № 19

Группа: Друзья

Ранг: Старожил

Сообщений: 2012


Репутация:

373

±

Замечаний:
0% ±


Excel2016

Модификация формулы _Boroda_,

Код

=СЖПРОБЕЛЫ(ПРАВСИМВ(ПОДСТАВИТЬ(B2112;» «;ПОВТОР(» «;99));99))

 

Ответить

Taliya

Дата: Пятница, 18.07.2014, 20:58 |
Сообщение № 20

Группа: Пользователи

Ранг: Прохожий

Сообщений: 8


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Michael_S
Спасибо за возможные варианты..попробую! ))

 

Ответить

Like this post? Please share to your friends:
  • Как в excel открыть два файла в параллельных окнах
  • Как в excel оставить только уникальные строки в excel
  • Как в excel открыть два окна раздельно
  • Как в excel оставить только первые 4 символа
  • Как в excel открыть два листа одной книги рядом