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

Вход

Регистрация

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

 

= Мир MS Excel/Вставка значения в предыдущий пробел - Мир MS Excel

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

Excel 2019
Добрый день! Прошу вашей помощи с созданием макроса.
У меня есть список адресов, где по разному записаны улицы.
Пример для понимания: РФ, Омская область, г. Омск, Диановая ул, д. 16
Можно ли в макросе описать следующую задачу?
Найти в строке текст " ул," и если он есть, то его удалить, а на место предыдущего в тексте пробела (от того, где найден искомый текст) вставить " ул. "
Т.е. Результат должен быть: РФ, Омская область, г. Омск, ул. Диановая, д. 16
К сообщению приложен файл: 4298605.xls (24.5 Kb)
 
Ответить
СообщениеДобрый день! Прошу вашей помощи с созданием макроса.
У меня есть список адресов, где по разному записаны улицы.
Пример для понимания: РФ, Омская область, г. Омск, Диановая ул, д. 16
Можно ли в макросе описать следующую задачу?
Найти в строке текст " ул," и если он есть, то его удалить, а на место предыдущего в тексте пробела (от того, где найден искомый текст) вставить " ул. "
Т.е. Результат должен быть: РФ, Омская область, г. Омск, ул. Диановая, д. 16

Автор - EvaNa
Дата добавления - 09.12.2020 в 14:21
Nic70y Дата: Среда, 09.12.2020, 15:28 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 8759
Репутация: 2273 ±
Замечаний: 0% ±

Excel 2010
как-то так наверное
[vba]
Код
Sub u_1148()
    Application.ScreenUpdating = False
    a = Cells(Rows.Count, "a").End(xlUp).Row
    For Each b In Range("a1:a" & a)
        c = InStr(b, "ул,")
        If c > 0 Then
            d = Left(b, c)
            e = InStrRev(d, ",")
            f = Left(b, e) & " ул."
            g = Len(b)
            h = Right(b, g - e)
            i = f & h
            b.Value = Replace(i, " ул,", ",")
        End If
    Next
    Application.ScreenUpdating = True
End Sub
[/vba]


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Среда, 09.12.2020, 15:29
 
Ответить
Сообщениекак-то так наверное
[vba]
Код
Sub u_1148()
    Application.ScreenUpdating = False
    a = Cells(Rows.Count, "a").End(xlUp).Row
    For Each b In Range("a1:a" & a)
        c = InStr(b, "ул,")
        If c > 0 Then
            d = Left(b, c)
            e = InStrRev(d, ",")
            f = Left(b, e) & " ул."
            g = Len(b)
            h = Right(b, g - e)
            i = f & h
            b.Value = Replace(i, " ул,", ",")
        End If
    Next
    Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Nic70y
Дата добавления - 09.12.2020 в 15:28
Kuzmich Дата: Среда, 09.12.2020, 15:52 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 711
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
UDF
[vba]
Код
Function iStreet(cell$) As String
With CreateObject("VBScript.RegExp")
     .IgnoreCase = True
     .Pattern = "[^,]([А-ЯЁ ]+) (ул)"
     iStreet = .Replace(cell, "$2. $1")
End With
End Function
[/vba]
 
Ответить
СообщениеUDF
[vba]
Код
Function iStreet(cell$) As String
With CreateObject("VBScript.RegExp")
     .IgnoreCase = True
     .Pattern = "[^,]([А-ЯЁ ]+) (ул)"
     iStreet = .Replace(cell, "$2. $1")
End With
End Function
[/vba]

Автор - Kuzmich
Дата добавления - 09.12.2020 в 15:52
EvaNa Дата: Среда, 09.12.2020, 16:09 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
Nic70y, Спасибо большое за решение!
 
Ответить
СообщениеNic70y, Спасибо большое за решение!

Автор - EvaNa
Дата добавления - 09.12.2020 в 16:09
EvaNa Дата: Среда, 09.12.2020, 16:11 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2019
Kuzmich, Спасибо за важное добавление. Я думала обойти такую возможную ошибку условием поиска "(пробел)ул,". Ваш вариант выглядит грамотнее.
 
Ответить
СообщениеKuzmich, Спасибо за важное добавление. Я думала обойти такую возможную ошибку условием поиска "(пробел)ул,". Ваш вариант выглядит грамотнее.

Автор - EvaNa
Дата добавления - 09.12.2020 в 16:11
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вставка значения в предыдущий пробел
  • Страница 1 из 1
  • 1
Поиск:

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