Excel как убрать все кроме цифр

 

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

 

skais675

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

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

#2

28.05.2019 09:39:49

Отсюда

Код
Public Function onlyDigits(stroka) 'Только цифры
    Static objRegExp As Object
     If objRegExp Is Nothing Then
         Set objRegExp = CreateObject("VBScript.RegExp")
         objRegExp.Global = True
         objRegExp.Pattern = "[^0-9]"
     End If
     onlyDigits = objRegExp.Replace(stroka, "")
 End Function

Изменено: skais67528.05.2019 09:43:38

Мой канал

 

Aleksey1107

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

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

Excel 365

Добрый день!

Почитайте

здесь

 
 

bedvit

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

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

Виталий

#5

29.05.2019 12:56:59

Нашел свою реализацию (немного подправил, версия от сегодняшнего числа). До двух раз быстрее на длинных строках и смешанном тексте (в сравнении с кодом, пост2). Выкладываю код и тест.
На данных: строка — 32 тыс. символов, строк — 10 тыс. — 10 сек, против 20 сек. через регулярки.
На меньших сроках превосходство меньше, но все равно существенное.
Прошу тестировать.

Код
Option Explicit
'Автор Б. Виталий В. (bvv, bedvit)
'Редакция: 1 от 29/05/2019
'Действие: Функция - в строке остаются только цифры

Public Function Digits(ByVal str As String) As String
Dim x As Long, y As Long, Chars() As Byte, Chars2() As Byte, Char As Byte
Chars = str: ReDim Preserve Chars2(UBound(Chars) + 1)
For x = LBound(Chars) To UBound(Chars) Step 2
    If Chars(x + 1) = 0 Then
    Char = Chars(x)
        If Char < 58 Then If Char > 47 Then Chars2(y) = Char: y = y + 2
    End If
Next
Digits = Chars2
End Function

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

  • Digits_test.xlsb (26.81 КБ)

Изменено: bedvit29.05.2019 13:09:29

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

 

Jack Famous

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

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

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

bedvit, отличная функция, но для того, чтобы оставить кириллицу нужно что-то с ней сделать, т.к. преобразует в байты на 176 позиций назад и «разделяет» через 4, а не 0.

То есть:

ВАСЯ это не 194/0/192/0/209/0/223/0, а 18/4/16/4/33/4/47/4

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

Ігор Гончаренко

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

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

#7

23.07.2019 15:46:08

RegExp с маской «D+» будет удалять символы не по одному, а группами, что существенно резвее

Код
Function DigitOnly(s$)
  Dim re
  Set re = CreateObject("VBScript.RegExp"): re.Global = True
  re.Pattern = "D+":  DigitOnly = re.Replace(s, "")
End Function

Изменено: Ігор Гончаренко23.07.2019 16:08:35

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

bedvit

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

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

Виталий

Jack Famous, мой код делает именно то, что нужно было по теме. Если отбирать только кириллицу, нужно изменить в макросе

коды нужных знаков Юникода

. Помним, про «Ё».
Ігор Гончаренко, да, так быстрее на порядок, тест:
onlyDigits 20,07031
Digits 10,64453
DigitOnly 2,636719

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

 

Андрей VG

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

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

Excel 2016, 365

#9

23.07.2019 16:08:53

Доброе время суток.

Цитата
Ігор Гончаренко написал:
существенно резвее

Протестировал на строке из 40 387 200 символов. Длина строки результата 301 800 (цифры только).
Ігор Гончаренко, шаблон «D+», время 0,18 секунды
skais675, шаблон «[^0-9]», время 1,77 секунды
skais675, шаблон «[^0-9]+», время 0,27 секунды
bedvit, 1,2 секунды

 

Jack Famous

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

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

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

bedvit, я пока всё-равно остановился на регулярках, т.к. и быстрее и передавать аргумент (маску) проще и понятнее, НО серьёзно удивился способу формирования одномерного байтового массива напрямую arr() As Byte=txt$ и обратно (строки из массива) — очень круто  :idea:

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

sokol92

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

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

#11

23.07.2019 16:27:08

Цитата
Jack Famous написал:
удивился способу формирования одномерного байтового массива

Рекомендовано

разработчиком.

Владимир

 

Jack Famous

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

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

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

sokol92, спасибо  ;)

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

bedvit

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

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

Виталий

Jack Famous, спасибо, пользуйтесь.
sokol92, Владимир, спасибо за инфо.
Андрей VG, Андрей, спасибо за тест. Посмотрел, что на таких больших объемах мой код в аутсайдерах. Другое дело, что в ячейку столько не влезет, поэтому не так критично.
Тоже смотрю последнее время на регулярки. Есть идея зашить в функцию (C API), на это нужно время, зато для форума польза. Скорость думаю должна быть неплохая ;)
Вот, к примеру протестируй, пожалуйста функцию «DigitsXLL» в нужной разрядности XLL на своем массиве (через Application. Run, нужно просто открыть XLL, функция появится в категории «BedvitXLL»)
У меня следующие результаты, на моем примере (см. вложение).
onlyDigits 20 сек
Digits 10 сек
DigitOnly 2,6 сек
DigitsXLL 0,4 сек

Изменено: bedvit23.07.2019 18:07:22

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

 

Андрей VG

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

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

Excel 2016, 365

#14

23.07.2019 20:53:20

Цитата
bedvit написал:
что на таких больших объемах мой код в аутсайдерах

Привет, Виталий.
С твоим кодом в VBA есть и ещё проблема. Тестовый вывод показывает, что не удаляется ничего. Не пошёл и вызов Application.Run(«DigitsXLL», sText), как и с Evaluate — видимо слишком длинная строка :) Результаты.

Цитата
Igor D+ time: 0,0859375; digit count: 1299456; all count: 43895808
skais675 [^d]+ time: 0,3828125; digit count: 1299456; all count: 43895808
BedVit VBA time: 1,117188; digit count: 43895808; all count: 43895808

Тестовый файл и код прикладываю. longText.zip в формате 7z (к сожалению форум не позволяет прикладывать архивы таком формате).
P. S. Решил сравнить с библиотекой .Net и тут засада. Или у меня руки не оттуда растут или… Результат

Цитата
Net time: 719,0871 мсек; digits count: 1299456; all count: 43895808

Скрытый текст

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

  • Digits_test.xlsb (25.56 КБ)
  • longText.zip (8.19 КБ)

 

bedvit

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

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

Виталий

По  DigitsXLL понятно, это функция листа, в ячейку больше 32 тысяч не лезет. Сразу не сообразил.
По Digits в VBA — пока не понял, гляну.
На .NET тоже глянем, как можно ускорить.
Здесь появляется два момента:
1. Самая быстрая функция для расчетов в ячейке Excel, макс 32 767 знаков(VBA, COM, XLL)
2. Самая быстрая функция для любого количества знаков.
2.1 что бы можно использовать в VBA (VBA, COM)
2.2 любой инструмент (EXE на .NET, EXE на С++)

Что хотим потестировать?
Готов поучаствовать везде.

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

 

Андрей VG

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

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

Excel 2016, 365

#16

24.07.2019 08:57:32

Цитата
bedvit написал:
любой инструмент (EXE на .NET, EXE на С++)

Виталий, я максимум на Net. Вечером слеплю в ExcelDNA многопоточную версию для функции рабочего листа, протестирую.

 

Jack Famous

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

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

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

bedvit, да — я понял, что с цифрами всё ОК, но вот дальше всё-равно не догоняю…

В таблице (по вашей ссылке) Кириллица такая:

1025(Ё), 1040(А) — 1103(я), 1105(ё)
1. «ВАСЯ» по ней: 1042 | 1040 | 1057 | 1071
2. • при преобразовании в байтовый массив: 18 | 16 | 33 | 47 (через «4»)
3. • при преобразовании сначала через StrConv: 18 | 16 | 33 | 47 (через «0-4-0» вместо «4»)

Где тут логика и как поступать???

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

bedvit

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

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

Виталий

Jack Famous,

здесь

по-моему неплохо про это написано.

Изменено: bedvit24.07.2019 12:47:14

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

 

bedvit

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

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

Виталий

Jack Famous,  Вот

здесь

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

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

 

Jack Famous

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

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

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

bedvit, и это никак не объясняет, откуда вы взяли 15, 80 и 81… С тем, как вы определяете кириллицу по разделителю «4» мне ясно, с 32 понятно — это код пробела при разделителе «0», но откуда остальные??? В таблице Юникода я что-то не то увидел…

Изменено: Jack Famous24.07.2019 14:12:04

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

bedvit

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

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

Виталий

Jack Famous, прочитали инфо по ссылке в посте 18?

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

 

Jack Famous

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

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

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

bedvit, нет)) я, балбес, признаю — не увидел  :D Спасибо большое  :idea:
Не могу только понять, из какой в какую систему перегонять надо… Сижу функции перебираю…

UPD:

итак, в таблице Юникод коды символов совпадают с таблицей в Excel (через =СИМВОЛ() или =Chr() в VBA) с 1 по 126, дальше пляска пошла)))
В Юникоде код представлен (например, для русской «А») в десятичной (1040) или шестнадцатиричной (0410) системах счисления

Пока не могу только понять, как именно из них получить 16/4 или наоборот  :D
Вроде как это восмеричная система, но тогда почему вместо 2020 (если перевести 1040 из десятичной в восьмеричную) выдаёт эти «16 и 4»? Кратность какая-то?

UPD2:

всё — я понял  :D
1040 = 16 | 4 = 16 + 256*4 (для всей кириллицы будет)
Вот только как

калькулятором

или функциями перегонять — всё равно непонятно  :D

Изменено: Jack Famous24.07.2019 16:11:51

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

bedvit

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

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

Виталий

#23

24.07.2019 18:28:55

Цитата
bedvit написал:
1. Самая быстрая функция для расчетов в ячейке Excel, макс 32 767 знаков(VBA, COM, XLL)2. Самая быстрая функция для любого количества знаков.2.1 что бы можно использовать в VBA (VBA, COM)2.2 любой инструмент (EXE на .NET, EXE на С++)

1.Тест на 32767 знаков в каждой ячейке, на 1 млн. ячеек в Excel — 9 сек. (тест прилагаю, нужно открыть текст, нужной разрядности XLL, запустить)
2.1 — СОМ не делал, за неимением спроса, будет такая же скорость как и в п.2.2
2.2 — C#.NET Андрей, внес в твой код еще два варианта:

Скрытый текст

Net time: 1130,113 мсек; digits count: 1299456; all count: 43895808
Net time: 247,0247 мсек; digits count: 1299456; all count: 43895808 — вар2
Net time: 124,0124 мсек; digits count: 1299456; all count: 43895808 — вар3

С++

Скрытый текст

digits count: 43895808
time = 99, digits count: 1299456

В Шарпе неудобно работать со строками, их нельзя изменять (при изменении, по факту, создается новая строка. Есть структура, где все же можно — System.Text.StringBuilder, но как видим работает «оно» медленно)
В С++ строка, это лишь массив символов, можно менять что угодно, прямо на месте.
Поэтому в тестах несколько быстрее.

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

  • толко_цифры2.rar (255.67 КБ)

Изменено: bedvit24.07.2019 19:30:28

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

 

manat78

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

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

может как идея создать переменную (1)=»0123456789″ и потом каждый символ в тестируемом значении проверять на наличие в этой переменной (1) и если есть то сувать в еще одну переменную (2). и в конце менять значение на переменнную (2). незнаю на сколько это быстро будет)))

 

sokol92

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

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

#25

24.07.2019 20:26:45

Цитата
Jack Famous написал:
функциями перегонять — всё равно непонятно  

В VBA (кроме, естественно, вызова функций рабочего листа) есть «родная» функция Hex для перевода из 10-тичной системы в 16-ричную. Для обратного перевода можно «схимичить», как указано ниже:

Код
Sub test()
  Dim s As String
  Debug.Print AscW("А")  ' выдает 1040 - номер в юникоде для заглавной "А" кириллицы в 10-тичной системе счисления
  Debug.Print Hex(1040)  ' выдаст 410 - перевод 1040 из 10- в 16-ричную
  s = "410"
  Debug.Print CDbl("&H" & s) ' выдает 1040 - обратный перевод из 16- в 10-
  Debug.Print ChrW(1040)     ' выдает заглавную "А"
End Sub

8-ричной системой ни разу в жизни в Excel не пользовался.

Изменено: sokol9224.07.2019 20:28:12

Владимир

 

Jack Famous

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

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

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#26

25.07.2019 08:36:08

sokol92, за функции спасибо — почти уверен, что они быстрее функций листа  :idea:

Цитата
sokol92: 8-ричной системой ни разу в жизни в Excel не пользовался

но именно такая (кажется) получается при передаче строки байтному массиву  :D
В любом случае, что делать с этими цифрами теперь понятно.

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

bedvit

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

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

Виталий

#27

25.07.2019 14:18:10

Андрей VG, Андрей, можно еще немножко ускорить код на C#.NET, если перейти на указатели и небезопасный код (Unsafe code). см. вариант 4.
Еще ближе к С++.
upd. Немного подправил свой код.

Скрытый текст

V1-Net time: 1079,1079 мсек; digits count: 1299456; all count: 43895808
V2-Net time: 243,0243 мсек; digits count: 1299456; all count: 43895808
V3-Net time: 135,0135 мсек; digits count: 1299456; all count: 43895808
V4-Net time: 119,0119 мсек; digits count: 1299456; all count: 43895808

Изменено: bedvit25.07.2019 15:13:42
(upd. Немного подправил свой код.)

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

 

Андрей VG

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

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

Excel 2016, 365

#28

25.07.2019 21:44:16

Привет, Виталий.
Огромное спасибо за исследование. Сделал в ExcelDNA, но так как исходно RegEx исходно раз в восемь медленнее, то не смотря на то, что можно задействовать IsThreadSafe, получается, что VBScript.RegExp твой код на ячейках выполнять для 32000 строк за 13 секунд, а RegEx за 20!

Цитата
onlyDigits 40,46875
Digits 25,32031
DigitOnly 12,75
DigitsXLL 0,3359375
Net RegEx 19,60938

Твой С++ вне сомнения лучший, причём деградирует заметно медленнее. RegEx на 1000000 строк минут 9 молотил, твой секунд за 30 справился — точно не засекал.

Изменено: Андрей VG25.07.2019 21:45:32

 

bedvit

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

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

Виталий

Андрей, спасибо за исследования! А DigitOnly — это код Игоря Гончаренко — выходит самый быстрый на VBA. Опять же с помощью сторонних библ. В теории я могу подлючить свою СОМ-библиотеку и обогнать в VBA — стандартную. Далее мой код на VBA, выходит 25 сек. без сторонних библиотек. Неплохо, но с библиотеками все же лучше. Считаю нужно все использовать, если есть возможность. По XLL — для интереса, возьми вариант 4 — на шарпе самый быстрый, не сильно уступает С++, заверни его в ExcelDNA. Предполагаю, отставание раза в два-пять всего лишь будет от С++.
Да C API в XLL впечатляет, конкурентов нет, кроме стандартных функций.  Хочу обогнать ВПР(), но пока проигрываю (медленнее на 46%). Не удается по указателю в Excel залесть (а разыменовывать весь массив это дорого, за счёт этого проигрываю), а встроенным функциям видимо есть доступ к памяти Excel через указатель. Или используется механизм кеширования — сейчас я о нем подумываю. Если интересно — написал даже

здесь

и

здесь

.

Изменено: bedvit25.07.2019 23:35:31

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

 

Inexsu

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

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

#30

25.07.2019 23:58:45

Привет!

Цитата
DopplerEffect написал:
все символы, кроме цифр?

Не забыли про

Код
Application.DecimalSeparator

?

Сравнение прайсов, таблиц — без настроек

Как в Excel удалить из телефонного номера все лишние знаки? Такие как: точка, дефис, кавычки и так далее.

ReinRaus's user avatar

ReinRaus

17.6k3 золотых знака43 серебряных знака84 бронзовых знака

задан 15 июн 2015 в 11:02

spoilt's user avatar

Предполагая что номер лежит в A1 (упоминается в двух местах):

=SUMPRODUCT(MID(0&A1,LARGE(INDEX(ISNUMBER(--MID(A1,ROW($1:$25),1))
*ROW($1:$25),0),ROW($1:$25))+1,1)*10^ROW($1:$25)/10)

Честно украдено с How do I strip out all non-numeric characters?

На русском (не проверял, перевел по таблице):

=СУММПРОИЗВ(ПСТР(0&A1,НАИБОЛЬШИЙ(ИНДЕКС(ЕЧИСЛО(--ПСТР(A1,СТРОКА($1:$25),1))
*СТРОКА($1:$25),0),СТРОКА($1:$25))+1,1)*10^СТРОКА($1:$25)/10)

ответ дан 15 июн 2015 в 12:20

1

Если число «лишних» символов ограничено, то можно использовать много вложенных «поставить» в формуле:

подставить( подставить(текст, ".", ""), "-", "" )

и так далее. Сколько символов, столько и «подставить».

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

dim re as New RegExp
re.Pattern = "\D"
re.replace( text, "" )

ответ дан 15 июн 2015 в 11:23

ReinRaus's user avatar

ReinRausReinRaus

17.6k3 золотых знака43 серебряных знака84 бронзовых знака

Содержание

  1. Как очистить текст в Excel от лишних символов (двойные пробелы и т.д.)?
  2. Как оставить в ячейке Excel только числа, а весь текст удалить
  3. Способы удаления текста и сохранения числовой информации
  4. Первый метод: использование специальной формулы
  5. Второй метод: использование специального макроса
  6. Заключение и выводы о процедуре извлечение
  7. Как удалить буквы, цифры или лишние символы из текста
  8. Как удалить цифры из текста?
  9. Как удалить буквы из текста?
  10. Как удалить лишние символы?
  11. Как удалить только заданные символы?
  12. Выборочное удаление символов из ячеек Excel
  13. Удаление символов из выделенного текста документа Word
  14. Как в офисе.
  15. Как удалить цифры из текста?
  16. Как удалить буквы из текста?
  17. Как удалить лишние символы?
  18. Как удалить только заданные символы?
  19. Выборочное удаление символов из ячеек Excel
  20. Удаление символов из выделенного текста документа Word
  21. Другие материалы по теме:

Как очистить текст в Excel от лишних символов (двойные пробелы и т.д.)?

Лишние (они же ненужные) символы — очень растяжимое понятие. В понимании каждого человека и в каждой отдельной ситуации лишними символами могут быть большие множества символов.

  • Это могут быть, например, все символы, кроме кириллицы, латиницы и цифр (любая пунктуация)
  • лишние пробелы (повторяющиеся между словами и в конце/начале строк)
  • табуляция (невидимые пробелы)
  • неразрывные пробелы (они же non-breaking space)
  • переносы строк внутри ячейки
  • в каких-то ситуациях лишними могут быть определенные несколько символов в конце или начале ячейки
  • в каких-то пользователю таблиц не нужны никакие цифры и нужно оставить только текст. Или, наоборот, удалить все, кроме цифр (как в случае с номерами телефонов).
  • в случаях с email-ами, URL-ами, номерами телефонов в разных форматах — потребуются уже сложнейшие regex-паттерны для извлечения нужных и удаления ненужных символов.

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

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

В некоторых нельзя обойтись без сложного кода, написания UDF, использующих синтаксис регулярных выражений (Regexp) или готовых решений, как надстройка !SEMTools.

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

Источник

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

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

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

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

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

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

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

  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

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

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

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

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

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

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

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

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))

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

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

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

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

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

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

Источник

Как удалить буквы, цифры или лишние символы из текста

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

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

Как удалить цифры из текста?

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

Как удалить буквы из текста?

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

Как удалить лишние символы?

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

Как удалить только заданные символы?

В случае, если необходимо удалить из значений ячеек отдельные символы из разных групп, предусмотрена возможность перечислить все символы, подлежащие удалению через точку с запятой. Для удаления самого символа «;» (точка с запятой) можно использовать опцию удаления по ASCII-кодам. Например, символу «;» соответствует ASCII-код «59». Эта опция будет также полезна при необходимости удаления непечатаемых символов, например символа перевода на новую строку.

Выборочное удаление символов из ячеек Excel

Надстройка позволяет пользователям в выбранном диапазоне ячеек осуществлять выборочное удаление из значений:

2) цифр и любых символов (кроме букв);

3) любых букв, как русского, так и английского алфавита;

4) любых букв и знаков;

5) любых букв и цифр;

6) только знаков (всех, кроме букв и цифр);

7) только букв кириллицы;

8) букв кириллицы и знаков;

9) только букв латиницы;

10) букв латинского алфавита и любых знаков;

11) символов, заданных вручную либо по ASCII-кодам.

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

Удаление символов из выделенного текста документа Word

Надстройка дает возможность удалять группы символов в выделенном тексте документа Word:

1) изменять цвет шрифта у заданных символов;

2) удалять заданные символы;

3) создавать исключения из заданной группы символов;

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

Источник

Как в офисе.

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

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

Как удалить цифры из текста?

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

Как удалить буквы из текста?

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

Как удалить лишние символы?

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

Как удалить только заданные символы?

В случае, если необходимо удалить из значений ячеек отдельные символы из разных групп, предусмотрена возможность перечислить все символы, подлежащие удалению через точку с запятой. Для удаления самого символа «;» (точка с запятой) можно использовать опцию удаления по ASCII-кодам. Например, символу «;» соответствует ASCII-код «59». Эта опция будет также полезна при необходимости удаления непечатаемых символов, например символа перевода на новую строку.

Выборочное удаление символов из ячеек Excel

надстройка для выборочного удаления символов из ячеек Excel

Надстройка позволяет пользователям в выбранном диапазоне ячеек осуществлять выборочное удаление из значений:

2) цифр и любых символов (кроме букв);

3) любых букв, как русского, так и английского алфавита;

4) любых букв и знаков;

5) любых букв и цифр;

6) только знаков (всех, кроме букв и цифр);

7) только букв кириллицы;

8) букв кириллицы и знаков;

9) только букв латиницы;

10) букв латинского алфавита и любых знаков;

11) символов, заданных вручную либо по ASCII-кодам.

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

Удаление символов из выделенного текста документа Word

надстройка для выборочного удаления символов из текста Word

Надстройка дает возможность удалять группы символов в выделенном тексте документа Word:

1) изменять цвет шрифта у заданных символов;

2) удалять заданные символы;

3) создавать исключения из заданной группы символов;

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

5) задавать символы вручную;

6) задавать ASCII-коды символов.

Другие материалы по теме:

Источник

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

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

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

Чтобы воспользоваться данной командой выделите ячейки с текстом из которых вы хотите удалить текст и оставить числа, перейдите во вкладку «Ё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 есть это и сотни других готовых решений!!

Если у вас есть столбец текстовых строк, в котором вы просто хотите сохранить первые два символа и удалить все остальные символы из ячеек, за исключением удаления их по одному, есть ли у вас другие быстрые способы решения этой проблемы в Excel?

Удалите все символы, кроме первых x, из ячеек с помощью формулы

Удалите все символы, кроме первых x, из ячеек с помощью Kutools for Excel

Удалить первые/последние x символов из ячеек с помощью Kutools for Excel


Удалите все символы, кроме первых x, из ячеек с помощью формулы

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

док удалить все, кроме первого

1. Введите эту формулу в пустую ячейку B1, например, = ВЛЕВО (A1,2), см. снимок экрана:

док удалить все, кроме первого

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

2. Затем перетащите дескриптор заполнения вниз к ячейкам, к которым вы хотите применить эту формулу, и все символы будут удалены из ячеек, но сохранятся только первые два символа строки. Смотрите скриншот:

док удалить все, кроме первого

Внимание: Если вы хотите удалить все символы, кроме двух последних, вы можете использовать эту формулу: = ПРАВЫЙ (A1,2), и вы также можете изменить A1 и число 2 другим по мере необходимости.


Удалите все символы, кроме первых x, из ячеек с помощью Kutools for Excel

Если вы установили Kutools for Excel, С его Удалить по позиции утилиту, вы можете быстро удалить первые или последние x символов, которые вам не нужны, наоборот, вы также можете удалить все, кроме первых x символов.

После установки Kutools for Excel, пожалуйста, сделайте следующее :( Скачать и бесплатную пробную версию Kutools for Excel Сейчас ! )

1. Выделите ячейки, в которых вы хотите удалить все, кроме первых двух символов.

2. Нажмите Кутулс > Текст > Удалить по позиции, см. снимок экрана:

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

док удалить все, кроме первого

4. Затем нажмите Ok or Применить кнопка, в этом случае все символы были удалены из текстовой строки, но остались только первые два символа, см. снимки экрана:

Нажмите, чтобы узнать больше об этой функции удаления по положению…


Удалить первые/последние x символов из ячеек с помощью Kutools for Excel

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

После установки Kutools for Excel, пожалуйста, сделайте следующее:

1. Выберите диапазон данных, из которого вы хотите удалить первые два символа.

2. Примените эту функцию, нажав Кутулс > Текст > Удалить по позиции, в выскочившем Удалить по позиции диалоговом окне укажите количество символов, которые нужно удалить в Номера текстовое окно. А затем проверьте Слева чтобы удалить первые x символов и проверить Справа удалить последние x символов под Позиция. Вы можете просмотреть результат из предварительный просмотр панель. Смотрите скриншот:

док удалить все, кроме первого

3. Затем нажмите Ok or Применить кнопку, чтобы получить желаемый результат.

Нажмите, чтобы узнать больше об этой функции удаления по положению…

Скачать и бесплатную пробную версию Kutools for Excel Сейчас !


Демо: удалить все символы x, кроме первых x / удалить первые или последние символы x из ячеек


Связанная статья:

Как удалить префикс / суффикс из нескольких ячеек в 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% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

If you are going to go to a User Defined Function (aka UDF) then perform all of the actions; don’t rely on the preliminary worksheet formula to pass a stripped number and possible suffix text to the UDF.

In a standard code module as,

Function udfJustNumber(str As String, _
                       Optional delim As String = "number", _
                       Optional startat As Long = 1, _
                       Optional digits As Long = 13, _
                       Optional bCaseSensitive As Boolean = False, _
                       Optional bNumericReturn As Boolean = True)
    Dim c As Long

    udfJustNumber = vbNullString
    str = Trim(Mid(str, InStr(startat, str, delim, IIf(bCaseSensitive, vbBinaryCompare, vbTextCompare)) + Len(delim), digits))

    For c = 1 To Len(str)
        Select Case Asc(Mid(str, c, 1))
            Case 32
                'do nothing- skip over
            Case 48 To 57
                If bNumericReturn Then
                    udfJustNumber = Val(udfJustNumber & Mid(str, c, 1))
                Else
                    udfJustNumber = udfJustNumber & Mid(str, c, 1)
                End If
            Case Else
                Exit For
        End Select
    Next c

End Function

I’ve used your narrative to add several optional parameters. You can change these if your circumstances change. Most notable is whether to return a true number or text-that-looks-like-a-number with the bNumericReturn option. Note that the returned values are right-aligned as true numbers should be in the following supplied image.

enter image description here

By supplying FALSE to the sixth parameter, the returned content is text-that-looks-like-a-number and is now left-aligned in the worksheet cell.

enter image description here

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

Содержание

  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 или же используя массивную формулу. Каждый пользователь может самостоятельно выбрать для себя наиболее удобный способ, который позволит ему убрать текстовую информацию из ячейки и оставить при этом числовые данные.

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

Понравилась статья? Поделить с друзьями:
  • Excel как убрать водяной знак страница 1
  • Excel как убрать апостроф перед числами
  • Excel как убрать автозамену датами
  • Excel как убрать абзац в ячейке excel
  • Excel как убрать textbox