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

Вход

Регистрация

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

 

= Мир MS Excel/Удалить повторяющиеся символы и слова в ячейке - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_  
Удалить повторяющиеся символы и слова в ячейке
pashatank Дата: Пятница, 18.09.2020, 18:16 | Сообщение № 21
Группа: Пользователи
Ранг: Участник
Сообщений: 58
Репутация: 0 ±
Замечаний: 40% ±

Excel 2010
Добрый день, уважаемые форумчане! Помогите пожалуйста доработать от такую конструкцию
[vba]
Код
Sub bb()
    Dim arr() As Variant, i&
    With CreateObject("vbscript.regexp")
        .Pattern = "(?:([^,]+),)(?=(?:.*?,\1|\1)(?:,|$))|(?:,\s*)+$|(?:(,)(\s)*){2,}|\s+\K,\s*"
        .Global = True: .MultiLine = True
        arr = Selection.Value
        For i = 1 To UBound(arr)
        If .test(arr(i, 1)) Then arr(i, 1) = .Replace(arr(i, 1), "$2$3")
        Next
        Selection.Value = arr
    End With
End Sub
[/vba]

Приложил пример, в нем в столбце А макрос уже применен для наглядности, в столбце B как раз начальный текст, в котором и нужно удалить все лишнее запятые.

После ее применения, остается лишняя запятая, как например в столбце А, в четвертой строке: Фильтр масляный , AUDI A3, вот от таких запятых надо избавиться, которые остаются после названия товара (Фильтр масляный) и перед маркой (AUDI A3), а вот после марок эти самые запятые необходимо оставить, когда идет перечисление: AUDI A4, AUDI A6, VOLKSWAGEN PASSAT.

Надеюсь объяснил не запутано
К сообщению приложен файл: 6905462.xls (66.0 Kb)
 
Ответить
СообщениеДобрый день, уважаемые форумчане! Помогите пожалуйста доработать от такую конструкцию
[vba]
Код
Sub bb()
    Dim arr() As Variant, i&
    With CreateObject("vbscript.regexp")
        .Pattern = "(?:([^,]+),)(?=(?:.*?,\1|\1)(?:,|$))|(?:,\s*)+$|(?:(,)(\s)*){2,}|\s+\K,\s*"
        .Global = True: .MultiLine = True
        arr = Selection.Value
        For i = 1 To UBound(arr)
        If .test(arr(i, 1)) Then arr(i, 1) = .Replace(arr(i, 1), "$2$3")
        Next
        Selection.Value = arr
    End With
End Sub
[/vba]

Приложил пример, в нем в столбце А макрос уже применен для наглядности, в столбце B как раз начальный текст, в котором и нужно удалить все лишнее запятые.

После ее применения, остается лишняя запятая, как например в столбце А, в четвертой строке: Фильтр масляный , AUDI A3, вот от таких запятых надо избавиться, которые остаются после названия товара (Фильтр масляный) и перед маркой (AUDI A3), а вот после марок эти самые запятые необходимо оставить, когда идет перечисление: AUDI A4, AUDI A6, VOLKSWAGEN PASSAT.

Надеюсь объяснил не запутано

Автор - pashatank
Дата добавления - 18.09.2020 в 18:16
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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