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

Вход

Регистрация

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

 

= Мир MS Excel/Прошу помочь в создании функции в vba из функции Excel - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Прошу помочь в создании функции в vba из функции Excel
bystrovzorov Дата: Понедельник, 21.11.2022, 20:53 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Функция Excel:
Код
=ЕСЛИ(И(ОСТАТ(A1;100)>=11;ОСТАТ(A1;100)<=14);"лет";ВПР(ОСТАТ(A1;10);{0;"лет":1;"год":2;"года":5;"лет"};2))
 
Ответить
СообщениеФункция Excel:
Код
=ЕСЛИ(И(ОСТАТ(A1;100)>=11;ОСТАТ(A1;100)<=14);"лет";ВПР(ОСТАТ(A1;10);{0;"лет":1;"год":2;"года":5;"лет"};2))

Автор - bystrovzorov
Дата добавления - 21.11.2022 в 20:53
bystrovzorov Дата: Вторник, 22.11.2022, 04:37 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Получилось так:
[vba]
Код

Function goda(g As Integer) As String
    Dim ost As Integer
    ost = g Mod 100
    If ost >= 11 And ost <= 14 Then
        s = "лет"
    Else
        ost = g Mod 10
        Select Case ost
            Case 0, 5, 6, 7, 8, 9
                s = "лет"
            Case 1
                s = "год"
            Case 2, 3, 4
                s = "года"
        End Select
    End If
End Function
[/vba]
 
Ответить
СообщениеПолучилось так:
[vba]
Код

Function goda(g As Integer) As String
    Dim ost As Integer
    ost = g Mod 100
    If ost >= 11 And ost <= 14 Then
        s = "лет"
    Else
        ost = g Mod 10
        Select Case ost
            Case 0, 5, 6, 7, 8, 9
                s = "лет"
            Case 1
                s = "год"
            Case 2, 3, 4
                s = "года"
        End Select
    End If
End Function
[/vba]

Автор - bystrovzorov
Дата добавления - 22.11.2022 в 04:37
_Boroda_ Дата: Вторник, 22.11.2022, 09:56 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 16714
Репутация: 6503 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Получилось так:

Почти. goda - чему равно?
Внизу добавьте
[vba]
Код
goda = s
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Получилось так:

Почти. goda - чему равно?
Внизу добавьте
[vba]
Код
goda = s
[/vba]

Автор - _Boroda_
Дата добавления - 22.11.2022 в 09:56
Gustav Дата: Вторник, 22.11.2022, 11:18 | Сообщение № 4
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Еще можно, без больших раздумий, текст формулы на английском (получив английский вариант здесь в первом сообщении через кнопку слева от формулы или в Excel через макрорекордер):
[vba]
Код
=IF(AND(MOD(A1,100)>=11,MOD(A1,100)<=14),"лет",VLOOKUP(MOD(A1,10),{0,"лет":1,"год":2,"года":5,"лет"},2))
[/vba]
поместить сразу в код VBA, с небольшой "подгонкой по месту":
[vba]
Код
Function goda(g As Integer) As String
    goda = Evaluate("=IF(AND(MOD(" & g & ",100)>=11,MOD(" & g & ",100)<=14),""лет"",VLOOKUP(MOD(" & g & ",10),{0,""лет"";1,""год"";2,""года"";5,""лет""},2))")
End Function
[/vba]
Как видно, "подгонка" заключается во вставке в текстовую строку переменной g вместо ячейки A1 (" & g & ") и в удвоении исходных двойных кавычек.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеЕще можно, без больших раздумий, текст формулы на английском (получив английский вариант здесь в первом сообщении через кнопку слева от формулы или в Excel через макрорекордер):
[vba]
Код
=IF(AND(MOD(A1,100)>=11,MOD(A1,100)<=14),"лет",VLOOKUP(MOD(A1,10),{0,"лет":1,"год":2,"года":5,"лет"},2))
[/vba]
поместить сразу в код VBA, с небольшой "подгонкой по месту":
[vba]
Код
Function goda(g As Integer) As String
    goda = Evaluate("=IF(AND(MOD(" & g & ",100)>=11,MOD(" & g & ",100)<=14),""лет"",VLOOKUP(MOD(" & g & ",10),{0,""лет"";1,""год"";2,""года"";5,""лет""},2))")
End Function
[/vba]
Как видно, "подгонка" заключается во вставке в текстовую строку переменной g вместо ячейки A1 (" & g & ") и в удвоении исходных двойных кавычек.

Автор - Gustav
Дата добавления - 22.11.2022 в 11:18
bystrovzorov Дата: Вторник, 22.11.2022, 13:48 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

goda = s
Спасибо, забыл :)

Еще можно, без больших раздумий
Спасибо! Мне в функции Excel не понятно, как обрабатываются остатки 3, 4, 6, 7, 8, 9 :(
 
Ответить
Сообщение
goda = s
Спасибо, забыл :)

Еще можно, без больших раздумий
Спасибо! Мне в функции Excel не понятно, как обрабатываются остатки 3, 4, 6, 7, 8, 9 :(

Автор - bystrovzorov
Дата добавления - 22.11.2022 в 13:48
Serge_007 Дата: Вторник, 22.11.2022, 15:04 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
в Excel
http://www.excelworld.ru/forum/5-13208-112233-16-1411897186

Автор - Serge_007
Дата добавления - 22.11.2022 в 15:04
Gustav Дата: Вторник, 22.11.2022, 17:22 | Сообщение № 7
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
не понятно, как обрабатываются остатки 3, 4, 6, 7, 8, 9

ПРАВИЛО. В русском языке существуют три формы считаемого существительного, определяемые по одной цифре в самом младшем (правом) разряде числа:
* для 1-й единицы - цифра 1
* для 2-х единиц - цифры 2, 3, 4
* для 5-и единиц - цифры 5, 6, 7, 8, 9 + исключения (см. ниже)
В вашей формуле это хорошо просматривается в мини-таблице для функции ВПР(VLOOKUP)

ИСКЛЮЧЕНИЯ. Кроме того, форма для 5-и единиц применяется:
* для любого числа, оканчивающегося на цифру 0
* для любого числа, оканчивающегося на пару цифр от 11 до 19 (или, что то же самое - при наличии цифры 1 в предпоследнем разряде)


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
не понятно, как обрабатываются остатки 3, 4, 6, 7, 8, 9

ПРАВИЛО. В русском языке существуют три формы считаемого существительного, определяемые по одной цифре в самом младшем (правом) разряде числа:
* для 1-й единицы - цифра 1
* для 2-х единиц - цифры 2, 3, 4
* для 5-и единиц - цифры 5, 6, 7, 8, 9 + исключения (см. ниже)
В вашей формуле это хорошо просматривается в мини-таблице для функции ВПР(VLOOKUP)

ИСКЛЮЧЕНИЯ. Кроме того, форма для 5-и единиц применяется:
* для любого числа, оканчивающегося на цифру 0
* для любого числа, оканчивающегося на пару цифр от 11 до 19 (или, что то же самое - при наличии цифры 1 в предпоследнем разряде)

Автор - Gustav
Дата добавления - 22.11.2022 в 17:22
  • Страница 1 из 1
  • 1
Поиск:

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