Страницы: 1
RSS
Нужно разделить варианты ответов символом |
 
На примере 2 варианта ответа в двух строках excel

Первый вариант
Льготное кредитование и субсидирование, Обучение техническим навыкам (работа с цифровыми технологиями, e-gov, плейс-маркет, банкинг и т.д.), Страхование (социальное, медицинское)
Второй вариант
Социально-трудовые (трудоустройство, обучение, курсы повышения квалификации, курсы профессиональные, пособия и т.д.), Социально-экономические (Социально-экономические услуги направлены на поддержание и улучшение жизненного уровня)

Есть вот такие варианты ответа в одной строке excel нужно разделить после каждого варианта символом таким | то есть:
Первый вариант нужно сделать вот так в нескольких документах поэтому нужен максрос как я понимаю?
Льготное кредитование и субсидирование|Обучение техническим навыкам (работа с цифровыми технологиями, e-gov, плейс-маркет, банкинг и т.д.)|Страхование (социальное, медицинское)

Второй вариант
Социально-трудовые (трудоустройство, обучение, курсы повышения квалификации, курсы профессиональные, пособия и т.д.)|Социально-экономические (Социально-экономические услуги направлены на поддержание и улучшение жизненного уровня)

Получается встречается запятые и в предложениях поэтому символ надо заменять по поиску после запятой пробел и Заглавная буква

Как это автоматизировать таких документов 35 по 25000 строк помогите пожалуйста
Изменено: Жомарт Кенесов - 23.10.2021 07:07:04
 
Жомарт Кенесов, нет файла - не нужно весь часть данных 10-20 ячеек с данными достаточно и показать желаемый результат после замены
удачи)
Код
Sub mrshkei()
Dim lr As Long, i As Long, n As Long, j As Long, lcol As Long
lr = Cells(1, 1).SpecialCells(xlLastCell).Row
lcol = Cells(1, 1).SpecialCells(xlLastCell).Column
For j = 1 To lcol
    For i = 1 To lr
        If Cells(i, j) <> Empty Then
            For n = 2 To Len(Cells(i, j))
            On Error Resume Next
            If Mid(Cells(i, j), n, 1) & " " = ", " And UCase(Mid(Cells(i, j), n + 2, 1)) = Mid(Cells(i, j), n + 2, 1) Then
                    Cells.Replace What:=Mid(Cells(i, j), n, 3), Replacement:=Replace(Mid(Cells(i, j), n, 3), ", ", "|"), LookAt:=xlPart, _
                    SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, _
                    ReplaceFormat:=False
                n = n + 2
            End If
            Next n
        End If
    Next i
Next j
End Sub

Изменено: Mershik - 22.10.2021 22:49:33
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
после запятой пробел и Заглавная буква
Код
Sub Tablica()
Dim i As Long
Dim iLastRow As Long
Dim Delimiter As String
   Delimiter = "|"
 iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
 With CreateObject("VBScript.RegExp")
     .Global = True
     .Pattern = ",\s(?=[А-Я])"
   For i = 1 To iLastRow
     If .test(Cells(i, 1)) Then
       Cells(i, 2) = .Replace(Cells(i, 1), Delimiter)
     End If
   Next
 End With
End Sub
 
Mershik, спасибо большое то что нужно.

Kuzmich, код то что нужно. Выполняет все правильно, но он делает только в первом столбце как можно поменять столбец в коде или же что бы он выполнялся на всех столбах. У меня в документе 34 столбца.  
Страницы: 1
Наверх