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

Вход

Регистрация

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

 

= Мир MS Excel/VBA макрос внутри функции ЕСЛИ - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
VBA макрос внутри функции ЕСЛИ
murad89280511638 Дата: Воскресенье, 23.01.2022, 12:57 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте.
Скопировал в интернета VBA макрос для регулярных выражений. RegExpExtract



Сам макрос работает хорошо, но почему то не работает внутри функции Если.
К примеру
Код
=ЕСЛИ(RegExpExtract(J10;"\d";1)<4;"true";"false")

Всегда возвращает false,
я так понимаю макрос просто не выполняется внутри функции.
Подскажите, как решить проблему?

Чего я хочу добиться:
в столбцах есть данные вида "3б 10а", мне надо отфильтровать по младшим и старшим классам и далее выполнять вычисления


Сообщение отредактировал Serge_007 - Понедельник, 24.01.2022, 12:07
 
Ответить
СообщениеЗдравствуйте.
Скопировал в интернета VBA макрос для регулярных выражений. RegExpExtract



Сам макрос работает хорошо, но почему то не работает внутри функции Если.
К примеру
Код
=ЕСЛИ(RegExpExtract(J10;"\d";1)<4;"true";"false")

Всегда возвращает false,
я так понимаю макрос просто не выполняется внутри функции.
Подскажите, как решить проблему?

Чего я хочу добиться:
в столбцах есть данные вида "3б 10а", мне надо отфильтровать по младшим и старшим классам и далее выполнять вычисления

Автор - murad89280511638
Дата добавления - 23.01.2022 в 12:57
Gustav Дата: Воскресенье, 23.01.2022, 14:35 | Сообщение № 2
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
У вас тип значения, возвращаемого функцией RegExpExtract - строка, а в формуле сравниваете с числом. А при сравнениях любая строка (даже пустая) всегда больше любого числа (даже самого большого) - поэтому всегда и FALSE. Для преодоления надо строковое значение, возвращаемое вашей функцией, на лету превратить в число. Простейший способ - два минуса перед:
Код
=ЕСЛИ(--RegExpExtract(J10;"\d";1)<4;"true";"false")


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеУ вас тип значения, возвращаемого функцией RegExpExtract - строка, а в формуле сравниваете с числом. А при сравнениях любая строка (даже пустая) всегда больше любого числа (даже самого большого) - поэтому всегда и FALSE. Для преодоления надо строковое значение, возвращаемое вашей функцией, на лету превратить в число. Простейший способ - два минуса перед:
Код
=ЕСЛИ(--RegExpExtract(J10;"\d";1)<4;"true";"false")

Автор - Gustav
Дата добавления - 23.01.2022 в 14:35
murad89280511638 Дата: Воскресенье, 23.01.2022, 16:31 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Gustav, спасибо вам огромное изучаю excel 2ой день. Не думал что в нем сильная типизация.
 
Ответить
СообщениеGustav, спасибо вам огромное изучаю excel 2ой день. Не думал что в нем сильная типизация.

Автор - murad89280511638
Дата добавления - 23.01.2022 в 16:31
  • Страница 1 из 1
  • 1
Поиск:

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