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
Еще можно, без больших раздумий, текст формулы на английском (получив английский вариант здесь в первом сообщении через кнопку слева от формулы или в Excel через макрорекордер): [vba]
[/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 & ") и в удвоении исходных двойных кавычек.
Еще можно, без больших раздумий, текст формулы на английском (получив английский вариант здесь в первом сообщении через кнопку слева от формулы или в Excel через макрорекордер): [vba]
[/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
не понятно, как обрабатываются остатки 3, 4, 6, 7, 8, 9
ПРАВИЛО. В русском языке существуют три формы считаемого существительного, определяемые по одной цифре в самом младшем (правом) разряде числа: * для 1-й единицы - цифра 1 * для 2-х единиц - цифры 2, 3, 4 * для 5-и единиц - цифры 5, 6, 7, 8, 9 + исключения (см. ниже) В вашей формуле это хорошо просматривается в мини-таблице для функции ВПР(VLOOKUP)
ИСКЛЮЧЕНИЯ. Кроме того, форма для 5-и единиц применяется: * для любого числа, оканчивающегося на цифру 0 * для любого числа, оканчивающегося на пару цифр от 11 до 19 (или, что то же самое - при наличии цифры 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 в предпоследнем разряде)Gustav