Как перевернуть слово?
Что умеет Excel
Возможно кому-то и пригодиться, а может кто-то уже и сталкивался с подобной проблемой. Нужно перевернуть слово. Т.е. расположить буквы слова в обратном порядке. Из «привет» сделать «тевирп». Если честно, то я сам с трудом могу представить себе ситуацию, в которой это реально может пригодиться. Сам использовать лишь в случае, когда надо было перевернуть числовые значения с еще некоторыми манипуляциями. Но что-то я отвлекся. Переворачиваем слово. Сначала я хотел бы описать способы переворачивания слова именно средствами VBA, т.к. именно они кажутся мне наиболее рациональными.
Способ 1: Через встроенную функцию VBA StrReverse(). Быстрый и короткий. Самый удобный. Но работатет только начиная от Excel 2000 и выше.
Sub Reverse_Word() Dim sWord As String, sReverseWord As String sWord = "Пример" sReverseWord = StrReverse(sWord) End Sub
Sub Reverse_Word()
Dim sWord As String, sReverseWord As String
sWord = "Пример"
sReverseWord = StrReverse(sWord)
End SubСпособ 2: Более медленный, содержит больше строк кода, но работает во всех версиях:
Sub Reverse_Word() Dim sWord As String, sReverseWord As String Dim li As Long sWord = "Пример" For li = Len(sWord) To 1 Step -1 sReverseWord = sReverseWord & Mid(sWord, li, 1) Next li End Sub
Sub Reverse_Word()
Dim sWord As String, sReverseWord As String
Dim li As Long
sWord = "Пример"
For li = Len(sWord) To 1 Step -1
sReverseWord = sReverseWord & Mid(sWord, li, 1)
Next li
End SubОба кода можно сделать функциями(читать подробнее про функции пользователя и их создание).
' Функция работает с версиями Excel, начиная с 2000 Function Reverse_Word(sWord As String) Reverse_Word = StrReverse(sWord) End Function ' Функция работает со всеми версиями Excel Function Reverse_Word_All(sWord As String) Dim sReverseWord As String Dim li As Long For li = Len(sWord) To 1 Step -1 sReverseWord = sReverseWord & Mid(sWord, li, 1) Next li Reverse_Word_All = sReverseWord End Function
' Функция работает с версиями Excel, начиная с 2000
Function Reverse_Word(sWord As String)
Reverse_Word = StrReverse(sWord)
End Function
' Функция работает со всеми версиями Excel
Function Reverse_Word_All(sWord As String)
Dim sReverseWord As String
Dim li As Long
For li = Len(sWord) To 1 Step -1
sReverseWord = sReverseWord & Mid(sWord, li, 1)
Next li
Reverse_Word_All = sReverseWord
End FunctionСпособ стандартными функциями:
Но можно такое сделать и стандартными формулами. Сразу оговорюсь — стандартными формулами сделать это можно, но не совсем просто. Но можно. И для этого потребуется гораздо больше манипуляций, чем через VBA. Хотя для кого-то, возможно, способ формулами будет более прост, чем через VBA. Для начала необходимо будет включить интеративные вычисления в функциях:
- Excel 2003: Сервис-Параметры-Вычисления-ставим галочку Интерации
- Excel 2007: Меню-Параметры Excel-Формулы-Включить интеративные вычисления.
Устанавливаем предельное число интераций — 1. Допустим само слово у нас в ячейке А1. Тогда формула будет выглядеть следующим образом:
=ЕСЛИ(ДЛСТР(B1)>=ДЛСТР(A1);B1;ЕСЛИ(ДЛСТР(B1)=1;ПСТР(A1;ДЛСТР(A1);1);B1)&ПСТР(A1;ДЛСТР(A1)-ДЛСТР(B1);1))
Но это не все. При внесении формулы в ячейку она сразу не выдаст необходимый результат. Необходимо пересчитывать формулу до тех пор, пока все слово не перевернется(я просто нажал и удерживал клавишу F9). Лично я сделал формулу, как говорится, «из спортивного интереса». Но кому-то, возможно, будет гораздо проще так, чем через VBA. В приложенном файле помимо рассмотренных примеров есть еще один, котрый лично мне не нравиться тем, что он «растягивается» на несколько ячеек. Это не очень удобно, но избавляет от необходимости включать интерации. Но это, пожалуй, единственный положительный момент в данном способе. Сама формула такова:
=ЕСЛИ(СТОЛБЕЦ(A:A)>ДЛСТР($A1);»";B1&ПСТР($A1;ДЛСТР($A1)+1-СТОЛБЕЦ(A:A);1))
Слово в ячейке A1, B1 должна быть пустой, а уже с B3 начинается формула.
Tips_All_ReverseWord.xls (51,0 KiB, 447 скачиваний)
Так же см.:
→Функция перемещения слова в строке

4641

конечно идея шикарная — лично мне пришлась кстати, хотя вначале посмотрел весьма обычно. Вот только вопросы возникли:
- провозился полдня — так ничего и не понял, мало того, и коды вставлял и формулы, и тянул в разные стороны, и файл качал — и ничего (не помогает).
Вообще ничего. Только есть — нули или по одной букве в ячейке — на том и все.
Вот если не трудно — может все таки поможете страждущим))))
- у меня есть столбец — в котором по возрастанию около 1000 слов увеличиваются по количеству букв, то есть 2-букв., затем 3-х и так далее — последнее 15 буквенное.
Как мне перевернуть весь столбец, причем так, чтобы без лишних действий в 3,4,5 и так далее этапов, чтобы получить из первого столбца — второй и уже готовый и полностью перевернутый????
Вот Вам вопрос — можете поможете?
Чем помочь-то страждущим? Я уже расписал все досконально в статье. Я даже пример со всеми описанными функциями выложил и даже макрос там создал, который перевернет быстро и без лишних движений ВСЕ слова в выделенном диапазоне. Вот Вам вопрос — у Вас макросы включены? У Вас не работает как? Что конкретно не получается?