Перейти к содержимому

Как оставить в ячейке только цифры без формул

  • автор:

Замена формулы на ее результат

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

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

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

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

Замена формул вычисляемой величиной

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

  1. Вы можете выбрать ячейку или диапазон ячеек, которые содержат формулы. Если формула является формула массива, выделите диапазон ячеек, содержащих формулу массива. Как выбрать диапазон, содержащий формулу массива
    1. Щелкните ячейку в формуле массива.
    2. На вкладке Главная в группе Редактирование нажмите кнопку Найти и выделить, а затем выберите команду Перейти.
    3. Нажмите кнопку Дополнительный.
    4. Щелкните Текущий массив.

    В следующем примере показана формула в ячейке D2, которая умножает ячейки A2, B2 и скидку из ячейки C2 для расчета суммы счета для продажи. Чтобы скопировать фактическое значение вместо формулы из ячейки на другой книгу или на другой, можно преобразовать формулу в ячейку в ее значение, выстроив следующее:

    1. Нажмите F2, чтобы изменить ячейку.
    2. Нажмите F9, а затем ввод.

    В строке формул показана формула.

    После преобразования ячейки из формулы в значение в области формул отображается значение 1932,322. Обратите внимание, что 1932,322 — фактическое вычисляемого значения, а 1932,32 — значение, отображаемого в ячейке в валютном формате.

    В строке формул показано значение.

    Совет: При редактировании ячейки с формулой можно нажать F9, чтобы окончательно заменить формулу ее вычисляемой величиной.

    Замена части формулы значением, полученным при ее вычислении

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

    При замене части формулы ее значением ее часть восстановить невозможно.

    1. Щелкните ячейку с формулой.
    2. В строка формул выберите часть формулы, которую нужно заменить ее вычисляемой величиной. При выборе части формулы, которую вы хотите заменить, убедитесь, что вы включили все операнд. Например, при выборе функции необходимо выбрать имя функции целиком, открываемую скобки, аргументы и закрываюю скобки.
    3. Чтобы вычислить выбранную часть, нажмите F9.
    4. Чтобы заменить выбранную часть формулы ее вычисляемой величиной, нажмите ввод.

    В Excel в Интернете результаты уже отображаются в ячейке книги, а формула отображается только в .

    Дополнительные сведения

    Вы всегда можете задать вопрос эксперту в Excel Tech Community или получить поддержку в сообществах.

    Как оставить в ячейке только цифры без формул

    Argument ‘Topic id’ is null or empty

    Сейчас на форуме

    © Николай Павлов, Planetaexcel, 2006-2023
    info@planetaexcel.ru

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

    ООО «Планета Эксел»
    ИНН 7735603520
    ОГРН 1147746834949
    ИП Павлов Николай Владимирович
    ИНН 633015842586
    ОГРНИП 310633031600071

    Как оставить в ячейке только цифры без формул

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

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

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

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

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

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

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

    # Anna пппп 19.10.2023 14:17
    Дай Бог тебе здоровья добрый человек .
    # Александр123 04.10.2022 11:54
    У меня нет вкладок — оставить только числа и оставить только текст
    # Хвостов Сергей 04.10.2022 15:50

    Добрый день! В MS Excel нет такой команды. Данная команда находиться в бесплатной надстройке к MS Excel. Скачать ее можно тут: https://e-xcel.ru/index.php/joxcel/skachat-nadstrojku#download

    # DE 01.02.2022 00:55
    # Юрий2 27.08.2020 10:43
    При попытке использовать функцию пишет Compile eror- Cant find project or library
    # Хвостов Сергей 31.08.2020 00:00

    Добрый день! У Вас не установлена библиотека регулярных выражений RegExp. Скачайте, установите и все заработает.

    # Guest 14.05.2020 13:42
    У меня нет такой вкладки Ексель
    # Хвостов Сергей 14.05.2020 15:08

    Добрый день! В MS Excel нет такой команды. Данная команда находиться в бесплатной надстройке к MS Excel. Скачать ее можно тут: https://e-xcel.ru/index.php/joxcel/skachat-nadstrojku#download

    # Ирина123 24.03.2020 06:41

    Здравствуйте! Надстройка выбирает числа только целые, если с запятой, убирает ее и сливает число, это неприемлемо!

    # Хвостов Сергей 24.03.2020 18:13

    Ирина, добрый день! Спасибо Вам, что заметили эту ошибку! Постараюсь исправить ее в ближайшем обновлении. А пока для извлечения чисел из текста можете воспользоваться функцией ЁXCEL_РВИзвлечь . Она позволяет извлечь из ячейки с текстом все числа, в том числе и разделенные запятыми (точками). Допустим в ячейке A1 находится текст «Текст 123,25 125.16 21″. В ячейке B1 напишем формулу =ЁXCEL_РВИзвлеч ь(A1;»[0-9]+,[0 -9]+|[0-9]+.[0- 9]+|[0-9]+»;0;0 ;»-«) в результате получим все числа из ячейки A1 разделенные знаком «-«. Получится «123,25-125.16- 21».

    # Gabriel 11.11.2019 02:21

    Добрый день!
    Сделал импорт таблицы курсов валют в Excel и назначил обновление при открытии файла, необходимая ячейка имеет текстовой формат и в ней записываются данные валюты в виде RS4,37, данные в таком виде невозможно использовать в математических формулах. Менял формат этой ячейки на числовой, назначал ей «оставить только числа», назначал ей «удалить часть текста» — всё работает только до следующего открытия файла/обновлени я таблицы. Подскажите, пожалуйста, как вытащить число из такой ячейки для последующего использования в формуле или же как закрепить функцию «оставить только числа» для этой таблицы?

    # Хвостов Сергей 11.11.2019 10:37

    Добрый день! В ЁXCEL есть такая функция. ЁXCEL -> Формулы -> Текстовые -> ЁXCEL_Числа. Эта функция оставляет в ячейке только числа.

    # Gabriel 11.11.2019 16:02
    Цитирую Хвостов Сергей:

    Добрый день! В ЁXCEL есть такая функция. ЁXCEL -> Формулы -> Текстовые -> ЁXCEL_Числа. Эта функция оставляет в ячейке только числа.

    Добрый день! Спасибо за подсказку! Решил проблему через функцию ПСТР.
    # Татьяна 111 22.11.2019 17:50

    Подскажите мне пожалуйста, что за формула. В тексте адреса и номера домов. Нужно оставить только номера!

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

    Вот бывает так: есть у Вас в ячейке некий текст. Допустим «Было доставлено кусков мыла 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

    СПОСОБ 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

    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

    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, 18 071 скачиваний)

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

    Видеоуроки

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

    Здравствуйте скрипт при обработке ячейки:
    Пр-ка ТНВД 5301 (пер.) 50-1006315-Б2 выдает: 530150-1006315-2
    вопрос есть возможность что бы он брал только последних 15-20 сим.
    с заглавными А-Я, или хотя бы цифирки.
    Буду признателен за предложения.
    Возможно есть проще варианты(12000 стр.записеи) обрезани до последних 10-20сим.

    Александр, последние 15-20 символов можно взять при помощи функции ПРАВСИМВ(RIGHT). Так же можно совместить:
    =Extract_Number_from_Text(ПРАВСИМВ(A1))
    Более сложные вариации извлечения делаются под конкретные данные с учетом различных нюансов.

    Добрый день!
    Спасибо за замечательный код! Подскажите пожалуйста, как оставить среди неудаляемых символов пробел?
    Например, в ячейке было «Т-образный поворот SPB-RF60 TE-200 SS316L».
    Ваш код оставляет (после некоторой модификации) «60200316».
    А хотелось бы «60 200 316».
    Я не понимаю как вписать пробел в строку
    Like «*[0-9.,;:-]*» Then

    А всё разобрался, пробел нужно указывать в середине ряда, а не в конце.

    Здравствуйте.
    Использовал функцию, вызванную на VBA, все нормально, при вызове мастера функций он нормально отрабатывает
    Но при выполнение в эксель, выскакивает сообщение, что здесь используется циклическая ссылка и потом появляется значение 0. В чем дело?

    Добрый день!
    А что надо добавить в код/формулу чтобы из строки
    «ТП ВЕТЧИННАЯ ВАРЕНАЯ 400Г (162854) /Ш/»
    — вытащить только цифры до буквы Г?
    — или без содержимого скобок
    Заранее большое спасибо!

    Нашла пока только такой вариант решения:
    =ЛЕВСИМВ(B5;ПОИСК(«г «;B5)-1)
    Затем в другой колонке
    =ЕСЛИОШИБКА(ПСТР(C5;МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(C5;СТРОКА($1:$99);1));СТРОКА($1:$99)));ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР(C5;СТРОКА($1:$99);1));СТРОКА($1:$99))-МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(C5;СТРОКА($1:$99);1));СТРОКА($1:$99)))+1);1000)
    И в третьей колонке = из предыдущей и преобразовать в числовой формат макросом
    Результат достигнут, но если расскажите как можно было сделать изящнее — обязательно запомню))

    Public Function RegExpExtract(Text As String, Pattern As String, Optional Item As Integer = 1) As String On Error GoTo ErrHandl Set regex = CreateObject("VBScript.RegExp") regex.Pattern = Pattern regex.Global = True If regex.Test(Text) Then Set matches = regex.Execute(Text) RegExpExtract = matches.Item(Item - 1) Exit Function End If ErrHandl: RegExpExtract = CVErr(xlErrValue) End Function

    Public Function RegExpExtract(Text As String, Pattern As String, Optional Item As Integer = 1) As String On Error GoTo ErrHandl Set regex = CreateObject(«VBScript.RegExp») regex.Pattern = Pattern regex.Global = True If regex.Test(Text) Then Set matches = regex.Execute(Text) RegExpExtract = matches.Item(Item — 1) Exit Function End If ErrHandl: RegExpExtract = CVErr(xlErrValue) End Function

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

    Денис, спасибо. Но есть все равно пара замечаний, раз уж предлагаете воспользоваться функцией. Неплохо было бы добавить и пример применения. Иначе как тому, кто зайдет почитать использовать Ваше решение?
    Я умею использовать регулярки и по коду вижу, что помимо текста надо указать не только шаблон, но еще и номер элемента, который получить. Что является немаловажным замечанием.
    Для извлечения первого числа(без разделения групп разрядов) — =(RegExpExtract( A1 ;»\d»;1)
    Для извлечения первого текста(что не очень удобно, если чисел в тексте много) — =(RegExpExtract( A1 ;»\D»;1)
    Оба варианта слегка халтурны, но для понимания общего смысла использования подойдут.
    В общем и целом я бы в функцию еще параметр IgnoreCase добавил(при извлечении текста по шаблону может потребоваться). Да и Multiline тоже иногда может играть роль(зависит от шаблона и текста), поэтому его тоже лучше ставить в True сразу в случае с такими функциями.

    СТРОКА($1:$99) не работает

    Мизар, прежде чем так писать убедитесь, что прочитали все внимательно. Формула должна вводиться как формула массива. Т.е. одновременным нажатием тремя клавиш: Ctrl + Shift + Enter

    Поделитесь своим мнением

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

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

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