powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Функция ДАТА()
25 сообщений из 31, страница 1 из 2
Функция ДАТА()
    #34366214
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Как в макросе сделать действие аналогичное действию, которое на рабочем листе делает функция ДАТА(год;месяц;число)?

2) Или как то по другом найти дату, отстоящую от текущей на заданное количество месяцев?
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34366478
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Функция DateAdd
DateAdd(Interval, Number, Date)
Функция DateAdd используется для прибавления или вычитания указанного интервала времени. Тип данных Date работает только с датами диапазона от 100 г.н.э. до 9999 г.н.э. Поэтому, если DateAdd выходит за пределы этого диапазона, то генерируется ошибка стадии выполнения Invalid procedure call or argument. Функция DateAdd не возвращает неправильных дат. Следующее выражение добавляет один месяц к 31 января:

DateAdd("m", 1, "31-Jan-95")

В данном случае будет возвращена дата 28-фев-95, а не 31-фев-95. Если в качестве аргумента date указать 31-янв-96, то возвращается дата 29-фев-96, поскольку 1996 год является високосным

Возвращаемое значение
Возвращает значение типа Variant(Date), содержащее дату, к которой добавлен указанный интервал

Параметры
Функция содержит именованные аргументы
Interval
Обязательный аргумент типа String, указывающего тип добавляемого временного интервала: yyyy Год
q Квартал
m Месяц
y День года
d День месяца
w День недели
ww Неделя
h Часы
n Минуты
s Секунды
Interval не чуствителен к регистру букв. Литерал должен быть заключен в кавычки. Для добавления дней можно использовать любое значение интервала дня:"y", "w" или "d"
Number
Обязательный аргумент - числовое выражение, указывающее число добавляемых временных интервалов. Может быть положительным(для получения более поздних дат) и отрицательным(для получения более ранних дат). Если Number дробное число, то дробная часть отбрасывается(не округляется) системой
Date
Обязательный аргумент типа Variant(Date) или литерал даты(буквенное обозначение даты, представляющий дату, к которой прибавляется указанный временной интервал
Пример
' Вычисляем дату на 15 дней более позднюю, чем текущая
Код: plaintext
1.
2.
3.
4.
5.
Dim Today
Dim NewDate As Date   
Today=Date ' узнаем текущую системную дату
NewDate=DateAdd("y", 15 ,Today)
 ' Преобразуем в строку и выводим в заголовке формы
Form1.Caption = CStr(NewDate)
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34366486
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл указать
это из "vbfunction.chm"
© 1999-2001 А.Климов
Русский_Проект
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34366520
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!
А фукция эквивалентная функции рабочего листа ДАТА () оказалась
DateSerial(Year(Date), Month(Date)-3, Day(Date))
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34366535
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkodorзабыл указать
это из "vbfunction.chm"
© 1999-2001 А.Климов
Русский_Проект

это книга?
Если да, то нет ли электронной версии?
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34366614
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkodor уже ответил на вторую часть вопроса

1) Чтобы не оставить первую часть вопроса без ответа...

Код: plaintext
1.
2.
3.
4.
Sub test()
    msg = msg & DateSerial( 2007 ,  3 ,  2 ) & Chr( 13 )
    msg = msg & DateValue("2007-3-2")
    MsgBox msg
End Sub

2) Чисто в информационном плане: теоретически в VBA (Excel) можно использовать функции Пакета Анализа, практически я этого не рекомендую (особенно если есть идентичная функция в VBA как в данном случае) из-за того, что функции Пакета Анализа не переводятся автоматически на язык текущей локали и требуют либо включения надстройки, либо ссылки в проекте VBA.

Опция 1:

- В меню Сервис-Надстройки включить Пакет Анализа...
- В VBA использовать след. синтаксис:

Код: plaintext
1.
2.
3.
'Русск.
MsgBox Application.Run("ATPVBAEN.XLA!ДАТАМЕС", Date,  3 )
'Англ.
MsgBox Application.Run("ATPVBAEN.XLA!EDATE", Date,  3 )


Опция 2:
- в окне Редактора VBA создать ссылку на файл ATPVBAEN.XLA через меню Сервис>Ссылки...
- использовать функции Пакета Анализа как родные функции VBA:

Код: plaintext
1.
2.
3.
'Русск.
MsgBox ДАТАМЕС(Date,  3 )
'Англ.
MsgBox EDATE(Date,  3 )

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34366619
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите пожалуйста разобраться

Не работает следующая штука

Код: plaintext
1.
2.
Dim FirstDate As Date

x = ActiveWorkbook.Sheets("Операц").Range("A10:A280").Find(FirstDate).address

Не работает потому-что Range("A10:A280") - содержит даты в формате "dd.mmm.yy", а не стандартный формат.

Пробовал так

Код: plaintext
1.
2.
Dim FirstDate As Date

x = ActiveWorkbook.Sheets("Операц").Range("A10:A280").Find(format(FirstDate, "dd.mmm.yy")).address

не получается
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34366641
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasad vkodorзабыл указать
это из "vbfunction.chm"
© 1999-2001 А.Климов
Русский_Проект

это книга?
Если да, то нет ли электронной версии?
см. мыло
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34366666
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkodor
см. мыло

File Blocked
на верное у нас просто запрещено скачивать книжки. А она там до завтра пролежит?
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34366670
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadПомогите пожалуйста разобраться

Не работает следующая штука

не получается
Код: plaintext
1.
2.
Dim FirstDate As Date, x
FirstDate = Date
x = ActiveWorkbook.Sheets("Операц").Range("A10:A280").Find(CDbl(FirstDate)).Address
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34366676
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadПомогите пожалуйста разобраться

Не работает следующая штука

Код: plaintext
1.
2.
Dim FirstDate As Date

x = ActiveWorkbook.Sheets("Операц").Range("A10:A280").Find(FirstDate).address

Не работает потому-что Range("A10:A280") - содержит даты в формате "dd.mmm.yy", а не стандартный формат.

Пробовал так

Код: plaintext
1.
2.
Dim FirstDate As Date

x = ActiveWorkbook.Sheets("Операц").Range("A10:A280").Find(format(FirstDate, "dd.mmm.yy")).address

не получается

А что ты присваеваешь переменной FirstDate?
У меня след. работает:

Код: plaintext
1.
2.
3.
4.
Sub test()
    Dim FirstDate As Date
    FirstDate = # 2 / 9 / 2007 #
    MsgBox ActiveWorkbook.Sheets("Операц").Range("A10:A280").Find(FirstDate).Address
End Sub

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34366695
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasad

File Blocked
А она там до завтра пролежит?
тебе видней
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34366738
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkodor Deggasad

File Blocked
А она там до завтра пролежит?
тебе видней


Всмысле видней. Я просто не знаю чё это за ссылка и где эта книжка! Если есть возможность как
по другому её забрать, то подскажите, если нет, то из дома попробую скачать!
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34366766
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу дат макрос выглядит так
Sub sad1()

Dim FirstDate As Date, LastDate As Date, x As Date
Dim WithCell

x = Range("A1").Value

FirstDate = DateAdd("m", -3, x)
LastDate = DateAdd("m", 6, x)

WithCell = ActiveWorkbook.Sheets("Операц").Range("A10:A280").Find(FirstDate).Address

Debug.Print WithCell


End Sub

Если на рабочем листе поменять формат дат на "dd.mm.yyyy", то всё работает. Но изначально на листе формат дат такой "dd.mmm.yy" и из-за этого не работает. Менять формат дат не хочется. А ещё может быть такое что формат может быть разным.
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34366820
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так что, так не работает?
Код: plaintext
1.
       WithCell = ActiveWorkbook.Sheets("Операц").Range("A10:A280").Find(_
                What:=CDbl(FirstDate),LookIn:=xlFormulas).Address
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34366900
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkodorТак что, так не работает?
Код: plaintext
1.
       WithCell = ActiveWorkbook.Sheets("Операц").Range("A10:A280").Find(_
                What:=CDbl(FirstDate),LookIn:=xlFormulas).Address


неа
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34367070
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё забыл сказать что ячейки Range("A10:A280") - не значения, а получены формулами, если сохранить как значения тоже работает нормально
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34367209
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообщем

Код: plaintext
WithCell = ActiveWorkbook.Sheets("операц").Range("A10:A280").Find(FirstDate).Address

не работает потому что Range("A10:A280") - формулы, а не значения
Если значения, то работает.
А с формулами получилось только так

Код: plaintext
1.
2.
  For n =  10  To  280 
    If Range("A" & n).Value = FirstDate Then WithCell = Range("A" & n).Address
   Next
Но интересно всё равно почему не работает с формулами?
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34367299
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasadвообщем

Код: plaintext
WithCell = ActiveWorkbook.Sheets("операц").Range("A10:A280").Find(FirstDate).Address

не работает потому что Range("A10:A280") - формулы, а не значения
Если значения, то работает.
А с формулами получилось только так

Код: plaintext
1.
2.
  For n =  10  To  280 
    If Range("A" & n).Value = FirstDate Then WithCell = Range("A" & n).Address
   Next
Но интересно всё равно почему не работает с формулами?

а так:

Код: plaintext
1.
WithCell = ActiveWorkbook.Sheets("Операц").Range("A10:A280").Find(_
        What:=CDbl(FirstDate),LookIn:=xlValues).Address
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34367306
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или даже так:

Код: plaintext
1.
WithCell = ActiveWorkbook.Sheets("Операц").Range("A10:A280").Find(_
        What:=FirstDate,LookIn:=xlValues).Address


KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34367313
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadНо интересно всё равно почему не работает с формулами?сам же ответил: DeggasadЕщё забыл сказать что ячейки Range("A10:A280") - не значения, а получены формулами, если сохранить как значения тоже работает нормально
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34367380
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)или даже так:

Код: plaintext
1.
WithCell = ActiveWorkbook.Sheets("Операц").Range("A10:A280").Find(_
        What:=FirstDate,LookIn:=xlValues).Address


KL
[MVP - Microsoft Excel]

Ни так, ни так не работает
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34367410
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бред какой-то... может файл подвесишь? Может твои формулы выводят даты в виде текста?

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34367493
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообщем я запутался - теперь опять не работает даже если значения поставить
Прилагаю файл
...
Рейтинг: 0 / 0
Функция ДАТА()
    #34367542
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
     For n =  10  To  280 
      If Range("A" & n).Value2 = CDbl(FirstDate) Then WithCell = Range("A" & n).Address
     Next
вот так точно сработает
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Функция ДАТА()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]