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

Вход

Регистрация

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

 

= Мир MS Excel/Замена текста в строке по двум условиям - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Замена текста в строке по двум условиям
Замена текста в строке по двум условиям
EvaNa Дата: Пятница, 11.12.2020, 11:08 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
Здравствуйте, уважаемые форумчане. Прошу вашей помощи с написанием макроса.
Есть список адресов.
Надо проверить если строка начинается с цифры и в строке нет фрагмента "Российская Федерация", то заменить 7 позицию (после индекса и запятой) в строке на " Российская Федерация,".
А если встречается "Россия" или "РФ", то заменить ее на "Российская Федерация"
Если первое значение в строке не число, то окрасить ее в зеленый цвет.
К сообщению приложен файл: 11122020address.xls(28.0 Kb)
 
Ответить
СообщениеЗдравствуйте, уважаемые форумчане. Прошу вашей помощи с написанием макроса.
Есть список адресов.
Надо проверить если строка начинается с цифры и в строке нет фрагмента "Российская Федерация", то заменить 7 позицию (после индекса и запятой) в строке на " Российская Федерация,".
А если встречается "Россия" или "РФ", то заменить ее на "Российская Федерация"
Если первое значение в строке не число, то окрасить ее в зеленый цвет.

Автор - EvaNa
Дата добавления - 11.12.2020 в 11:08
mgt Дата: Пятница, 11.12.2020, 12:36 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 3 ±
Замечаний: 0% ±

Excel 2010
К выделенному диапазону:

[vba]
Код
Private Sub RF()
Dim c As Range
For Each c In Selection.Cells
    If IsNumeric(Left(c.Value, 3)) = False Then
        c.Interior.Color = vbGreen
    ElseIf InStr(1, c.Value, "Россия") > 0 Then
        c.Value = Replace(c.Value, "Россия", "Российская Федерация")
    ElseIf InStr(1, c.Value, " РФ") > 0 Then
        c.Value = Replace(c.Value, "РФ", "Российская Федерация")
    ElseIf InStr(1, c.Value, "Российская Федерация") = 0 Then
        c.Value = Left(c.Value, 7) & " Российская Федерация, " & Right(c.Value, Len(c.Value) - 8)
    End If
Next
End Sub
[/vba]


Сообщение отредактировал mgt - Пятница, 11.12.2020, 12:38
 
Ответить
СообщениеК выделенному диапазону:

[vba]
Код
Private Sub RF()
Dim c As Range
For Each c In Selection.Cells
    If IsNumeric(Left(c.Value, 3)) = False Then
        c.Interior.Color = vbGreen
    ElseIf InStr(1, c.Value, "Россия") > 0 Then
        c.Value = Replace(c.Value, "Россия", "Российская Федерация")
    ElseIf InStr(1, c.Value, " РФ") > 0 Then
        c.Value = Replace(c.Value, "РФ", "Российская Федерация")
    ElseIf InStr(1, c.Value, "Российская Федерация") = 0 Then
        c.Value = Left(c.Value, 7) & " Российская Федерация, " & Right(c.Value, Len(c.Value) - 8)
    End If
Next
End Sub
[/vba]

Автор - mgt
Дата добавления - 11.12.2020 в 12:36
EvaNa Дата: Пятница, 11.12.2020, 14:08 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
mgt, Большое спасибо за помощь. Все отлично работает
 
Ответить
Сообщениеmgt, Большое спасибо за помощь. Все отлично работает

Автор - EvaNa
Дата добавления - 11.12.2020 в 14:08
Kuzmich Дата: Пятница, 11.12.2020, 14:12 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 575
Репутация: 113 ±
Замечаний: 0% ±

Excel 2003
UDF
[vba]
Код
Function iРФ(cell$) As String
With CreateObject("VBScript.RegExp")
     .IgnoreCase = True
     .Pattern = "[^,](РФ|Россия|Российская Федерация)"
     If .test(cell) Then
       iРФ = .Replace(cell, " Российская Федерация")
     Else
       If IsNumeric(Left(cell, 6)) Then
         iРФ = Left(cell, 6) & ", Российская Федерация" & Mid(cell, 7)
       Else
         iРФ = "Нет почтового индекса"
       End If
     End If
End With
End Function
[/vba]
 
Ответить
СообщениеUDF
[vba]
Код
Function iРФ(cell$) As String
With CreateObject("VBScript.RegExp")
     .IgnoreCase = True
     .Pattern = "[^,](РФ|Россия|Российская Федерация)"
     If .test(cell) Then
       iРФ = .Replace(cell, " Российская Федерация")
     Else
       If IsNumeric(Left(cell, 6)) Then
         iРФ = Left(cell, 6) & ", Российская Федерация" & Mid(cell, 7)
       Else
         iРФ = "Нет почтового индекса"
       End If
     End If
End With
End Function
[/vba]

Автор - Kuzmich
Дата добавления - 11.12.2020 в 14:12
EvaNa Дата: Пятница, 11.12.2020, 15:42 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
Kuzmich, Спасибо и вам за решение. У меня будет несколько макросов для обработки текстовых данных и все они собраны в основной книге. Для работы с данными в других книга буду подтягивать макросы из основной. И вот насколько понимаю макросы из открытой основной книги подтянуть никакого труда, а вот функцию надо прописывать в каждой новой книге, или прописывать макрос ссылающийся на модуль с функцией в основном листе. Пока мне известен только такой вариант, но многого еще не знаю.
 
Ответить
СообщениеKuzmich, Спасибо и вам за решение. У меня будет несколько макросов для обработки текстовых данных и все они собраны в основной книге. Для работы с данными в других книга буду подтягивать макросы из основной. И вот насколько понимаю макросы из открытой основной книги подтянуть никакого труда, а вот функцию надо прописывать в каждой новой книге, или прописывать макрос ссылающийся на модуль с функцией в основном листе. Пока мне известен только такой вариант, но многого еще не знаю.

Автор - EvaNa
Дата добавления - 11.12.2020 в 15:42
Kuzmich Дата: Пятница, 11.12.2020, 16:49 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 575
Репутация: 113 ±
Замечаний: 0% ±

Excel 2003
EvaNa,
Переведите функцию в макрос, на подобии того, что я вам предложил в прошлой теме.
 
Ответить
СообщениеEvaNa,
Переведите функцию в макрос, на подобии того, что я вам предложил в прошлой теме.

Автор - Kuzmich
Дата добавления - 11.12.2020 в 16:49
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Замена текста в строке по двум условиям
  • Страница 1 из 1
  • 1
Поиск:

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