Добрый день! |
|
skais675 Пользователь Сообщений: 2177 |
#2 28.05.2019 09:39:49 Отсюда
Изменено: skais675 — 28.05.2019 09:43:38 Мой канал |
||
Aleksey1107 Пользователь Сообщений: 363 Excel 365 |
Добрый день! Почитайте здесь |
bedvit Пользователь Сообщений: 2477 Виталий |
#5 29.05.2019 12:56:59 Нашел свою реализацию (немного подправил, версия от сегодняшнего числа). До двух раз быстрее на длинных строках и смешанном тексте (в сравнении с кодом, пост2). Выкладываю код и тест.
Прикрепленные файлы
Изменено: bedvit — 29.05.2019 13:09:29 «Бритва Оккама» или «Принцип Калашникова»? |
||
Jack Famous Пользователь Сообщений: 10846 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 |
#7 23.07.2019 15:46:08 RegExp с маской «D+» будет удалять символы не по одному, а группами, что существенно резвее
Изменено: Ігор Гончаренко — 23.07.2019 16:08:35 Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
||
bedvit Пользователь Сообщений: 2477 Виталий |
Jack Famous, мой код делает именно то, что нужно было по теме. Если отбирать только кириллицу, нужно изменить в макросе коды нужных знаков Юникода . Помним, про «Ё». «Бритва Оккама» или «Принцип Калашникова»? |
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#9 23.07.2019 16:08:53 Доброе время суток.
Протестировал на строке из 40 387 200 символов. Длина строки результата 301 800 (цифры только). |
||
Jack Famous Пользователь Сообщений: 10846 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
bedvit, я пока всё-равно остановился на регулярках, т.к. и быстрее и передавать аргумент (маску) проще и понятнее, НО серьёзно удивился способу формирования одномерного байтового массива напрямую arr() As Byte=txt$ и обратно (строки из массива) — очень круто Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
sokol92 Пользователь Сообщений: 4445 |
#11 23.07.2019 16:27:08
Рекомендовано разработчиком. Владимир |
||
Jack Famous Пользователь Сообщений: 10846 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
sokol92, спасибо Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
bedvit Пользователь Сообщений: 2477 Виталий |
Jack Famous, спасибо, пользуйтесь. Изменено: bedvit — 23.07.2019 18:07:22 «Бритва Оккама» или «Принцип Калашникова»? |
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#14 23.07.2019 20:53:20
Привет, Виталий.
Тестовый файл и код прикладываю. longText.zip в формате 7z (к сожалению форум не позволяет прикладывать архивы таком формате).
Прикрепленные файлы
|
|||||||
bedvit Пользователь Сообщений: 2477 Виталий |
По DigitsXLL понятно, это функция листа, в ячейку больше 32 тысяч не лезет. Сразу не сообразил. Что хотим потестировать? «Бритва Оккама» или «Принцип Калашникова»? |
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#16 24.07.2019 08:57:32
Виталий, я максимум на Net. Вечером слеплю в ExcelDNA многопоточную версию для функции рабочего листа, протестирую. |
||
Jack Famous Пользователь Сообщений: 10846 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
bedvit, да — я понял, что с цифрами всё ОК, но вот дальше всё-равно не догоняю… В таблице (по вашей ссылке) Кириллица такая: 1025(Ё), 1040(А) — 1103(я), 1105(ё) Где тут логика и как поступать??? Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
bedvit Пользователь Сообщений: 2477 Виталий |
Jack Famous, здесь по-моему неплохо про это написано. Изменено: bedvit — 24.07.2019 12:47:14 «Бритва Оккама» или «Принцип Калашникова»? |
bedvit Пользователь Сообщений: 2477 Виталий |
Jack Famous, Вот здесь , я уже писал на этом форуме код, в такой же парадигме, для кириллицы. «Бритва Оккама» или «Принцип Калашникова»? |
Jack Famous Пользователь Сообщений: 10846 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
bedvit, и это никак не объясняет, откуда вы взяли 15, 80 и 81… С тем, как вы определяете кириллицу по разделителю «4» мне ясно, с 32 понятно — это код пробела при разделителе «0», но откуда остальные??? В таблице Юникода я что-то не то увидел… Изменено: Jack Famous — 24.07.2019 14:12:04 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
bedvit Пользователь Сообщений: 2477 Виталий |
Jack Famous, прочитали инфо по ссылке в посте 18? «Бритва Оккама» или «Принцип Калашникова»? |
Jack Famous Пользователь Сообщений: 10846 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
bedvit, нет)) я, балбес, признаю — не увидел Спасибо большое UPD: итак, в таблице Юникод коды символов совпадают с таблицей в Excel (через =СИМВОЛ() или =Chr() в VBA) с 1 по 126, дальше пляска пошла))) Пока не могу только понять, как именно из них получить 16/4 или наоборот UPD2: всё — я понял калькулятором или функциями перегонять — всё равно непонятно Изменено: Jack Famous — 24.07.2019 16:11:51 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
bedvit Пользователь Сообщений: 2477 Виталий |
#23 24.07.2019 18:28:55
1.Тест на 32767 знаков в каждой ячейке, на 1 млн. ячеек в Excel — 9 сек. (тест прилагаю, нужно открыть текст, нужной разрядности XLL, запустить)
Net time: 1130,113 мсек; digits count: 1299456; all count: 43895808 С++
digits count: 43895808 В Шарпе неудобно работать со строками, их нельзя изменять (при изменении, по факту, создается новая строка. Есть структура, где все же можно — System.Text.StringBuilder, но как видим работает «оно» медленно) Прикрепленные файлы
Изменено: bedvit — 24.07.2019 19:30:28 «Бритва Оккама» или «Принцип Калашникова»? |
||||
manat78 Пользователь Сообщений: 110 |
может как идея создать переменную (1)=»0123456789″ и потом каждый символ в тестируемом значении проверять на наличие в этой переменной (1) и если есть то сувать в еще одну переменную (2). и в конце менять значение на переменнную (2). незнаю на сколько это быстро будет))) |
sokol92 Пользователь Сообщений: 4445 |
#25 24.07.2019 20:26:45
В VBA (кроме, естественно, вызова функций рабочего листа) есть «родная» функция Hex для перевода из 10-тичной системы в 16-ричную. Для обратного перевода можно «схимичить», как указано ниже:
8-ричной системой ни разу в жизни в Excel не пользовался. Изменено: sokol92 — 24.07.2019 20:28:12 Владимир |
||||
Jack Famous Пользователь Сообщений: 10846 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
#26 25.07.2019 08:36:08 sokol92, за функции спасибо — почти уверен, что они быстрее функций листа
но именно такая (кажется) получается при передаче строки байтному массиву Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
||
bedvit Пользователь Сообщений: 2477 Виталий |
#27 25.07.2019 14:18:10 Андрей VG, Андрей, можно еще немножко ускорить код на C#.NET, если перейти на указатели и небезопасный код (Unsafe code). см. вариант 4.
V1-Net time: 1079,1079 мсек; digits count: 1299456; all count: 43895808 Изменено: bedvit — 25.07.2019 15:13:42 «Бритва Оккама» или «Принцип Калашникова»? |
|
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#28 25.07.2019 21:44:16 Привет, Виталий.
Твой С++ вне сомнения лучший, причём деградирует заметно медленнее. RegEx на 1000000 строк минут 9 молотил, твой секунд за 30 справился — точно не засекал. Изменено: Андрей VG — 25.07.2019 21:45:32 |
||
bedvit Пользователь Сообщений: 2477 Виталий |
Андрей, спасибо за исследования! А DigitOnly — это код Игоря Гончаренко — выходит самый быстрый на VBA. Опять же с помощью сторонних библ. В теории я могу подлючить свою СОМ-библиотеку и обогнать в VBA — стандартную. Далее мой код на VBA, выходит 25 сек. без сторонних библиотек. Неплохо, но с библиотеками все же лучше. Считаю нужно все использовать, если есть возможность. По XLL — для интереса, возьми вариант 4 — на шарпе самый быстрый, не сильно уступает С++, заверни его в ExcelDNA. Предполагаю, отставание раза в два-пять всего лишь будет от С++. здесь и здесь . Изменено: bedvit — 25.07.2019 23:35:31 «Бритва Оккама» или «Принцип Калашникова»? |
Inexsu Пользователь Сообщений: 758 |
#30 25.07.2019 23:58:45 Привет!
Не забыли про
? Сравнение прайсов, таблиц — без настроек |
||||
Как в Excel удалить из телефонного номера все лишние знаки? Такие как: точка, дефис, кавычки и так далее.
ReinRaus
17.6k3 золотых знака43 серебряных знака84 бронзовых знака
задан 15 июн 2015 в 11:02
Предполагая что номер лежит в 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
ReinRausReinRaus
17.6k3 золотых знака43 серебряных знака84 бронзовых знака
Содержание
- Как очистить текст в Excel от лишних символов (двойные пробелы и т.д.)?
- Как оставить в ячейке Excel только числа, а весь текст удалить
- Способы удаления текста и сохранения числовой информации
- Первый метод: использование специальной формулы
- Второй метод: использование специального макроса
- Заключение и выводы о процедуре извлечение
- Как удалить буквы, цифры или лишние символы из текста
- Как удалить цифры из текста?
- Как удалить буквы из текста?
- Как удалить лишние символы?
- Как удалить только заданные символы?
- Выборочное удаление символов из ячеек Excel
- Удаление символов из выделенного текста документа Word
- Как в офисе.
- Как удалить цифры из текста?
- Как удалить буквы из текста?
- Как удалить лишние символы?
- Как удалить только заданные символы?
- Выборочное удаление символов из ячеек Excel
- Удаление символов из выделенного текста документа Word
- Другие материалы по теме:
Как очистить текст в Excel от лишних символов (двойные пробелы и т.д.)?
Лишние (они же ненужные) символы — очень растяжимое понятие. В понимании каждого человека и в каждой отдельной ситуации лишними символами могут быть большие множества символов.
- Это могут быть, например, все символы, кроме кириллицы, латиницы и цифр (любая пунктуация)
- лишние пробелы (повторяющиеся между словами и в конце/начале строк)
- табуляция (невидимые пробелы)
- неразрывные пробелы (они же non-breaking space)
- переносы строк внутри ячейки
- в каких-то ситуациях лишними могут быть определенные несколько символов в конце или начале ячейки
- в каких-то пользователю таблиц не нужны никакие цифры и нужно оставить только текст. Или, наоборот, удалить все, кроме цифр (как в случае с номерами телефонов).
- в случаях с email-ами, URL-ами, номерами телефонов в разных форматах — потребуются уже сложнейшие regex-паттерны для извлечения нужных и удаления ненужных символов.
Все очень зависит от того, какие данные содержатся в исходной таблице и каким должен выглядеть идеальный финальный результат.
В зависимости от каждой из этих опций, потребуются разные операции и формулы Excel.
В некоторых нельзя обойтись без сложного кода, написания UDF, использующих синтаксис регулярных выражений (Regexp) или готовых решений, как надстройка !SEMTools.
В соответствующем разделе — удалить лишние символы в ячейках Excel — рассмотрены все возможные ситуации и их решения, в том числе с помощью обычных функций и процедур Excel.
Источник
Как оставить в ячейке Excel только числа, а весь текст удалить
Часто перед пользователями табличного редактора Эксель встает такая задача, когда необходимо удалить всю текстовую информацию в ячейках, а числовые данные оставить. Для осуществления этой процедуры существует множество способов. В статье мы детально разберем каждый метод, позволяющий оставить числа и убрать текст в ячейках.
Способы удаления текста и сохранения числовой информации
Представим, что у нас есть такая информация, располагающаяся в ячейке: «Было доставлено кусков мыла 763шт». Нам необходимо сделать так, чтобы осталось только значение 763 для проведения разнообразных математических операций. Хорошо, если нужно избавиться от текстовых данных только в одной ячейке, тогда можно реализовать удаление ручным способом, но этот вариант не подходит, когда в табличке находится слишком много разной информации. Здесь необходимо применять различные специальные функции табличного редактора.
Первый метод: использование специальной формулы
Для реализации этой процедуры можно применять специальную массивную формулу. Примерная формула выглядит так:
Разберем основные моменты:
- Специальную формулу необходимо вбивать в поле при помощи комбинации кнопок «Ctrl+Shift+Enter».
- Стоит заметить, что в таком виде массивная формула может использоваться только с текстовой информацией, в которой число знаков не больше 99. Для увеличения диапазона нужно, к примеру, заменить параметр «СТРОКА($1:$99)» на «СТРОКА($1:$200)». Иными словами, мы вместо показателя 99 вводим число знаков с запасом. Если ввести слишком большой диапазон, то обработка формулы может занять длительное время.
- Если в текстовых данных числовые значения разбросаны по всему тексту, то формула не сможет правильно обработать информацию.
Детально рассмотрим специальную массивную формулу на таком примере: «Было доставлено кусков мыла 763шт., а заказывали 780»
- В поле А1 располагается сама текстовая информация, из которой мы будем извлекать числовые данные.
- Фрагмент: МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(А1;СТРОКА($1:$99);1));СТРОКА($1:$99))) позволяет определить позицию 1-го значения в поле. Получаем значение 29.
- Фрагмент: ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР(А1;СТРОКА($1:$99);1));СТРОКА($1:$99)) позволяет определить позицию последнего значения в поле. Получаем значение 31.
- Мы получаем такую формулу: =ПСТР(А1;29;31-29+1). Оператор ПСТР позволяет извлечь из текстовой информации, указанной 1-м аргументом, начиная с заданной позиции (29) с числом знаков, заданным 3-м аргументом.
- В результате мы получаем:
=ПСТР(А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)
Подробная инструкция по созданию пользовательского макроса выглядит так:
- Используя специальную комбинацию клавиш «Alt+F11», производим открытие редактора VBA. Альтернативный вариант – нажать ПКМ по рабочему листу и выбрать элемент «Исходный текст».
- Реализуем создание нового модуля. Для осуществления этой процедуры жмем левой клавишей мышки на элемент, имеющий наименование «Insert», а затем выбираем объект «Module».
- Производим копирование кода, который располагается выше, и вставляем его в созданный модуль. Копирование реализуем при помощи сочетания клавиш «Ctrl+C», а вставку – «Ctrl+V».
- Теперь в необходимой ячейке, в которой мы планируем вывести только числовую информацию, вбиваем такую формулу: =GetNumbers(А1).
- Нам нужно растянуть формулу вниз на все ячейки колонки. Для этого наводим указатель на нижний правый уголок ячейки. Курсор принял форму небольшого плюсика темного цвета. Зажимаем левую клавишу мышки и протягиваем формулу вниз до окончания таблички.
- Готово! Мы реализовали извлечение числовой информации при помощи специального макроса.
Заключение и выводы о процедуре извлечение
Мы выяснили, что существует несколько способов, позволяющих реализовать извлечение числовой информации. Осуществить эту операцию можно при помощи создания специальных макросов в редакторе VBA или же используя массивную формулу. Каждый пользователь может самостоятельно выбрать для себя наиболее удобный способ, который позволит ему убрать текстовую информацию из ячейки и оставить при этом числовые данные.
Источник
Как удалить буквы, цифры или лишние символы из текста
Встречаются задачи, в которых необходимо сделать разделение символов, когда одни символы нужно удалить, а другие оставить, например, удалить любые буквы, оставив только цифры или удалить из текста, написанного кириллицей, все латинские буквы.
Простой способ быстро удалить из текста ячеек рабочего листа Excel буквы, цифры и лишние символы — использовать надстройку для Excel. Все максимально просто, пользователю не нужно писать никаких формул, достаточно задать диапазон ячеек, выбрать определенный набор символов и запустить программу.
Как удалить цифры из текста?
Программа осуществляет перебор символов в каждой ячейке и удаляет из значений ячеек только те символы, которые задал пользователь в диалоговом окне надстройки. Так, чтобы удалить из значений ячеек все цифры, нужно выбрать пункт «Только цифры».
Как удалить буквы из текста?
Чтобы удалить буквы из текста, необходимо в диалоговом окне надстройки выбрать пункт «Любые буквы», при этом в тексте ячеек цифры и знаки остаются, а все буквы, независимо от того русские они или английские, удаляются. Предусмотрено удаление из текста только латиницы (букв латинского алфавита) или только кириллицы (букв русского алфавита).
Как удалить лишние символы?
Для удаления лишних символов, необходимо выбрать пункт «Только знаки», при этом все символы кроме цифр и букв удаляются, но имеется возможность задать символы-исключения, например, чтобы все слова не слились в одну строку, можно установить флажок в поле «а также символы:» и вписать пробел. В поле для символов-исключений можно вписать любой другой символ, либо группу символов, друг за другом без пробелов или других разделителей.
Как удалить только заданные символы?
В случае, если необходимо удалить из значений ячеек отдельные символы из разных групп, предусмотрена возможность перечислить все символы, подлежащие удалению через точку с запятой. Для удаления самого символа «;» (точка с запятой) можно использовать опцию удаления по ASCII-кодам. Например, символу «;» соответствует ASCII-код «59». Эта опция будет также полезна при необходимости удаления непечатаемых символов, например символа перевода на новую строку.
Выборочное удаление символов из ячеек Excel
Надстройка позволяет пользователям в выбранном диапазоне ячеек осуществлять выборочное удаление из значений:
2) цифр и любых символов (кроме букв);
3) любых букв, как русского, так и английского алфавита;
4) любых букв и знаков;
5) любых букв и цифр;
6) только знаков (всех, кроме букв и цифр);
7) только букв кириллицы;
букв кириллицы и знаков;
9) только букв латиницы;
10) букв латинского алфавита и любых знаков;
11) символов, заданных вручную либо по ASCII-кодам.
При удалении группы символов программа позволяет создавать исключения из группы в поле «кроме символов», то есть задавать символы, которые не будут удаляться.
Удаление символов из выделенного текста документа Word
Надстройка дает возможность удалять группы символов в выделенном тексте документа Word:
1) изменять цвет шрифта у заданных символов;
2) удалять заданные символы;
3) создавать исключения из заданной группы символов;
4) осуществлять выбор одной из групп символов (цифры, знаки, буквы латиницы, буквы кириллицы и сочетания этих групп);
Источник
Как в офисе.
Встречаются задачи, в которых необходимо сделать разделение символов, когда одни символы нужно удалить, а другие оставить, например, удалить любые буквы, оставив только цифры или удалить из текста, написанного кириллицей, все латинские буквы.
Простой способ быстро удалить из текста ячеек рабочего листа Excel буквы, цифры и лишние символы — использовать надстройку для Excel. Все максимально просто, пользователю не нужно писать никаких формул, достаточно задать диапазон ячеек, выбрать определенный набор символов и запустить программу.
Как удалить цифры из текста?
Программа осуществляет перебор символов в каждой ячейке и удаляет из значений ячеек только те символы, которые задал пользователь в диалоговом окне надстройки. Так, чтобы удалить из значений ячеек все цифры, нужно выбрать пункт «Только цифры».
Как удалить буквы из текста?
Чтобы удалить буквы из текста, необходимо в диалоговом окне надстройки выбрать пункт «Любые буквы», при этом в тексте ячеек цифры и знаки остаются, а все буквы, независимо от того русские они или английские, удаляются. Предусмотрено удаление из текста только латиницы (букв латинского алфавита) или только кириллицы (букв русского алфавита).
Как удалить лишние символы?
Для удаления лишних символов, необходимо выбрать пункт «Только знаки», при этом все символы кроме цифр и букв удаляются, но имеется возможность задать символы-исключения, например, чтобы все слова не слились в одну строку, можно установить флажок в поле «а также символы:» и вписать пробел. В поле для символов-исключений можно вписать любой другой символ, либо группу символов, друг за другом без пробелов или других разделителей.
Как удалить только заданные символы?
В случае, если необходимо удалить из значений ячеек отдельные символы из разных групп, предусмотрена возможность перечислить все символы, подлежащие удалению через точку с запятой. Для удаления самого символа «;» (точка с запятой) можно использовать опцию удаления по ASCII-кодам. Например, символу «;» соответствует ASCII-код «59». Эта опция будет также полезна при необходимости удаления непечатаемых символов, например символа перевода на новую строку.
Выборочное удаление символов из ячеек Excel
надстройка для выборочного удаления символов из ячеек Excel
Надстройка позволяет пользователям в выбранном диапазоне ячеек осуществлять выборочное удаление из значений:
2) цифр и любых символов (кроме букв);
3) любых букв, как русского, так и английского алфавита;
4) любых букв и знаков;
5) любых букв и цифр;
6) только знаков (всех, кроме букв и цифр);
7) только букв кириллицы;
букв кириллицы и знаков;
9) только букв латиницы;
10) букв латинского алфавита и любых знаков;
11) символов, заданных вручную либо по ASCII-кодам.
При удалении группы символов программа позволяет создавать исключения из группы в поле «кроме символов», то есть задавать символы, которые не будут удаляться.
Удаление символов из выделенного текста документа Word
надстройка для выборочного удаления символов из текста Word
Надстройка дает возможность удалять группы символов в выделенном тексте документа Word:
1) изменять цвет шрифта у заданных символов;
2) удалять заданные символы;
3) создавать исключения из заданной группы символов;
4) осуществлять выбор одной из групп символов (цифры, знаки, буквы латиницы, буквы кириллицы и сочетания этих групп);
5) задавать символы вручную;
6) задавать ASCII-коды символов.
Другие материалы по теме:
Источник
Оставить в ячейке только числа (удалить весь текст)
Данная команда позволяет массово удалять из текст множества ячеек весь текст кроме чисел:
Чтобы воспользоваться данной командой выделите ячейки с текстом из которых вы хотите удалить текст и оставить числа, перейдите во вкладку «ЁXCEL» Главного меню, нажмите кнопку «Ячейки» и выберите команду «Оставить в ячейке только числа (удалить весь текст)»:
В выделенных ячейках останутся только числа.
Для отмены операции нажмите кнопку отмены:
Добавить комментарий
- Заменой остальных символов
- Извлечение цифр из ячейки формулой
- С помощью пользовательских функций (UDF)
- С помощью синтаксиса регулярных выражений
- Извлечь цифры из текста в 1 клик
- Видеоинструкция
Как удалить из текстовых ячеек все символы, кроме цифр, таким образом «вытащив» из них цифры? Есть несколько простых и непростых решений.
Заменой остальных символов
Самым неоптимальным способом стала бы последовательная замена всех символов на «пустоту». Если лишних символов немного и вы умеете быстро печатать, можно обойтись и таким образом Но статья, конечно же, не о таких кейсах. Если данных тысячи строк и лишних символов много, такой подход приведет к трате огромного количества времени.
Если данных сотни тысяч строк, и известно, что цифры присутствуют лишь в малой их части, будет полезным сперва найти числа в ячейках. Это позволит отфильтровать попадающие под требования ячейки и далее работать уже с ними — так будет менее ресурсозатратно. Возможно, далее вам потребуется удалить эти цифры из текста в ячейках Excel.
Извлечение цифр из ячейки формулой
Такая формула массива будет работать только в сборках Excel, в которых поддерживается функция СЦЕП (аналог JOIN в Google Spreadsheets) – это некоторые сборки Excel 2016, 2019, и все релизы Excel 2021. Отличие СЦЕП от СЦЕПИТЬ в том, что она может принимать на вход диапазоны и массивы и возвращать при этом единое значение.
Так будет выглядеть формула, извлекающая только цифры из ячейки A1:
=СЦЕП(ЕСЛИОШИБКА(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1)+0;""))
Механика её работы:
- Сначала измеряется длина текстового значения ячейки функцией ДЛСТР
- Далее создается текстовое выражение диапазона строк с помощью конкатенации амперсандом (&)
- Это текстовое выражение преобразуется в реальный диапазон функцией ДВССЫЛ
- Функция СТРОКА возвращает массив чисел от 1 до числа, соответствующего концу этого диапазона
- Функция ПСТР извлекает по этому массиву чисел соответствующие символы по порядку
- К каждому символу прибавляется 0 – это позволяет отличить цифры от остальных символов, т.к. цифры не вернут ошибку, а все остальные вернут
- Функция ЕСЛИОШИБКА заменяет все ошибки на пустые строки
- В финале функция СЦЕП объединяет массив в единую строку
С помощью пользовательских функций (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
Как применить данный код:
- внедрить его в новый модуль книги (используемой сейчас или в личной книге макросов),
- применить функцию на листе в подобном виде: =extrNum(A1).
С помощью синтаксиса регулярных выражений
Регулярные выражения — отличный помощник при работе с текстовыми данными. Их синтаксис для обработки простых паттернов довольно прост, но возможностей все усложнить предостаточно.
Как в платной, так и в бесплатной версии !SEMTools есть функции:
- regexReplace, берущая на вход 3 аргумента — строку с данными, текст регулярного выражения и строку для замены;
- regexExtract с двумя аргументами — строкой и паттерном для извлечения.
Выражение для замены любых символов, кроме цифр, на пустоту, будет выглядеть следующим образом:
=REGEXREPLACE(A1;"[^d]";"")
Выражение для извлечения первой сплошной последовательности цифр:
Что потребуется:
- установить !SEMTools,
- применить функции.
Извлечь цифры из текста в 1 клик
Пользователям платной версии !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-дневная гарантия возврата денег.
Вкладка 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.
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.
Часто перед пользователями табличного редактора Эксель встает такая задача, когда необходимо удалить всю текстовую информацию в ячейках, а числовые данные оставить. Для осуществления этой процедуры существует множество способов. В статье мы детально разберем каждый метод, позволяющий оставить числа и убрать текст в ячейках.
Содержание
- Способы удаления текста и сохранения числовой информации
- Первый метод: использование специальной формулы
- Второй метод: использование специального макроса
- Заключение и выводы о процедуре извлечение
Способы удаления текста и сохранения числовой информации
Представим, что у нас есть такая информация, располагающаяся в ячейке: «Было доставлено кусков мыла 763шт». Нам необходимо сделать так, чтобы осталось только значение 763 для проведения разнообразных математических операций. Хорошо, если нужно избавиться от текстовых данных только в одной ячейке, тогда можно реализовать удаление ручным способом, но этот вариант не подходит, когда в табличке находится слишком много разной информации. Здесь необходимо применять различные специальные функции табличного редактора.
Первый метод: использование специальной формулы
Для реализации этой процедуры можно применять специальную массивную формулу. Примерная формула выглядит так:
=ПСТР(A1;МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(А1;СТРОКА($1:$99);1));СТРОКА($1:$99)));ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР(А1;СТРОКА($1:$99);1));СТРОКА($1:$99))-МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(А1;СТРОКА($1:$99);1));СТРОКА($1:$99)))+1)
Разберем основные моменты:
- Специальную формулу необходимо вбивать в поле при помощи комбинации кнопок «Ctrl+Shift+Enter».
- Стоит заметить, что в таком виде массивная формула может использоваться только с текстовой информацией, в которой число знаков не больше 99. Для увеличения диапазона нужно, к примеру, заменить параметр «СТРОКА($1:$99)» на «СТРОКА($1:$200)». Иными словами, мы вместо показателя 99 вводим число знаков с запасом. Если ввести слишком большой диапазон, то обработка формулы может занять длительное время.
- Если в текстовых данных числовые значения разбросаны по всему тексту, то формула не сможет правильно обработать информацию.
Детально рассмотрим специальную массивную формулу на таком примере: «Было доставлено кусков мыла 763шт., а заказывали 780»
- В поле А1 располагается сама текстовая информация, из которой мы будем извлекать числовые данные.
- Фрагмент: МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(А1;СТРОКА($1:$99);1));СТРОКА($1:$99))) позволяет определить позицию 1-го значения в поле. Получаем значение 29.
- Фрагмент: ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР(А1;СТРОКА($1:$99);1));СТРОКА($1:$99)) позволяет определить позицию последнего значения в поле. Получаем значение 31.
- Мы получаем такую формулу: =ПСТР(А1;29;31-29+1). Оператор ПСТР позволяет извлечь из текстовой информации, указанной 1-м аргументом, начиная с заданной позиции (29) с числом знаков, заданным 3-м аргументом.
- В результате мы получаем:
=ПСТР(А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))
Case 48 To 57
GetNumbers = GetNumbers & Mid(TargetCell, LenStr, 1)
End Select
Next
End Function
Подробная инструкция по созданию пользовательского макроса выглядит так:
- Используя специальную комбинацию клавиш «Alt+F11», производим открытие редактора VBA. Альтернативный вариант – нажать ПКМ по рабочему листу и выбрать элемент «Исходный текст».
- Реализуем создание нового модуля. Для осуществления этой процедуры жмем левой клавишей мышки на элемент, имеющий наименование «Insert», а затем выбираем объект «Module».
- Производим копирование кода, который располагается выше, и вставляем его в созданный модуль. Копирование реализуем при помощи сочетания клавиш «Ctrl+C», а вставку – «Ctrl+V».
- Теперь в необходимой ячейке, в которой мы планируем вывести только числовую информацию, вбиваем такую формулу: =GetNumbers(А1).
- Нам нужно растянуть формулу вниз на все ячейки колонки. Для этого наводим указатель на нижний правый уголок ячейки. Курсор принял форму небольшого плюсика темного цвета. Зажимаем левую клавишу мышки и протягиваем формулу вниз до окончания таблички.
- Готово! Мы реализовали извлечение числовой информации при помощи специального макроса.
Заключение и выводы о процедуре извлечение
Мы выяснили, что существует несколько способов, позволяющих реализовать извлечение числовой информации. Осуществить эту операцию можно при помощи создания специальных макросов в редакторе VBA или же используя массивную формулу. Каждый пользователь может самостоятельно выбрать для себя наиболее удобный способ, который позволит ему убрать текстовую информацию из ячейки и оставить при этом числовые данные.
Оцените качество статьи. Нам важно ваше мнение: