Страницы: 1
RSS
Выборочная замена букв их порядковым номером в слове
 
Помогите! Не могу в найти подходящий макрос или для Excel производящий выборочную замену латинских букв:
a, e, I, o, u, y
на их порядковый номер в слове. Например:
alekandrov ➜ 1l3ks6ndr0v, где 10-ая буква из перечня «a, e, I, o, u, y» заменяется на 0. Буквы из перечня «a, e, I, o, u, y» имеющие порядковый номер больше 10 - не изменяются.
 
Код
Function RepLaceA$(s$)
  Dim d, i&, p&
  d = Array("a", "e", "I", "o", "u", "y")
  For i = 0 To UBound(d)
    Do While InStr(Left(s, 9), d(i)) > 0
      s = Replace(s, d(i), InStr(s, d(i)), Count:=1)
    Loop
  Next
  If Len(s) > 9 Then RepLaceA = Left(s, 9) & "0" & Right(s, Len(s) - 10)
End Function
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
вариант
Код
Function Zamena(ячейка As Range) As String
Dim i%, k%
For i = 1 To WorksheetFunction.Min(Len(ячейка.Value), 10)
    If InStr(1, "aeIouy", Mid(ячейка, i, 1)) Then
        k = IIf(i = 10, 0, i)
        Zamena = Zamena & k
    Else
        Zamena = Zamena & Mid(ячейка, i, 1)
    End If
Next
Zamena = Trim(Zamena & Mid(ячейка, 11, 100))
End Function
 
Огромное спасибо! Извините если задаю глупый вопрос, но есть одна проблема: итоговое выражение, получаемое в ячейке с помощью макроса мне необходимо преобразовать при помощи формул, но если в ячейку ввести:
=Zamena(ЛЕВСИМВ(F3;5))
то он не работает, можно ли как-то исправить макрос, чтобы он был применим к результатам, получаемым посредством формулы, притом что формулы в разных ячейках разные?
 
не понятно о чем Вы пишите, покажите пример
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Я и привел пример: если добавить макрос в книгу, а потом вызвать его вставив формулу в ячейку, но при этом применив макрос не к соседней ячейке, а к выражению с формулой, макрос не срабатывает. Пример формулы с вызовом макроса в котором он не работает я привел.
 
Shrv, пример - это файл, в котором не работает Ваш макрос.
Выложите файл.
 
Цитата
Shrv написал:
потом вызвать его вставив формулу в ячейку
А зачем Вам вызывать макрос таким образом?
 
Без Лунтика никуда! )
Страницы: 1
Наверх