Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Удаление знаков препинания - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удаление знаков препинания (Макросы/Sub)
Удаление знаков препинания
l-lisa Дата: Вторник, 17.06.2014, 23:39 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 312
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте, у меня возникла проблема с макросом, удаляющим пробелы и знаки препинания, кроме запятой из текстово-численных строк. Если в строке первой оказывается цифра, то макрос эту цифру удаляет. Прикладываю файл со своим макросом. Если не сложно, подскажите, как его мне подправить, чтобы ничего лишнего из строк не удалялось, кроме того что указано в массиве для удаления
К сообщению приложен файл: _-1-.xls (68.0 Kb)


Сообщение отредактировал l-lisa - Вторник, 17.06.2014, 23:39
 
Ответить
СообщениеЗдравствуйте, у меня возникла проблема с макросом, удаляющим пробелы и знаки препинания, кроме запятой из текстово-численных строк. Если в строке первой оказывается цифра, то макрос эту цифру удаляет. Прикладываю файл со своим макросом. Если не сложно, подскажите, как его мне подправить, чтобы ничего лишнего из строк не удалялось, кроме того что указано в массиве для удаления

Автор - l-lisa
Дата добавления - 17.06.2014 в 23:39
Hugo Дата: Среда, 18.06.2014, 00:12 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3254
Репутация: 707 ±
Замечаний: 0% ±

2019
Убрать строку
[vba]
Код
If IsNumeric(Mid(ss, 1, 1)) Then ss = Mid(ss, 2, Len(ss))
[/vba]
Зачем она вообще была задумана?
Зачем там вообще использовали словарь?
Почему не сделать проще:
[vba]
Код
Function Prov(ByVal s As String)
     Dim el, a
     ''Добавлять сюда в конец:  "(", ")", "s" )
     a = Array(" ", ",", ".", "-", "_", "+" _
                    , "*", "\", "/", "[", "]", "{", "}", "'" _
                    , ";", ":", "=", """", "(", ")")
     '''''''''''''''''''''
     For Each el In a: s = Replace(s, el, ""): Next
     Prov = s
End Function
[/vba]


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеУбрать строку
[vba]
Код
If IsNumeric(Mid(ss, 1, 1)) Then ss = Mid(ss, 2, Len(ss))
[/vba]
Зачем она вообще была задумана?
Зачем там вообще использовали словарь?
Почему не сделать проще:
[vba]
Код
Function Prov(ByVal s As String)
     Dim el, a
     ''Добавлять сюда в конец:  "(", ")", "s" )
     a = Array(" ", ",", ".", "-", "_", "+" _
                    , "*", "\", "/", "[", "]", "{", "}", "'" _
                    , ";", ":", "=", """", "(", ")")
     '''''''''''''''''''''
     For Each el In a: s = Replace(s, el, ""): Next
     Prov = s
End Function
[/vba]

Автор - Hugo
Дата добавления - 18.06.2014 в 00:12
l-lisa Дата: Среда, 18.06.2014, 00:16 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 312
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
А ноль всё равно удаляется...
 
Ответить
СообщениеА ноль всё равно удаляется...

Автор - l-lisa
Дата добавления - 18.06.2014 в 00:16
Hugo Дата: Среда, 18.06.2014, 00:19 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3254
Репутация: 707 ±
Замечаний: 0% ±

2019
Чтоб не удалялся ноль - сделайте формат ячейки текстовым. Это не код 0 удаляет, а Эксель.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеЧтоб не удалялся ноль - сделайте формат ячейки текстовым. Это не код 0 удаляет, а Эксель.

Автор - Hugo
Дата добавления - 18.06.2014 в 00:19
SkyPro Дата: Среда, 18.06.2014, 11:24 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
[vba]
Код
Function Prov$(ByVal txt$, Optional delim$ = " ")
     Dim regex As Object
     Set regex = CreateObject("vbscript.regexp")
         With regex
             .Global = True
             .IgnoreCase = True
             .MultiLine = True
             .Pattern = "([\.;:'=+_\-\!\?\&\(\)\/ ])"
         End With
     replacePunctuations = regex.Replace(txt, delim)
     Set regex = Nothing
End Function
[/vba]


skypro1111@gmail.com
 
Ответить
Сообщение[vba]
Код
Function Prov$(ByVal txt$, Optional delim$ = " ")
     Dim regex As Object
     Set regex = CreateObject("vbscript.regexp")
         With regex
             .Global = True
             .IgnoreCase = True
             .MultiLine = True
             .Pattern = "([\.;:'=+_\-\!\?\&\(\)\/ ])"
         End With
     replacePunctuations = regex.Replace(txt, delim)
     Set regex = Nothing
End Function
[/vba]

Автор - SkyPro
Дата добавления - 18.06.2014 в 11:24
anvg Дата: Среда, 18.06.2014, 15:39 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
SkyPro, у вас имя функции Prov, а результат возвращается для replacePunctuations - будет ли работать? И не проще ли перечислить, что оставить?
[vba]
Код
Private FReg As Object
Public Function replacePunctuations(ByVal this As String) As String
     If FReg Is Nothing Then
         Set FReg = CreateObject("VBScript.RegExp")
         FReg.IgnoreCase = True
         FReg.Global = True: FReg.Pattern = "[^, \da-zёа-я]"
     End If
     replacePunctuations = FReg.Replace(this, "")
End Function
[/vba]
 
Ответить
СообщениеSkyPro, у вас имя функции Prov, а результат возвращается для replacePunctuations - будет ли работать? И не проще ли перечислить, что оставить?
[vba]
Код
Private FReg As Object
Public Function replacePunctuations(ByVal this As String) As String
     If FReg Is Nothing Then
         Set FReg = CreateObject("VBScript.RegExp")
         FReg.IgnoreCase = True
         FReg.Global = True: FReg.Pattern = "[^, \da-zёа-я]"
     End If
     replacePunctuations = FReg.Replace(this, "")
End Function
[/vba]

Автор - anvg
Дата добавления - 18.06.2014 в 15:39
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удаление знаков препинания (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!