Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 16.12.2011
Сообщений: 5

Составить пользовательскую функцию, аналогичную функции МЕСЯЦ в Excel

09.11.2012, 20:46. Показов 2095. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, составить пользовательскую функцию, аналогичную функции МЕСЯЦ в Excel. Возвращает месяц для даты, заданной в числовом формате, т.е. число от 1 до 12.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.11.2012, 20:46
Ответы с готовыми решениями:

Написать функцию, аналогичную функции strcspn
Подскажите, как написать функцию в С++, аналогичную функции strcspn(функцию определения длины той части 1-ой строки , которая не содержит...

Напишите функцию, аналогичную функции SUBST
Напишите функцию: аналогичную функции SUBST , но в которой третий аргумент W обязательно должен быть списком; Спасибо.

Написать функцию, аналогичную библиотечной функции Asort($array)
Нужно написать функцию аналогичную данной библиотечной функции.(Желательно еще и с демонстрацией работы). Использование библиотечных...

8
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,576
09.11.2012, 21:21
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Function Function_1(rRange As Excel.Range)
    
    'Если в ячейке дата, а не другие данные.
    If IsDate(rRange.Value) = True Then
        
        'Month - функция VBA, которая делает то же самое,
        'что и функция МЕСЯЦ программы Excel.
        Function_1 = Month(rRange.Value)
    
    End If
 
End Function
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
09.11.2012, 22:27
Функция МЕСЯЦ, как многие другие функции листа, может принимать в качестве аргумента массив, и возвращает массив в этом случае. Может быть, это нужно?
0
0 / 0 / 0
Регистрация: 16.12.2011
Сообщений: 5
10.11.2012, 20:42  [ТС]
Скрипт, Спасибо большое за ответ. Но мне нельзя использовать функции из библиотеки Excel или VBA. Я могу эту программу написать на Си, но как ее реализовать в VBA не знаю.
Код:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
main()
    {
    char s2[10];
    char s1[]="";
    int val;
    printf("10 simvolov: ");// дата например 20.12.2012
    gets(s2);
    s1[0]=s2[4];
    s1[1]=s2[5];
    sscanf(s1,"%x",&val);
    if (val>12)
    printf("ЗНАЧ!?");
    else
    printf("%d\n",val);
    getch();
    }
0
5472 / 1150 / 50
Регистрация: 15.09.2012
Сообщений: 3,576
10.11.2012, 20:45
Suo, проставьте комментарии к каждой строке в коде на C.
0
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
10.11.2012, 20:55
Цитата Сообщение от Suo Посмотреть сообщение
Но мне нельзя использовать функции из библиотеки Excel или VBA
Если нельзя использовать функции VBA, то вряд-ли что у Вас получиться
Visual Basic
1
msgbox val(mid(cstr(date),4,2))
Val, Mid и Cstr - это тоже функции.
1
0 / 0 / 0
Регистрация: 16.12.2011
Сообщений: 5
10.11.2012, 20:57  [ТС]
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
main()
    {
    char s2[10]; // строка для даты
    char s1[]=""; // строка для месяца
    int val;    // месяц, целого типа
    printf("10 simvolov: ");// дата например 20.12.2012
    gets(s2);     // принимает введенное значение даты, записывается в строку s2
    s1[0]=s2[4]; // 4 символ s2 запишется как 0, в s1
    s1[1]=s2[5]; // 5 символ s2 запишется как 1, в s1
    sscanf(s1,"%x",&val);   // здесь преобразование строки в число, возможно алгоритм не правильный.
    if (val>12)          // проверка что месяцев не больше 12
    printf("ЗНАЧ!?"); // вывод если больше
    else
    printf("%d\n",val); // вывод если меньше или равно 12.
    getch();
    }
Добавлено через 1 минуту
Цитата Сообщение от Апострофф Посмотреть сообщение
Если нельзя использовать функции VBA, то вряд-ли что у Вас получиться
Visual Basic
1
msgbox val(mid(cstr(date)),4,2)
Val, Mid и Cstr - это тоже функции.
Нельзя использовать ту функцию которую нужно реализовать, т.е. функцию МЕСЯЦ.
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
10.11.2012, 20:58
Visual Basic
1
2
3
4
5
Sub bb()
Dim s$
s = Mid$(InputBox("Введите дату в формате ДД.ММ.ГГГГ"), 4, 2)
MsgBox IIf(Val(s) > 12, "ЗНАЧ!?", s)
End Sub
2
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38177 / 21112 / 4307
Регистрация: 12.02.2012
Сообщений: 34,716
Записей в блоге: 14
11.11.2012, 12:39
Цитата Сообщение от Suo Посмотреть сообщение
Но мне нельзя использовать функции из библиотеки Excel или VBA
- и правильно! А иначе изучение программирования сведется к заучиванию функций. И оно бы неплохо, но этот опыт не наследуется в другом языке (среде)... Это так, мысли по поводу. А решение вот:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Function myMonth(m as integer) As String
    Select Case(m)
             case 1
                myMonth="январь"
             case 2
                 myMonth="февраль"
             case 3
                 myMonth="март"
             case 4
                 myMonth="апрель"
             case 5
                 myMonth="май"
             case 6
                 myMonth="июнь"
             case 7
                 myMonth="июль"
             case 8
                 myMonth="август"
             case 9
                 myMonth="cентябрь"
             case 10
                 myMonth="октябрь"
             case 11
                 myMonth="ноябрь"
             case 12
                 myMonth="декабрь"
             case else
                 Error 111  
    End Select
End Function
Или вот:

Visual Basic
1
2
3
4
5
6
7
8
Function myMonth(m as integer) As String
        if (m < 1) Or (m > 12)
          Error 111
        else
          myMonth=Array("","январь","февраль","март","апрель","май","июнь","июль","август","сентябрь", _
                                   "октябрь","ноябрь","декабрь") (m)
        end if
End Function
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.11.2012, 12:39
Помогаю со студенческими работами здесь

Составить пользовательскую процедуру или функцию
16. Составить пользовательскую процедуру или функцию для вычисления произведения: (12/(1+1)2) * ( 22/(2+1)2) * ( 32/(3+1)2) * ... *...

Составить пользовательскую процедуру или функцию
Составить пользовательскую процедуру или функцию для вычисления произведения: (12/(1+1)2) * ( 22/(2+1)2) * ( 32/(3+1)2) * ... *...

Составить пользовательскую процедуру или функцию
Составить пользовательскую процедуру или функцию для вычисления произведения: (1/(1+1)2) * ( 2/(2+1)2) * ( 3/(3+1)2) * ··· * (n/(n+1)2).

Составить пользовательскую процедуру или функцию
Составить пользовательскую процедуру или функцию для вычисления n-ого члена последовательности: z1=5; zn=1+3/ zn-1, где n=2,3,4, ••• k. ...

Составить пользовательскую процедуру или функцию
Составить пользовательскую процедуру или функцию для вычисления n-ого члена последовательности: z1=5; zn=1+3/ zn-1, где n=2,3,4, ... k. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru