Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2010, 12:33   #1
KOSTIK1
Форумчанин
 
Аватар для KOSTIK1
 
Регистрация: 06.10.2009
Сообщений: 193
Лампочка Пользовательская функция вместо формулы - ДАТАМЕС

Доброго дня Уважаемые форумчане! Сталкнулся с такой проблемой, не всегда можно подключить надстройку "пакет анализа" поэтому функция ДАТАМЕС не работает (в 2003 exel).
Помогите пожалуйста состряпать пользовательскую функцию заменяющую формулу ДАТАМЕС.
А также может кто знает как заменить её другими формулами.
Спасибо заранее!
С Уважением, Костик
KOSTIK1 вне форума Ответить с цитированием
Старый 09.01.2010, 13:16   #2
Александр Д
Пользователь
 
Регистрация: 07.01.2010
Сообщений: 13
По умолчанию

Честно говоря, не уверен будет ли работать в 2003 при отключенном пакете анализа и не могу проверить.
Попробуйте:
Function vasya(a, b)
vasya = WorksheetFunction.EDate(a, b)
End Function
Александр Д вне форума Ответить с цитированием
Старый 09.01.2010, 13:34   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

=ДАТА(ГОД(нач.дата);МЕСЯЦ(нач.дата) +месяцев;ДЕНЬ(нач.дата)), где нач.дата и месяцев - это те же данные, что и для ДАТАМЕС
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 09.01.2010, 14:17   #4
KOSTIK1
Форумчанин
 
Аватар для KOSTIK1
 
Регистрация: 06.10.2009
Сообщений: 193
По умолчанию

Спасибо вам за варианты! Формула от Игоря работает, но вот с функцией от Александра нет, что очень жалко!
Если есть какие другие варианты с функцией - Спасибо заранее!

Костик
С Уважением, Костик
KOSTIK1 вне форума Ответить с цитированием
Старый 11.01.2010, 05:43   #5
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно так:
Код:
Function DataMes(cell As Range, Nmes As Integer) As Date
    DataMes = DateSerial(Year(cell), Month(cell) + Nmes, Day(cell))
End Function
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 11.01.2010, 15:51   #6
KOSTIK1
Форумчанин
 
Аватар для KOSTIK1
 
Регистрация: 06.10.2009
Сообщений: 193
По умолчанию

Спасибо SAS888 за ваш вариант! Работает!

А также СПАСИБО ВСЕМ на этом форуме, кто не "проходит" мимо!

Костик.
С Уважением, Костик
KOSTIK1 вне форума Ответить с цитированием
Старый 12.05.2010, 09:57   #7
Mint86
Пользователь
 
Аватар для Mint86
 
Регистрация: 17.07.2008
Сообщений: 81
По умолчанию

Поднимаю данную тему обратно...
Подскажите формулу замены функции ДАТАМЕС.
Все вышеприведенные работают но не так как данная функция. Например формула =ДАТАМЕС(ДАТА(2010;1;31);1) даст 28.02.2010 года. Вышеперечисленные формулы дадут 03.03.2010 что несовсем то что нужно.

Цитата:
а вообще, в практической жизни вопрос далеко не так прост, как казалось бы...Ж-(
например, для даты 31.03.2008 =ДАТАМЕС(A1;-1) вернёт 29.02.2008,
для даты 29.02.2008 =ДАТАМЕС(B1;-1) вернёт 29.01.2008,
хотя для 31.03.2008 =ДАТАМЕС(A1;-2) возращает 31.01.2008
таким образом отнять два раза ровно по одному месяцу не тоже самое, что отнять ровно два месяца... :-(
(с) ru-board

Последний раз редактировалось Mint86; 12.05.2010 в 10:04.
Mint86 вне форума Ответить с цитированием
Старый 12.05.2010, 10:21   #8
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

попробуй функцию:
Код:
Function DM(d As Date, N As Integer) As Date
DM = DateAdd("m", N, d)
End Function
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 12.05.2010, 10:47   #9
Mint86
Пользователь
 
Аватар для Mint86
 
Регистрация: 17.07.2008
Сообщений: 81
По умолчанию

alex77755
Отлично! Если, кто знает "короткую" формулу для замены функции ДАТАМЕС используя стандартные функции листа, буду благодарен. Это на случай если макросы отключены..
Mint86 вне форума Ответить с цитированием
Старый 12.05.2010, 13:38   #10
DV68
Форумчанин
 
Регистрация: 05.08.2009
Сообщений: 465
По умолчанию

На самый крайний случай:-)
Формула массива:
Код:
=ДАТА(ГОД(A1);МЕСЯЦ(A1)+1;
ЕСЛИ(ДЕНЬ(A1)>=МАКС(ДЕНЬ(ДАТА(ГОД(A1);МЕСЯЦ(A1)+1;0)+СТРОКА($1:$31)));
МАКС(ДЕНЬ(ДАТА(ГОД(A1);МЕСЯЦ(A1)+1;0)+СТРОКА($1:$31)));ДЕНЬ(A1)))
"Все следует делать настолько простым, насколько это возможно, но не проще." Альберт Эйнштейн
DV68 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пользовательская панель инструментов в excell2007 sapr317 Microsoft Office Excel 6 12.11.2009 16:36
Пользовательская функция с диапазоном в качестве параметра SanSanblch Microsoft Office Excel 2 29.05.2009 17:37
Нужна программа-пользовательская для ПК желательно на С, простая,но работающая с сом-портом Alexa Фриланс 2 30.04.2009 16:50
Паскаль. Dec2polar - пользовательская процедура. Нужна консультативная помощь!!! Поволжский Помощь студентам 1 04.12.2008 18:58
Пользовательская форма к макросу Flangini Microsoft Office Excel 6 23.04.2008 13:39