Страницы: 1
RSS
Поиск символа в ячейке и его замена, Необходимо заменить Р на Х, учитывая регистр, т.е если Р заглавная, то и Х заглавная и наоборот.
 
Доброго времени суток, подскажите как можно в ячейке найти букву  Р и заменить ее на Х, учитывая  регистр, т.е если Р заглавная, то и Х заглавная и наоборот.
(В ячейке некий текст). Попробовал использовать функцию ниже, но она не учитывает регистр. Благодарю за помощь.
Код
Worksheets("EXCEL").Cells(n, 6).Replace "р", "x", xlPart

 
Цитата
в ячейке найти букву  Р и заменить ее на Х
Какой алфавит Rus или Lat ?
 
Фарит, https://docs.microsoft.com/ru-ru/office/vba/language/reference/user-interface-help/replace-function
Не бойтесь совершенства. Вам его не достичь.
 
может быть и тот и другой. Я поставлю два условия, одно будет искать лат., а другое рус.
 
Для Rus
Код
Function iReplace(cell$)
 With CreateObject("VBScript.RegExp")
     .Global = True
     .Pattern = "Р"
     iReplace = .Replace(cell, "Х")
 End With
End Function
 
Никак не могу понять как ее запустить. Запуск должен произойти когда проверяется именно ячейка "Worksheets("EXCEL").Cells(n, 6)"
 
UDF  в стандартный модуль
В А1 текст, в В1 вставляете =iReplace(A1)
 
Можно так:
Код
Worksheets("EXCEL").Cells(n, 6) = Replace(Replace(Worksheets("EXCEL").Cells(n, 6), "p", "x"), "P", "X")
Владимир
 
Владимир ОГРОМНОЕ Вам спасибо, заработало!!!
 
Зачем метод, когда есть функция… И уж совсем странно регулярки использовать)))
Код
Dim x, rng As Range

Set rng=ActiveWorkBook.Worksheets("EXCEL").Cells(n, 6)
x=rng.Value

x=Replace(x,"Р","Х")
x=Replace(x,"р","х")
…
rng.Value=x
UPD. Подход, как у sokol92, только пошагово и с переменными для наглядности
Изменено: Jack Famous - 05.11.2020 09:21:00
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Фарит написал:
Попробовал использовать функцию ниже, но она не учитывает регистр.
можно же и полностью диапазоны заменять, а не циклом по каждой ячейке:
Код
Worksheets("EXCEL").Column(6).Replace "р", "x", lookat:=xlPart,matchcase:=true
matchcase - как раз этот параметр отвечает за учет регистра
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Фарит: Попробовал использовать функцию ниже, но она не учитывает регистр
этот метод использует последние настройки, при которых выполнялась замена. Именно поэтому нужно использовать ВСЕ аргументы метода, а не только те, которые нужны в данный момент. Ещё лучше будет "сбросить" настройки инструмента после использования (выставить параметры вручную) и особенно - формат ячейки для поиска

Запоминание и изменение настроек инструмента "Найти и Заменить" макросом
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх