Excel VBA Replace

NatalieRedFox_333

Чего мне бояться? - подумала Красная Шапочка...)))
Топикстартер
Сообщения
2 089
Реакции
145
Hi!
Решила использовать макросы вместо формул..
вот нашла примеры, мне надо пробелы поменять на нижнее подчеркивание....

вот несколько формул.... какую лучше использовать?

раз -

Код:
Sub Test()
    ActiveCell = Replace(ActiveCell, " ", "_")
End Sub

два -
Код:
Function sss(text)
    sss = Replace(text, " ", "_")
End Function

три -
Код:
Function sss(txt, s1, s2)
    sss = Replace(txt, s1, s2)
End Function

четыре -
Код:
Function sss(txt, Optional s1 = " ", Optional s2 = "_")
    sss = Replace(txt, s1, s2)
End Function

Ps мне надо получить аналог моей формулы и заменить опрделенные пробелы в определенных местах в колонке - другими словами...
выбираем столбик (все ячейки) запускаем макро и получаем результат )))


Код:
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(L2;" is My";" is_My");" Of ";" of_"); тут еще значения...
 

NatalieRedFox_333

Чего мне бояться? - подумала Красная Шапочка...)))
Топикстартер
Сообщения
2 089
Реакции
145
зачем вообще они столько формул написали....?
одной правильной недостаточно...? 'otbline'
 

NatalieRedFox_333

Чего мне бояться? - подумала Красная Шапочка...)))
Топикстартер
Сообщения
2 089
Реакции
145
так... первый работает только для активной ячейки ))) не годиться... надо сразу и все...
 

NatalieRedFox_333

Чего мне бояться? - подумала Красная Шапочка...)))
Топикстартер
Сообщения
2 089
Реакции
145
что то не работают у меня эти макросы.... 'otbline'
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 183
Реакции
10 843
Они все вырваны из контекста конкретного кода, вне которого бессмысленны
 
  • Спасибо
Реакции: NatalieRedFox_333

NatalieRedFox_333

Чего мне бояться? - подумала Красная Шапочка...)))
Топикстартер
Сообщения
2 089
Реакции
145
Они все вырваны из контекста конкретного кода, вне которого бессмысленны
да... что то совсем не то.... работает только первая но только для активной ячейки ))) а мне надо все и сразу .
наверно придется формулы пока оставить....))) надежней будет... :)
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 183
Реакции
10 843
938e8a8b8a9ed026cd095d943149504f.jpg
 
  • Спасибо
Реакции: NatalieRedFox_333

Gad

Сообщения
2 975
Реакции
1 407
  • Спасибо
Реакции: NatalieRedFox_333

NatalieRedFox_333

Чего мне бояться? - подумала Красная Шапочка...)))
Топикстартер
Сообщения
2 089
Реакции
145
Ну не знаю :) Если таки ограничиться диапазоном ячеек в которых что-то есть, то так можно :)
Код:
Sub ReplaceSpace()
    Dim c As Range
    For Each c In ActiveSheet.UsedRange
    c = Replace(c, " ", "_")
    Next
End Sub
Супер...!!! 'cooll)'
 

NatalieRedFox_333

Чего мне бояться? - подумала Красная Шапочка...)))
Топикстартер
Сообщения
2 089
Реакции
145
Ну не знаю :) Если таки ограничиться диапазоном ячеек в которых что-то есть, то так можно :)
Код:
Sub ReplaceSpace()
    Dim c As Range
    For Each c In ActiveSheet.UsedRange
    c = Replace(c, " ", "_")
    Next
End Sub
а как добавить второй параметр...., третий..., пятнадцатый ))))
ну допустим надо еще заменить "no","yes" ?
 

NatalieRedFox_333

Чего мне бояться? - подумала Красная Шапочка...)))
Топикстартер
Сообщения
2 089
Реакции
145
типа этого - ;"I Like";"I_Like");"I Run";"I_Run")
так?
Код:
Sub ReplaceSpace()
    Dim c As Range
    For Each c In ActiveSheet.UsedRange
    c = Replace(Replace(Replace(c, " ", "_");"I Like";"I_Like");"I Run";"I_Run")
    Next
End Sub
 
Последнее редактирование:

NatalieRedFox_333

Чего мне бояться? - подумала Красная Шапочка...)))
Топикстартер
Сообщения
2 089
Реакции
145

NatalieRedFox_333

Чего мне бояться? - подумала Красная Шапочка...)))
Топикстартер
Сообщения
2 089
Реакции
145
Gad, Скажи пожалуйста... я добавила 50 значений в макрос... что то он у меня стал долго думать... крестик трясется )))
так и должно быть?
а в самом Excel 100 строк...
а если оставить только одну строку в макросе
c = Replace(c, " ", "_")
то он моментально все проходит...))))
 
Последнее редактирование:

NatalieRedFox_333

Чего мне бояться? - подумала Красная Шапочка...)))
Топикстартер
Сообщения
2 089
Реакции
145
вот...
 

Вложения

  • Untitled.jpg
    Untitled.jpg
    125.1 КБ · Просм.: 160

splxgf

12 лет на форуме
Сообщения
7 742
Реакции
3 424
оптимизировать надо
не каждый раз ячейку на чтение-запись мучать, а промежуточные замены делать отдельной переменной.

Sub ReplaceAnything()
Dim t As Range
For Each t In ActiveSheet.UsedRange
c = t

с = Replace(с, " ", "_")
c = Replace(c, "yes", "no")
t = c
Next
End Sub

или
c = t.formula
...
t.formula = c
 
Последнее редактирование:
  • Спасибо
Реакции: Gad и NatalieRedFox_333