Текст задом наперед excel

Текст в ячейке задом наперёд 

Добрый день, уважаемые читатели блога! Продолжаем серию уроков по Microsoft Excel и сегодня мы отойдём от привычного создания макросов, рассмотрения приёмов, различных тонкостей. 

Поговорим о пользовательских функциях, то есть о функциях, которые может создавать сам пользователь, оперируя переменными Excel.

Перед нами стоит задача — отобразить текст в ячейке (произвольный) в обратном порядке. Пример: «Привет!», — в соседней ячейке появится: «!тевирП». 

В таком случае можно использовать макрос, но количество действий, его (макроса) постоянный вызов не улучшат, а затруднят работу с таблицей. 

Текст в ячейке задом наперёд

Воспользуемся возможностью создания своих функций. Благо для этого нам подойдёт алгоритм создания макроса. 

Добавляем новый модуль в наш документ:

  1. Вкладка «Разработчик», блок кнопок «Код», кнопка «Visual Basic»;
  2. Далее «Insert» — > «Module».

Текст в ячейке задом наперёд

Добавим следующий текст в наш модуль:

Function dhReverseText(strText As String) As String
Dim i As Integer

For i = Len(strText) To 1 Step -1
dhReverseText = dhReverseText & Mid(strText, i, 1)
Next i
End Function

Текст в ячейке задом наперёд

Разберём где у нас что:

  • «Function dhReverseText(strText As String) As String» — название функции и объявление её типом строка;
  • «Dim i As Integer» — объявление переменной i;
  • «For i = Len(strText) To 1 Step -1» — для каждой переменной i типа строка устанавливаем обратный порядок расположения символов (Len — возвращает количество символов в ячейке);
  • «dhReverseText = dhReverseText & Mid(strText, i, 1)» — указываем функции, что двигаться нужно от конца к началу;
  • «Next i» — обработка следующего символа.

Прелестью такого подхода является работа с функцией, мы можем вводить её как простую формулу.

Текст в ячейке задом наперёд

Результат будет такой.

Текст в ячейке задом наперёд

Мы создали первую собственную функцию! 

Вам также может понравиться статья — Вставка гиперссылок на листы таблицы.

Excel for Microsoft 365 Outlook for Microsoft 365 PowerPoint for Microsoft 365 Excel 2021 Outlook 2021 PowerPoint 2021 Excel 2019 Outlook 2019 PowerPoint 2019 Excel 2016 Outlook 2016 PowerPoint 2016 Excel 2013 Outlook 2013 PowerPoint 2013 Excel 2010 Outlook 2010 PowerPoint 2010 More…Less

To reverse (or mirror) text in a document, you must first enter the text in a text box. After reversing the text, you can remove the appearance of using a text box by removing the outline.

  1. Insert a text box in your document by clicking Insert > Text Box, and then type and format your text.

    For more details, see Add, copy, or delete a text box.

  2. Right-click the box and click Format Shape.

  3. In the Format Shape pane, click Effects.

    Effects tab in the Format Shape pane

  4. Under 3-D Rotation, in the X Rotation box, enter 180.

    Notes: 

    • If your text box becomes filled with a color, you can remove the color in the Format Shape pane. Under Shape Options, click the Fill & Line tab Fill & Line tab, expand Fill, and select No fill.

    • If you want to remove the text box outline, right-click the text box, click Outline in the mini toolbar that appears, and choose No Outline.

  1. Insert a text box in your document by clicking Insert > Text Box, and then type and format your text.

  2. Right-click the box and click Format Shape.

  3. In the Format Shape dialog box, click 3-D Rotation on the left.

  4. In the X box, enter 180.

    Notes: 

    • If your text box becomes filled with a color, you can remove the color by right-clicking the text box, clicking the arrow next to Shape Fill in the mini toolbar that appears, and selecting No Fill.

    • If you want to remove the text box outline, right-click the text box, click the arrow next to Shape Outline in the mini toolbar that appears, and choose No Outline.

See also

Rotate a text box, shape, WordArt, or picture

Need more help?

Хитрости »

4 Май 2011              57902 просмотров


Как перевернуть слово?

Не самая распространенная, но тем не менее встречающаяса задача: перевернуть слово. Т.е. расположить буквы слова в обратном порядке. Из «привет» сделать «тевирп». Если честно, то сейчас затрудняюсь озвучить конкретную ситуацию, в которой это может пригодиться. Сам использовал когда-то в случае, когда надо было перевернуть числовые значения с еще некоторыми манипуляциями. Но ситуации бывают разные, как и решения задачи, которых несколько.
Сначала я хотел бы описать способы переворачивания слова средствами VBA, т.к. именно они кажутся мне наиболее рациональными и наиболее удобными для большинства, несмотря на необходимость использовать VBA.

Способ 1:
Через встроенную функцию VBA StrReverse(). Быстрый и короткий. Самый удобный. Но работает только начиная от Excel 2000 и выше.

Sub Reverse_Word()
    On Error Resume Next
    ActiveCell.Value = StrReverse(ActiveCell.Value)
End Sub

Чтобы применить этот код необходимо слегка погрузиться в мир Visual Basic for Applications: переходим в редактор VBA(Alt+F11) —InsertModule. Вставляем туда приведенный выше код. Выделяем ячейку с любым словом -Alt+F8 -Reverse_Word -Выполнить. Слово в активной ячейке будет перевернуто.

Способ 2:
Более медленный, содержит больше строк кода, но работает во всех версиях:

Sub Reverse_Word()
    Dim sWord As String, sReverseWord As String
    Dim li As Long
    sWord = ActiveCell.Value
    For li = Len(sWord) To 1 Step -1
        sReverseWord = sReverseWord & Mid(sWord, li, 1)
    Next li
    ActiveCell.Value = sReverseWord
End Sub

Код применяется точно так же, как и первый.

Оба эти кода можно сделать функциями пользователя, чтобы вызывать их с листа Excel как любую другую функцию:

' Функция работает с версиями 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

Чтобы правильно использовать приведенные выше коды, необходимо сначала ознакомиться со статьей Что такое функция пользователя(UDF)?. Вкратце: необходимо скопировать текст кода выше, перейти в редактор VBA(Alt+F11) -создать стандартный модуль(InsertModule) и в него вставить скопированный текст. После чего функцию можно будет вызвать из Диспетчера функций, отыскав её в категории Определенные пользователем (User Defined Functions).


Способ 3: стандартными функциями в любой версии Excel
Сразу хочу оговориться — стандартными формулами сделать это хоть и можно, но не совсем просто и совершенно неудобно. Для этого потребуется гораздо больше манипуляций, чем через VBA. Хотя для кого-то, возможно, способ формулами будет более прост, чем через VBA. Для начала необходимо будет включить итеративные вычисления в функциях:

  • Excel 2003: Сервис -Параметры -Вычисления -ставим галочку Итерации
  • Excel 2007: Меню -Параметры Excel -Формулы -Включить итеративные вычисления
  • Excel 2010 и выше: Файл -Параметры -Формулы -Включить итеративные вычисления

Устанавливаем предельное число итераций — 1. Если слово, которое необходимо перевернуть записано в ячейке А1, то формула будет выглядеть следующим образом:
=ЕСЛИ(ДЛСТР(B1)>=ДЛСТР(A1);B1;ЕСЛИ(ДЛСТР(B1)=1;ПСТР(A1;ДЛСТР(A1);1);B1)&ПСТР(A1;ДЛСТР(A1)-ДЛСТР(B1);1))
=IF(LEN(B1)>=LEN(A1),B1,IF(LEN(B1)=1,MID(A1,LEN(A1),1),B1)&MID(A1,LEN(A1)-LEN(B1),1))
Но в данном случае мало просто записать формулу. При внесении формулы в ячейку она сразу не выдаст необходимый результат. Необходимо пересчитывать формулу до тех пор, пока все слово не перевернется(я просто нажал и удерживал клавишу F9). Эту формулу я придумал чисто «из спортивного интереса». Но кому-то, возможно, будет гораздо проще так, чем через VBA.
В приложенном к статье файле помимо рассмотренных примеров есть еще один вариант решения формулами, который лично мне не нравится своей очевидностью, а главное — он «растягивается» на несколько ячеек. Это не очень удобно, но избавляет от необходимости включать итерации. Хотя на мой взгляд это единственный положительный момент в данном способе:
=ЕСЛИ(СТОЛБЕЦ(A1)>ДЛСТР($A2);»»;B2&ПСТР($A2;ДЛСТР($A2)+1-СТОЛБЕЦ(A1);1))
=IF(COLUMN(A1)>LEN($A2),»»,B2&MID($A2,LEN($A2)+1-COLUMN(A1),1))
Слово в ячейке $A2, B2 должна быть пустой, а уже с C2 начинается формула.
При желании можно в какой-либо другой ячейке записать формулу сцепления всех полученных ячеек с запасом, чтобы получить единое слово в обратном порядке.


Функция для Excel 2016 и выше
А для счастливых обладателей Excel 2016, 365 и выше можно использовать простую и гибкую формулу массива(вводится в ячейки такая формула сочетанием трех клавиш Ctrl+Shift+Enter):
=ОБЪЕДИНИТЬ(«»;0;ЕСЛИОШИБКА(ПСТР(A1;ДЛСТР(A1)-СТРОКА(A1:A999)+1;1);»»))
=TEXTJOIN(«»,0,IFERROR(MID(A1,LEN(A1)-ROW(A1:A50000)+1,1),»»))
Если текст слишком длинный необходимо лишь расширить диапазон A1:A999 с чуть большим запасом, например: A1:A50000. 50 000 букв точно хватит :)
Никаких макросов и итераций — все же Microsoft думает о нас, о пользователях и внедряет всякие новые плюшки.


Скачать пример

  Tips_All_ReverseWord.xls (74,5 KiB, 3 772 скачиваний)

Так же см.:
Функция перемещения слова в строке
Надстройка для замены и перемещения слов/аббревиатур
Как перевернуть адрес


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

В этой статье объясняется формула, сочетающая функции TEXTJOIN и MID для изменения порядка текстовых строк в ячейке в Excel.


Как перевернуть текстовую строку в ячейке в Excel?

Общая формула

=TEXTJOIN(«»,1,MID(text_string,{10,9,8,7,6,5,4,3,2,1},1)

аргументы

Текстовая_строка: Текстовая строка, порядок которой нужно изменить. Это может быть:

  • 1. Текст, заключенный в кавычки;
  • 2. Или ссылку на ячейку, содержащую текст.

Как пользоваться этой формулой?

1. Выберите пустую ячейку, чтобы вывести обратный результат.

2. Введите в нее приведенную ниже формулу и нажмите Enter и перетащите маркер заполнения, чтобы применить формулу к другим ячейкам.

=TEXTJOIN(«»,1,MID(B5,{10,9,8,7,6,5,4,3,2,1},1))

Советы: Вы можете заменить в формуле число 1 на ИСТИНА. Это означает, что пустые элементы в массиве будут проигнорированы.

Как работает эта формула?

=TEXTJOIN(«»,1,MID(B5,{10,9,8,7,6,5,4,3,2,1},1))

  • 1. MID(B5,{10,9,8,7,6,5,4,3,2,1},1): Функция MID извлекает каждый символ текстовой строки в B5 в обратном порядке. Здесь результат: {«», «», «», «», «», «l», «e», «c», «x», «E»};
  • 2. TEXTJOIN(«»,1,{«»,»»,»»,»»,»»,»l»,»e»,»c»,»x»,»E»}): Функция TEXTJOIN объединяет каждый символ в массиве и игнорирует пустые места. Конечным результатом будет «lecxE».

Примечание: Приведенная выше формула работает правильно, если длина текстовой строки равна или меньше 10 символов. Чтобы перевернуть текстовую строку, длина которой превышает 10 символов, примените следующую формулу массива:
=TEXTJOIN(«»,1,MID(A1,ABS(ROW(INDIRECT(«1:»&LEN(A1)))-(LEN(A1)+1)),1))
Пожалуйста, не забудьте нажать Ctrl + Shift + Enter ключи вместе, чтобы получить правильный результат.


Связанные функции

Функция TEXTJOIN в Excel
Функция Excel TEXTJOIN объединяет несколько значений из строки, столбца или диапазона ячеек с определенным разделителем.

Функция Excel MID
Функция MID используется для поиска и возврата определенного количества символов из середины данной текстовой строки.


Лучшие инструменты для работы в офисе

Kutools for Excel — Помогает вам выделиться из толпы

Хотите быстро и качественно выполнять свою повседневную работу? Kutools for Excel предлагает 300 мощных расширенных функций (объединение книг, суммирование по цвету, разделение содержимого ячеек, преобразование даты и т. д.) и экономит для вас 80 % времени.

  • Разработан для 1500 рабочих сценариев, помогает решить 80% проблем с Excel.
  • Уменьшите количество нажатий на клавиатуру и мышь каждый день, избавьтесь от усталости глаз и рук.
  • Станьте экспертом по Excel за 3 минуты. Больше не нужно запоминать какие-либо болезненные формулы и коды VBA.
  • 30-дневная неограниченная бесплатная пробная версия. 60-дневная гарантия возврата денег. Бесплатное обновление и поддержка 2 года.

Лента Excel (с Kutools for Excel установлены)


Вкладка Office — включение чтения и редактирования с вкладками в Microsoft Office (включая Excel)

  • Одна секунда для переключения между десятками открытых документов!
  • Уменьшите количество щелчков мышью на сотни каждый день, попрощайтесь с рукой мыши.
  • Повышает вашу продуктивность на 50% при просмотре и редактировании нескольких документов.
  • Добавляет эффективные вкладки в Office (включая Excel), точно так же, как Chrome, Firefox и новый Internet Explorer.

Снимок экрана Excel (с установленной вкладкой Office)

Комментарии (3)


Оценок пока нет. Оцените первым!

 

У меня EXCEL 2003  

  есть ли формула которая бы написала слова наоборот?    

  Например:    КЕНГУРУ      —     УРУГНЕК  
            ПРИБАЛТИКА   —     АКИТЛАБИРП  
   и т.д. и т.п.  

  ???

 

Hugo

Пользователь

Сообщений: 23257
Регистрация: 22.12.2012

Нет.  
Но есть функция в VBA, которую можно использовать в UDF.

 

Hugo

Пользователь

Сообщений: 23257
Регистрация: 22.12.2012

Function ReverseString(r As Range)  
ReverseString = StrReverse®  
End Function

 

kim

Пользователь

Сообщений: 3139
Регистрация: 23.12.2012

Игорь

БАХТИ, есть такая формула, но я Вам ее не покажу, так как не отписываетесь в своих темах.

 

просто я тут очень недавно (второй раз)… захожу в другие приложения этого сайта и потом чё-то скорость сёдня совсем мучает.

 

{quote}{login=kim}{date=27.06.2011 06:51}{thema=}{post}БАХТИ, есть такая формула, но я Вам ее не покажу, так как не отписываетесь в своих темах.{/post}{/quote}  

  честно говоря эта формула мне не нужна в практическом смысле просто интересно я как-то пробовал через длстр пстр левсимв правсимв … не получилось тогда

 

kim

Пользователь

Сообщений: 3139
Регистрация: 23.12.2012

Игорь

В этой теме

http://www.planetaexcel.ru/forum.php/plex.php?thread_id=28874

Вам тоже ответы не нужны?  
Для чего тогда вообще создавать темы?

 

{quote}{login=kim}{date=27.06.2011 07:07}{thema=}{post}В этой теме

http://www.planetaexcel.ru/forum.php/plex.php?thread_id=28874

Вам тоже ответы не нужны?  
Для чего тогда вообще создавать темы?{/post}{/quote}  

  на той теме я уже объявил благодарность всем    
Как поставить синий треугольник извещаюший о получении полного ответа на свой вопрос?  

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

 

kim

Пользователь

Сообщений: 3139
Регистрация: 23.12.2012

Игорь

Функциональность данного движка форума ограничена.  
Синие треугольнички расставляют модераторы, увидев полную удовлетворенность топикстартера. Или при закрытии темы в случае каких-либо нарушений.

 

{quote}{login=kim}{date=27.06.2011 07:23}{thema=}{post}Функциональность данного движка форума ограничена.  
Синие треугольнички расставляют модераторы, увидев полную удовлетворенность топикстартера. Или при закрытии темы в случае каких-либо нарушений.{/post}{/quote}    
ясно

 

Kuzmich

Пользователь

Сообщений: 7998
Регистрация: 21.12.2012

Билл Джелен «Применение VBA и макросов в  Microsoft Excel»  
Запись содержимого ячейки в обратном порядке, пользовательская функция  

  Function ReverseContents(myCell As Range, Optional IsText As Boolean = True)  

         Dim i As Integer  
   Dim OrigString As String, NewString As String  
   OrigString = Trim(myCell) ‘Удалить символы пробела в начале и конце строки.  
   For i = 1 To Len(OrigString)  
       ‘Запись исходной строки в обратном порядке путем добавления  
       ‘строки NewString после символа исходной строки.  
       NewString = Mid(OrigString, i, 1) & NewString  
   Next i  
   If IsText = False Then  
       ReverseContents = CLng(NewString)  
   Else  
       ReverseContents = NewString  
   End If  
End Function

 

Здравствуйте!  
А что за аргумент UDF ReverseContents «IsText»?  
Каким он может быть?

 

Hugo

Пользователь

Сообщений: 23257
Регистрация: 22.12.2012

True/False  
Т.е. если переворачиваем числа, то ставим False и получаем на выходе число.

 
 

kim

Пользователь

Сообщений: 3139
Регистрация: 23.12.2012

Игорь

К формульному варианту Димы добавил небольшую хитрость, теперь F9 жать не нужно :)  
В желтой ячейке вводим слово, в синей получаем результат.

 

Serge

Пользователь

Сообщений: 11308
Регистрация: 01.01.1970

Но надо включить итерации…

 

kim

Пользователь

Сообщений: 3139
Регистрация: 23.12.2012

Игорь

Серега, Дима уже это говорил на своем сайте, посчитал лишним повторять :)

 

Hugo

Пользователь

Сообщений: 23257
Регистрация: 22.12.2012

Не работает. Ругается на циклическую ссылку и результата нет.

 

Hugo

Пользователь

Сообщений: 23257
Регистрация: 22.12.2012

Итерации не включал и не буду :)

 

kim

Пользователь

Сообщений: 3139
Регистрация: 23.12.2012

Игорь

Единственное что хочется добавить, количество итераций должно быть гарантированно большим длины строки вводимого значения, я установил 10000.

 

kim

Пользователь

Сообщений: 3139
Регистрация: 23.12.2012

Игорь

{quote}{login=Hugo}{date=27.06.2011 11:28}{thema=}{post}Итерации не включал и не буду :){/post}{/quote}  
Это дело личное. Только не понятно, чем обоснован страх перед итерациями? :)

 

Юрий М

Модератор

Сообщений: 60588
Регистрация: 14.09.2012

Контакты см. в профиле

{quote}{login=kim}{date=27.06.2011 11:30}{thema=Re: }{post}{quote}{login=Hugo}{date=27.06.2011 11:28}{thema=}{post}{/post}{/quote} чем обоснован страх перед итерациями? :){/post}{/quote}  
Виктор обидится.

 

kim

Пользователь

Сообщений: 3139
Регистрация: 23.12.2012

Игорь

Мда, чего-то давненько Повелитель итераций не появлялся ;) Может он не знает, что сайт отремонтировали?

 

Юрий М

Модератор

Сообщений: 60588
Регистрация: 14.09.2012

Контакты см. в профиле

Нет — просто в лесу Wi-Fi отрубили.

 

Hugo

Пользователь

Сообщений: 23257
Регистрация: 22.12.2012

У меня в лесу Wi-FI как видите работает:)  
Про итерации пошутил — включил, попробовал, заработало, выключил.  
А если серьёзно — я их не знаю, поэтому опасаюсь. Ничего не поломается, если включенными оставить?

 

Юрий М

Модератор

Сообщений: 60588
Регистрация: 14.09.2012

Контакты см. в профиле

 

Hugo

Пользователь

Сообщений: 23257
Регистрация: 22.12.2012

Ну вот…  
Лучше уж UDF :)

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#28

02.07.2011 01:46:00

{quote}{login=kim}{date=27.06.2011 11:44}{thema=}{post}Мда, чего-то давненько Повелитель итераций не появлялся{/post}{/quote}  
Сам такой (как показать язык?) :)

Понравилась статья? Поделить с друзьями:
  • Текст заданий по excel
  • Текст дублируется в ячейках excel
  • Текст другого цвета word
  • Текст для форматирования в word пример
  • Текст вверху ячейки word