Страницы: 1
RSS
Удаление цифр из текста
 
Здравствуйте.
Возникла необходимость из массива данных убрать из текста все цифры.
С формулами столкнулся совсем не давно, поэтому решения, как заставить перебирать текст с разным количеством символов в ячейке, определять цифры и подставлять "", у меня пока нет.
Формулой это возможно или тут нужен макрос?
Спасибо.
 
Как оставить в ячейке только цифры или только текст?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Ну или чуть попроще и менее универсально  :)  В общий модуль:
Код
Dim r As Object

Public Function ReplaceNumbers$(s$)
    On Error Resume Next
    ReplaceNumbers = r.replace(s, "")
    If Err Then
        Err.Clear
        Set r = CreateObject("vbscript.regexp")
        r.Pattern = "\d+": r.Global = -1
        ReplaceNumbers = r.Replace(s, "")
    End If
End Function
Изменено: KuklP - 12.08.2013 20:29:47
Я сам - дурнее всякого примера! ...
 
Это уже обсуждалось, пользуйтесь поиском!
один из вариантов решения
Изменено: КиберЗверь - 12.08.2013 18:44:05
 
Так пошустрей должно быть:
Код
Dim r As Object

Public Function ReplaceNumbers$(s$)
    On Error GoTo ReplaceNumbers_Error
    ReplaceNumbers = r.Replace(s, "")
    On Error GoTo 0
    Exit Function
ReplaceNumbers_Error:
    Set r = CreateObject("vbscript.regexp")
    r.Pattern = "\d+": r.Global = -1
    Resume
End Function
Изменено: KuklP - 12.08.2013 20:29:18
Я сам - дурнее всякого примера! ...
 
Цитата
.replase
гм
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Согласен, исправлю  :D Хотя и так будет работать.
Я сам - дурнее всякого примера! ...
 
Цитата
Хотя и так будет работать.
стоп.
с этого места помедленнее - я буду записувать.
связывание позднее - ошибки компиляции не будет, ок.
метода нет - возникнет ошибка и перекинется на обработчик.
обработчик создаст объект, установит свойсва и вернёт в точку возникновения ошибки.
которая опять возникнет?..

пс. не, ну конечно, взять и проверить в отладчике - это можно. но неинтересно.  :D
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Саш, я исправил не только букву. В том варианте не было  Resume. Было
Код
ReplaceNumbers = r.Replace(s, "")
End Function
Так что ошибка не зацикливалась. Просто объект создавался на каждой ячейке.
Я сам - дурнее всякого примера! ...
 
ага.
понял, спасибо.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Вот уж эти макрописцы :)
Формула (маленькая, компактная):
Код
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(B3;0;"");1;"");2;"");3;"");4;"");5;"");6;"");7;"");8;"");9;"")
 
Цитата
Формула (маленькая, компактная):
- в 2003 не должна работать :(
 
Михаил, 21 век на дворе :) У Mirdv Пример.xlsx :)
 
Ну и что, что XXI век? у меня до сих пор черно-белый телевизор...

:D
 
офф.
Михаил, может быть Вы мне не поверите, но у меня вода по расписанию и только холодная :)
Телевизор цветной ж/к 1 шт в комнате у дочки, но офис 2013  :)
 
Большое спасибо всем за участие!
Nic70y - Вам отдельное спасибо за формулу.
 
Nic70y, сейчас представил, что надо буквы убрать из строки. Посмотрел на Вашу формулу и поежился  :D
Я сам - дурнее всякого примера! ...
 
Цитата
в 2003
Цитата
21 век на дворе

а 2003 - это какой век?  :D
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
ОФФ. Имеется ввиду - 21,1 век  :D
Для компьютеров  10 лет - как век для остальных  :D
 
Цитата
2003 - это
19 :)
Страницы: 1
Наверх