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

Вход

Регистрация

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

 

= Мир MS Excel/заменить буквы на следующую по алфавиту - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » заменить буквы на следующую по алфавиту (Формулы/Formulas)
заменить буквы на следующую по алфавиту
AlvesHugo Дата: Понедельник, 24.04.2017, 20:15 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
буквы на следующую букву заменить

АБВ = БВГ
ЯЭ = АЮ
СТУФ = ТУФХ

должны измениться
 
Ответить
Сообщениебуквы на следующую букву заменить

АБВ = БВГ
ЯЭ = АЮ
СТУФ = ТУФХ

должны измениться

Автор - AlvesHugo
Дата добавления - 24.04.2017 в 20:15
AlexM Дата: Понедельник, 24.04.2017, 20:56 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4480
Репутация: 1114 ±
Замечаний: 0% ±

Excel 2003
1. нужен ваш файл с примером.
2. название темы не соответствует задаче.
3. максимальное количество букв в строке



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение1. нужен ваш файл с примером.
2. название темы не соответствует задаче.
3. максимальное количество букв в строке

Автор - AlexM
Дата добавления - 24.04.2017 в 20:56
Michael_S Дата: Понедельник, 24.04.2017, 21:02 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
AlexM, для AlvesHugo, можно сделать скидку - "Страна: Эль Сальвадор"
Кроме файла-примера
 
Ответить
СообщениеAlexM, для AlvesHugo, можно сделать скидку - "Страна: Эль Сальвадор"
Кроме файла-примера

Автор - Michael_S
Дата добавления - 24.04.2017 в 21:02
AlvesHugo Дата: Понедельник, 24.04.2017, 21:10 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
ТЕКСТ МОЖЕТ БЫТЬ ДОЛГО

A1 = АБВ = СИМВОЛ(КОДСИМВ(ПСТР(A1;1;1))+1)&СИМВОЛ(КОДСИМВ(ПСТР(A1;2;1))+1)&СИМВОЛ(КОДСИМВ(ПСТР(A1;3;1))+1)


Сообщение отредактировал AlvesHugo - Понедельник, 24.04.2017, 21:11
 
Ответить
СообщениеТЕКСТ МОЖЕТ БЫТЬ ДОЛГО

A1 = АБВ = СИМВОЛ(КОДСИМВ(ПСТР(A1;1;1))+1)&СИМВОЛ(КОДСИМВ(ПСТР(A1;2;1))+1)&СИМВОЛ(КОДСИМВ(ПСТР(A1;3;1))+1)

Автор - AlvesHugo
Дата добавления - 24.04.2017 в 21:10
gling Дата: Понедельник, 24.04.2017, 23:45 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2519
Репутация: 674 ±
Замечаний: 0% ±

2010
Можно наверно сразу написать UDF, но я не умею. Макросы должны быть включены.
К сообщению приложен файл: 8782347.xlsm (16.9 Kb)


ЯД-41001506838083

Сообщение отредактировал gling - Понедельник, 24.04.2017, 23:57
 
Ответить
СообщениеМожно наверно сразу написать UDF, но я не умею. Макросы должны быть включены.

Автор - gling
Дата добавления - 24.04.2017 в 23:45
AlexM Дата: Вторник, 25.04.2017, 00:53 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4480
Репутация: 1114 ±
Замечаний: 0% ±

Excel 2003
[vba]
Код
Function Char_incr(iString As String) As String
    Dim a() As Byte, b(), i As Long
    a() = StrConv(iString, vbFromUnicode)
    ReDim Preserve b(0 To UBound(a))
    On Error Resume Next 'если в строке будет буква я
    For i = 0 To UBound(a)
         b(i) = Chr(a(i) + 1)
    Next
    Char_incr = Join(b, "")
End Function
[/vba]
К сообщению приложен файл: Char_incr.xls (18.0 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.


Сообщение отредактировал AlexM - Вторник, 25.04.2017, 00:54
 
Ответить
Сообщение[vba]
Код
Function Char_incr(iString As String) As String
    Dim a() As Byte, b(), i As Long
    a() = StrConv(iString, vbFromUnicode)
    ReDim Preserve b(0 To UBound(a))
    On Error Resume Next 'если в строке будет буква я
    For i = 0 To UBound(a)
         b(i) = Chr(a(i) + 1)
    Next
    Char_incr = Join(b, "")
End Function
[/vba]

Автор - AlexM
Дата добавления - 25.04.2017 в 00:53
buchlotnik Дата: Вторник, 25.04.2017, 00:59 | Сообщение № 7
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
AlexM, Алексей, но ведь в этом варианте
Цитата
ЯЭ = АЮ
не получится;

AlvesHugo, поясните, что делать с Ё? и буквы всегда заглавные?


Сообщение отредактировал buchlotnik - Вторник, 25.04.2017, 01:03
 
Ответить
СообщениеAlexM, Алексей, но ведь в этом варианте
Цитата
ЯЭ = АЮ
не получится;

AlvesHugo, поясните, что делать с Ё? и буквы всегда заглавные?

Автор - buchlotnik
Дата добавления - 25.04.2017 в 00:59
Светлый Дата: Вторник, 25.04.2017, 07:46 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1829
Репутация: 510 ±
Замечаний: 0% ±

Excel 2013, 2016
Пример решения без VBA с итерациями. Сброс - A1=0, Замена - A1=1:
Код
=ЕСЛИ(A$1;ЕСЛИ(ДЛСТР(B2)<ДЛСТР(A2);B2&СИМВОЛ(КОДСИМВ(ПСТР(A2;ДЛСТР(B2)+1;1))+1-(ПСТР(A2;ДЛСТР(B2)+1;1)="Я")*32);B2);"")

Буква "ё" не учитывается, но можно нагромоздить формулу.
К сообщению приложен файл: sledbukv.xlsx (8.9 Kb)


Программировать проще, чем писать стихи.
 
Ответить
СообщениеПример решения без VBA с итерациями. Сброс - A1=0, Замена - A1=1:
Код
=ЕСЛИ(A$1;ЕСЛИ(ДЛСТР(B2)<ДЛСТР(A2);B2&СИМВОЛ(КОДСИМВ(ПСТР(A2;ДЛСТР(B2)+1;1))+1-(ПСТР(A2;ДЛСТР(B2)+1;1)="Я")*32);B2);"")

Буква "ё" не учитывается, но можно нагромоздить формулу.

Автор - Светлый
Дата добавления - 25.04.2017 в 07:46
AlexM Дата: Вторник, 25.04.2017, 08:40 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4480
Репутация: 1114 ±
Замечаний: 0% ±

Excel 2003
buchlotnik, можно поменять строку b(i) = Chr(a(i) + 1) на b(i) = UCase(Chr(a(i) + 1))
С Ё не работает.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщениеbuchlotnik, можно поменять строку b(i) = Chr(a(i) + 1) на b(i) = UCase(Chr(a(i) + 1))
С Ё не работает.

Автор - AlexM
Дата добавления - 25.04.2017 в 08:40
buchlotnik Дата: Вторник, 25.04.2017, 17:23 | Сообщение № 10
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
AlexM, Алексей, я лишь обратил внимание, что Я должна обратно в А переходить. Сам вот такую конструкцию соорудил: [vba]
Код
Function preobr$(t$)
    Dim i%, j%, chars() As Byte, codes()
    
    chars() = StrConv(t, 128)
    j = UBound(chars)
    ReDim codes(0 To j)
    
    For i = 0 To j
        codes(i) = Chr(((chars(i) - 191) Mod 32) + 192)
    Next
    
    preobr = Join(codes, "")
End Function
[/vba] но она соответственно только для верхнего регистра (точнее нижний в верхний перекидывает) и без Ё. Эти вопросы я ТС и адресовал
 
Ответить
СообщениеAlexM, Алексей, я лишь обратил внимание, что Я должна обратно в А переходить. Сам вот такую конструкцию соорудил: [vba]
Код
Function preobr$(t$)
    Dim i%, j%, chars() As Byte, codes()
    
    chars() = StrConv(t, 128)
    j = UBound(chars)
    ReDim codes(0 To j)
    
    For i = 0 To j
        codes(i) = Chr(((chars(i) - 191) Mod 32) + 192)
    Next
    
    preobr = Join(codes, "")
End Function
[/vba] но она соответственно только для верхнего регистра (точнее нижний в верхний перекидывает) и без Ё. Эти вопросы я ТС и адресовал

Автор - buchlotnik
Дата добавления - 25.04.2017 в 17:23
RAN Дата: Вторник, 25.04.2017, 19:52 | Сообщение № 11
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Вот за что я Select Case люблю.
[vba]
Код
Function q$(s$)
    Dim i&
    For i = 1 To Len(s)
        Select Case Asc(Mid$(s, i, 1))
        Case 192 To 196, 198 To 222: Mid(s, i, 1) = Chr(Asc(Mid$(s, i, 1)) + 1)
        Case 197: Mid(s, i, 1) = Chr(168)
        Case 168: Mid(s, i, 1) = Chr(198)
        Case 223: Mid(s, i, 1) = Chr(192)
        End Select
    Next
    q = s
End Function
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеВот за что я Select Case люблю.
[vba]
Код
Function q$(s$)
    Dim i&
    For i = 1 To Len(s)
        Select Case Asc(Mid$(s, i, 1))
        Case 192 To 196, 198 To 222: Mid(s, i, 1) = Chr(Asc(Mid$(s, i, 1)) + 1)
        Case 197: Mid(s, i, 1) = Chr(168)
        Case 168: Mid(s, i, 1) = Chr(198)
        Case 223: Mid(s, i, 1) = Chr(192)
        End Select
    Next
    q = s
End Function
[/vba]

Автор - RAN
Дата добавления - 25.04.2017 в 19:52
Мир MS Excel » Вопросы и решения » Вопросы по Excel » заменить буквы на следующую по алфавиту (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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