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

Вход

Регистрация

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

 

= Мир MS Excel/Сложность с instrRev - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сложность с instrRev (Макросы/Sub)
Сложность с instrRev
emkub Дата: Четверг, 08.03.2018, 14:12 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте!

Честно говоря, бьюсь головой, но не понимаю, как такое возможно.
В прикреплённом файле есть переменные ty и td, которые я поставил просто для проверки результата функций Instr и InstrRev
В ячейке М4 эти функции дают один результат, хотя он не может быть одинаковым!
Покажите пожалуйста, где я накосячил.
К сообщению приложен файл: 0191502.xlsm(28.8 Kb)
 
Ответить
СообщениеЗдравствуйте!

Честно говоря, бьюсь головой, но не понимаю, как такое возможно.
В прикреплённом файле есть переменные ty и td, которые я поставил просто для проверки результата функций Instr и InstrRev
В ячейке М4 эти функции дают один результат, хотя он не может быть одинаковым!
Покажите пожалуйста, где я накосячил.

Автор - emkub
Дата добавления - 08.03.2018 в 14:12
Karataev Дата: Четверг, 08.03.2018, 15:42 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1236
Репутация: 470 ±
Замечаний: 0% ±

Excel
Для "M4" функции InStr и InStrRev дадут одинаковый результат. InStrRev ищет с конца, но возвращает порядковый номер найденного символа, не с конца, а с начала строки.


Киви-кошелек: 9166309108
Яндекс-деньги: 410014131888288
 
Ответить
СообщениеДля "M4" функции InStr и InStrRev дадут одинаковый результат. InStrRev ищет с конца, но возвращает порядковый номер найденного символа, не с конца, а с начала строки.

Автор - Karataev
Дата добавления - 08.03.2018 в 15:42
emkub Дата: Четверг, 08.03.2018, 15:46 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Однако...
Благодарю за помощь!
 
Ответить
СообщениеОднако...
Благодарю за помощь!

Автор - emkub
Дата добавления - 08.03.2018 в 15:46
KuklP Дата: Четверг, 08.03.2018, 15:50 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 2347
Репутация: 481 ±
Замечаний: 0% ±

2003-2010
Надо:
[vba]
Код
            Cells(i + 1, "m") = Right(Cells(i, "m"), InStrRev(Cells(i, "m"), ";") + 1)
            Cells(i, "m") = Left(Cells(i, "m"), InStr(Cells(i, "m"), ";") - 1)
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеНадо:
[vba]
Код
            Cells(i + 1, "m") = Right(Cells(i, "m"), InStrRev(Cells(i, "m"), ";") + 1)
            Cells(i, "m") = Left(Cells(i, "m"), InStr(Cells(i, "m"), ";") - 1)
[/vba]

Автор - KuklP
Дата добавления - 08.03.2018 в 15:50
Gustav Дата: Четверг, 08.03.2018, 16:20 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1587
Репутация: 634 ±
Замечаний: 0% ±

начинал с Excel 4.0...
Надо:

Или вообще кардинально по-другому:
[vba]
Код
    a = Split(Cells(i, "m"), ";")
    Cells(i + 1, "m") = a(UBound(a))
    Cells(i, "m") = a(0)
[/vba]

P.S. Даже вот так, наверное, если на первом шаге из строки высекается только первый элемент (слева), а остальные (все справа) скопом переезжают в ячейку ниже, чтобы разбиваться далее на следующей итерации:
[vba]
Код
    a = Split(Cells(i, "m"), ";", 2)
    Cells(i + 1, "m") = a(1)
    Cells(i, "m") = a(0)
[/vba]


Мой tip box - яд 41001663842605

Сообщение отредактировал Gustav - Четверг, 08.03.2018, 16:33
 
Ответить
Сообщение
Надо:

Или вообще кардинально по-другому:
[vba]
Код
    a = Split(Cells(i, "m"), ";")
    Cells(i + 1, "m") = a(UBound(a))
    Cells(i, "m") = a(0)
[/vba]

P.S. Даже вот так, наверное, если на первом шаге из строки высекается только первый элемент (слева), а остальные (все справа) скопом переезжают в ячейку ниже, чтобы разбиваться далее на следующей итерации:
[vba]
Код
    a = Split(Cells(i, "m"), ";", 2)
    Cells(i + 1, "m") = a(1)
    Cells(i, "m") = a(0)
[/vba]

Автор - Gustav
Дата добавления - 08.03.2018 в 16:20
emkub Дата: Четверг, 08.03.2018, 16:53 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо всем откликнувшимся!
Уже реализовал через Mid.
 
Ответить
СообщениеСпасибо всем откликнувшимся!
Уже реализовал через Mid.

Автор - emkub
Дата добавления - 08.03.2018 в 16:53
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сложность с instrRev (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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