Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Добавление формулы в макрос, макрос / формула / текстовые функции
 
Доброго времени суток всем,
Пишу вот с такой необходимостью.
Задача: нужно формулу поставить в макрос и избавиться от синтаксической ошибки.
Формула считает ровно так как нужно, в ней ничего менять не нужно. Я предпологаю что ошибка возникает из-за того что формула очень длинная. Сократить и урезать знаний не хвотает. Не судите строго.
Пример в приложении.
Огромное спасибо кто откликнится
Всем хорошей и солнечной субботы.
 
Лучше расскажите словами, что делает Ваша формула, и тогда (если уж Вы макросы собираетесь использовать) ее можно будет заменить на макрос (или UDF как частный случай)
Тем более, что
Цитата
Alexandr Dumanetskiy написал: формула очень длинная
Согласие есть продукт при полном непротивлении сторон.
 
Формула возвращает колличесво слов в имэйле до "@"
ivan.ivanov@mail.ru = 2 "слова" + 1 итого получает = 3
"+1" должно быть всегда.
Нужен макрос который вернет значение = 3
Как то так.
 

Упрощать не нужно, но придется

=LEN(SUBSTITUTE(SUBSTITUTE(A1;".";" ");"_";" "))-LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1;".";" ");"_";" ");" ";""))-D1+1

Или я не правильно понял что нужно? . Проще и в макрос вставлять.

 
А что может являться разделителем 'слов' ? Точка, нижнее подчеркивание...еще что? Огласите весь список, пожалуйста
Согласие есть продукт при полном непротивлении сторон.
 
Цитата
Alexandr Dumanetskiy написал:
Формула возвращает колличесво слов в имэйле до "@"
тогда формула верна только для доменов второго уровня. Если вдруг будет что-то в форма AAA.BBB.RU , то будет сбой.
 
Коллеги
@БМВ формула покрывает и решает задачу. Спасибо. Формула должна встать в макрос.
@Sanja разделитиель в студию. Может быть "."; "_" только они. Стандартные те что в имэид ставят.
 
Цитата
БМВ написал: то будет сбой
UDF. Без сбоев. +1 учтен
Код
Function WORDCOUNT(iTxt)
Dim arr()
    iStr = Split(iTxt, "@")(0)
    arr = Array(".", "_")   'список разделителей. Можно добавлять свои
    For I = 0 To UBound(arr)
        WORDCOUNT = IIf(WORDCOUNT = Empty, UBound(Split(iStr, arr(I))), WORDCOUNT + UBound(Split(iStr, arr(I))))
    Next
    WORDCOUNT = WORDCOUNT + 2
End Function
Согласие есть продукт при полном непротивлении сторон.
 
Цитата
Alexandr Dumanetskiy написал:
@ БМВ  формула покрывает и решает задачу. Спасибо. Формула должна встать в макрос.
Вы случаем не на ТС из этой темы работаете?  https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=103335&...

ну вдруг одумаетесь
=LEN(TRIM(SUBSTITUTE(SUBSTITUTE(LEFT(A1;FIND("@";A1)-1);".";" ");"_";" ")))-LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LEFT(A1;FIND("@";A1)-1);".";" ");"_";" ");" ";""))-D1+2
Изменено: БМВ - 7 Апр 2018 18:05:45
 
@БМВ
а вот так? По моему задача решается.
Спасибо еще раз.
 
kahl..sdlv@are.ldfm.va.com???? :-) Сколько слов?
 
Увидел ;)
Второая формула (уже протестировал) встает так же хорошо.
Обалденно, спасибо!
 
Цитата
Alexandr Dumanetskiy написал: встает так же хорошо
В макрос?
Согласие есть продукт при полном непротивлении сторон.
 
@Sanja Формула встала.
Ваш макрос тоже взял на заметку, Спасибо большое!
 
Похоже, название темы не о том...
Страницы: 1
Читают тему (гостей: 1)
Наверх