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

Вход

Регистрация

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

 

= Мир MS Excel/Реверс текста в ячейке - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Реверс текста в ячейке
smarty Дата: Четверг, 29.03.2012, 07:05 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте. Есть задача - реверс текста в ячейке. Скажем A1=1234, A2 должно быть 4321. На http://forums.techarena.in/windows-software/1193083.htm нашёл два варианте готовой функции - ни одна не работает. Вернее собственно функция регистрируется- появляется в списке функций, но при вводе в качестве аргумента A1 - ошибка #ЗНАЧ!. Я не великий спец в VBA - проанализируйте пожалуйста. Что не так?
Вариант 1
Code
Function Reverse_Text(Text As String) As String
Dim i As Integer
Dim StrNewNum As String
Dim strOld As String
strOld = Trim(Rcell)
For i = 1 To Len(strOld)
StrNewNum = Mid(strOld, i, 1) & StrNewNum
Next i
If IsText = False Then
ReverseCell = CLng(StrNewNum)
Else
ReverseCell = StrNewNum
End If
End Function

Вариант 2
Code
Function Reverse_Text(Text as String) as String
Dim i As Integer
Dim StrNew As String
Dim strOld As String
strOld = Trim(Text)
For i = 1 To Len(strOld)
StrNew = Mid(strOld, i, 1) & StrNew
Next i
Reverse = StrNew
End Function

TIA
 
Ответить
СообщениеЗдравствуйте. Есть задача - реверс текста в ячейке. Скажем A1=1234, A2 должно быть 4321. На http://forums.techarena.in/windows-software/1193083.htm нашёл два варианте готовой функции - ни одна не работает. Вернее собственно функция регистрируется- появляется в списке функций, но при вводе в качестве аргумента A1 - ошибка #ЗНАЧ!. Я не великий спец в VBA - проанализируйте пожалуйста. Что не так?
Вариант 1
Code
Function Reverse_Text(Text As String) As String
Dim i As Integer
Dim StrNewNum As String
Dim strOld As String
strOld = Trim(Rcell)
For i = 1 To Len(strOld)
StrNewNum = Mid(strOld, i, 1) & StrNewNum
Next i
If IsText = False Then
ReverseCell = CLng(StrNewNum)
Else
ReverseCell = StrNewNum
End If
End Function

Вариант 2
Code
Function Reverse_Text(Text as String) as String
Dim i As Integer
Dim StrNew As String
Dim strOld As String
strOld = Trim(Text)
For i = 1 To Len(strOld)
StrNew = Mid(strOld, i, 1) & StrNew
Next i
Reverse = StrNew
End Function

TIA

Автор - smarty
Дата добавления - 29.03.2012 в 07:05
Serge_007 Дата: Четверг, 29.03.2012, 07:54 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
[vba]
Code
Function Reverse_Word(sWord As String)
     Reverse_Word = StrReverse(sWord)
End Function
[/vba]


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение[vba]
Code
Function Reverse_Word(sWord As String)
     Reverse_Word = StrReverse(sWord)
End Function
[/vba]

Автор - Serge_007
Дата добавления - 29.03.2012 в 07:54
smarty Дата: Четверг, 29.03.2012, 08:03 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Спасибо большое. Всё работает.
 
Ответить
СообщениеСпасибо большое. Всё работает.

Автор - smarty
Дата добавления - 29.03.2012 в 08:03
RAN Дата: Четверг, 29.03.2012, 11:05 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Serge_007, сравни
[vba]
Code
Function Reverse_Word(sWord As String)
On Error Resume Next
     Reverse_Word = StrReverse(sWord)
     Reverse_Word = --Reverse_Word
End Function
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеSerge_007, сравни
[vba]
Code
Function Reverse_Word(sWord As String)
On Error Resume Next
     Reverse_Word = StrReverse(sWord)
     Reverse_Word = --Reverse_Word
End Function
[/vba]

Автор - RAN
Дата добавления - 29.03.2012 в 11:05
Саня Дата: Четверг, 29.03.2012, 13:13 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
для любителей непростых, но быстрых подходов
[vba]
Code
Function dhReverse(ByVal strIn As String) As String
     Dim abytIn() As Byte
     Dim strTemp As String
     Dim i As Integer
     Dim bytTemp As Byte
     Dim intNew As Integer

     If Len(strIn) = 0 Then dhReverse = strIn: Exit Function

     abytIn = strIn   'байтовый массив
     For i = LBound(abytIn) To UBound(abytIn) \ 2 Step 2
        intNew = UBound(abytIn) - i
        'обмен первыми байтами
        bytTemp = abytIn(i)
        abytIn(i) = abytIn(intNew - 1)   '  i <--> (intNew - 1)
        abytIn(intNew - 1) = bytTemp

        'обмен вторыми байтами
        bytTemp = abytIn(i + 1)
        abytIn(i + 1) = abytIn(intNew)   '  (i + 1) <--> intNew
        abytIn(intNew) = bytTemp
     Next i
     dhReverse = abytIn
End Function
Function SlowReverse(strIn As String) As String
     Dim i As Integer

     For i = Len(strIn) To 1 Step -1
        SlowReverse = SlowReverse & Mid(strIn, i, 1)
     Next i
End Function
[/vba]

взято из книги "Гетц, Джилберт - Программирование в MS Office. Руководство по VBA"
достаточно фундаментальная книжица, предлагаю ее в библиотеку...
 
Ответить
Сообщениедля любителей непростых, но быстрых подходов
[vba]
Code
Function dhReverse(ByVal strIn As String) As String
     Dim abytIn() As Byte
     Dim strTemp As String
     Dim i As Integer
     Dim bytTemp As Byte
     Dim intNew As Integer

     If Len(strIn) = 0 Then dhReverse = strIn: Exit Function

     abytIn = strIn   'байтовый массив
     For i = LBound(abytIn) To UBound(abytIn) \ 2 Step 2
        intNew = UBound(abytIn) - i
        'обмен первыми байтами
        bytTemp = abytIn(i)
        abytIn(i) = abytIn(intNew - 1)   '  i <--> (intNew - 1)
        abytIn(intNew - 1) = bytTemp

        'обмен вторыми байтами
        bytTemp = abytIn(i + 1)
        abytIn(i + 1) = abytIn(intNew)   '  (i + 1) <--> intNew
        abytIn(intNew) = bytTemp
     Next i
     dhReverse = abytIn
End Function
Function SlowReverse(strIn As String) As String
     Dim i As Integer

     For i = Len(strIn) To 1 Step -1
        SlowReverse = SlowReverse & Mid(strIn, i, 1)
     Next i
End Function
[/vba]

взято из книги "Гетц, Джилберт - Программирование в MS Office. Руководство по VBA"
достаточно фундаментальная книжица, предлагаю ее в библиотеку...

Автор - Саня
Дата добавления - 29.03.2012 в 13:13
RAN Дата: Четверг, 29.03.2012, 14:59 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Quote (Саня)
для любителей непростых, но быстрых подходов

Потестил из любопытства
Самая тормозная - dhReverse
Самая шустрая - Reverse_Word
Разница на полном столбце из 3 цифр ~ 3 сек


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Quote (Саня)
для любителей непростых, но быстрых подходов

Потестил из любопытства
Самая тормозная - dhReverse
Самая шустрая - Reverse_Word
Разница на полном столбце из 3 цифр ~ 3 сек

Автор - RAN
Дата добавления - 29.03.2012 в 14:59
smarty Дата: Четверг, 29.03.2012, 19:54 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Люди - помогайте. Первый пост писал с работы - там офис 2007 - проверил всё работает. Дома 2010-ый - ввожу функцию - вместо результата показывает саму формулу. И сохранялся и закрывал и открывал по новой и даже перезагружался - результата ноль. В File-Options-Advanced-Display options for this worksheet - Show formulas in cell instead their calculated results чекбокс снят. В Trust center - Macro Settings выбрано Enable all macros. Владелец файла я сам с максимальными правами.



Причём в диалоговом окне ввода параметров результат отображается правильно



Чё ему надо?


Сообщение отредактировал smarty - Четверг, 29.03.2012, 22:23
 
Ответить
СообщениеЛюди - помогайте. Первый пост писал с работы - там офис 2007 - проверил всё работает. Дома 2010-ый - ввожу функцию - вместо результата показывает саму формулу. И сохранялся и закрывал и открывал по новой и даже перезагружался - результата ноль. В File-Options-Advanced-Display options for this worksheet - Show formulas in cell instead their calculated results чекбокс снят. В Trust center - Macro Settings выбрано Enable all macros. Владелец файла я сам с максимальными правами.



Причём в диалоговом окне ввода параметров результат отображается правильно



Чё ему надо?

Автор - smarty
Дата добавления - 29.03.2012 в 19:54
Jhonson Дата: Четверг, 29.03.2012, 20:08 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 514
Репутация: 169 ±
Замечаний: 0% ±

Смените формат ячейки на общий


"Ничто не приносит людям столько неприятностей, как разум."
 
Ответить
СообщениеСмените формат ячейки на общий

Автор - Jhonson
Дата добавления - 29.03.2012 в 20:08
smarty Дата: Четверг, 29.03.2012, 22:22 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Quote (Jhonson)
Смените формат ячейки на общий

Помогло. Спасибо. А почему с "Text" проблеммы? Косяк или особенность такая. Я специально форматировал в "Text " так как ячеки планируются именно под текст. И ещё заметил что смена формата не происходит пока не закроешь и по новой откроешь документ. У всех так?
 
Ответить
Сообщение
Quote (Jhonson)
Смените формат ячейки на общий

Помогло. Спасибо. А почему с "Text" проблеммы? Косяк или особенность такая. Я специально форматировал в "Text " так как ячеки планируются именно под текст. И ещё заметил что смена формата не происходит пока не закроешь и по новой откроешь документ. У всех так?

Автор - smarty
Дата добавления - 29.03.2012 в 22:22
Serge_007 Дата: Четверг, 29.03.2012, 22:31 | Сообщение № 10
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (smarty)
У всех так?

Нет, формат ячеек сменяется мгновенно. У всех. И у Вас тоже. Достаточно после смены формата на Общий зайти в режим редактирования ячейки (F2) и нажать Enter и Вы в этом убедитесь.

Quote (smarty)
А почему с "Text" проблеммы? Косяк или особенность такая. Я специально форматировал в "Text " так как ячеки планируются именно под текст.
Какие проблемы? Название функции является текстом, вот Excel Вам его и показывает. При общем формате в приоритете значение ячейки и если оно текстовое, то Вы его и видите.

Quote (RAN)
Serge_007, сравни

Сравнил. Твоя функция преобразует числа в числа, поэтому, из 10, например, получается не 01, как должно быть, а 1. В моей функции всё работает правильно.


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (smarty)
У всех так?

Нет, формат ячеек сменяется мгновенно. У всех. И у Вас тоже. Достаточно после смены формата на Общий зайти в режим редактирования ячейки (F2) и нажать Enter и Вы в этом убедитесь.

Quote (smarty)
А почему с "Text" проблеммы? Косяк или особенность такая. Я специально форматировал в "Text " так как ячеки планируются именно под текст.
Какие проблемы? Название функции является текстом, вот Excel Вам его и показывает. При общем формате в приоритете значение ячейки и если оно текстовое, то Вы его и видите.

Quote (RAN)
Serge_007, сравни

Сравнил. Твоя функция преобразует числа в числа, поэтому, из 10, например, получается не 01, как должно быть, а 1. В моей функции всё работает правильно.

Автор - Serge_007
Дата добавления - 29.03.2012 в 22:31
smarty Дата: Четверг, 29.03.2012, 22:58 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Спасибо за разъяснения. Век живи - век учись.... sad
 
Ответить
СообщениеСпасибо за разъяснения. Век живи - век учись.... sad

Автор - smarty
Дата добавления - 29.03.2012 в 22:58
Serge_007 Дата: Пятница, 30.03.2012, 21:35 | Сообщение № 12
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (Саня)
достаточно фундаментальная книжица, предлагаю ее в библиотеку...

Согласен, шли на почту


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (Саня)
достаточно фундаментальная книжица, предлагаю ее в библиотеку...

Согласен, шли на почту

Автор - Serge_007
Дата добавления - 30.03.2012 в 21:35
Саня Дата: Пятница, 30.03.2012, 21:56 | Сообщение № 13
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
функция-то самая тормозная получилась, можа и книжка барахло?
 
Ответить
Сообщениефункция-то самая тормозная получилась, можа и книжка барахло?

Автор - Саня
Дата добавления - 30.03.2012 в 21:56
Serge_007 Дата: Пятница, 30.03.2012, 21:58 | Сообщение № 14
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (Саня)
можа и книжка барахло?

А мы проверим smile
Ежели барахло - отправим в архив, а если что-то стоящее?
Как понять не видя исходника?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (Саня)
можа и книжка барахло?

А мы проверим smile
Ежели барахло - отправим в архив, а если что-то стоящее?
Как понять не видя исходника?

Автор - Serge_007
Дата добавления - 30.03.2012 в 21:58
  • Страница 1 из 1
  • 1
Поиск:

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