Форум программистов Контакты:
О проблемах с регистрацией, почтой и по другим вопросам пишите сюда - post@programmersforum.ru
По необходимости будем регистрировать вручную. И проверяйте папку спам!
Главная  |  Правила форума  |  Исходники Delphi  |  Основы Delphi  |  Блог программистов  |  Рассылка  |  Повторная активизация e-mail  | 

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

Ответ
 
Опции темы
Старый 21.11.2009, 10:34   #1
Talisman
Пользователь
 
Регистрация: 29.12.2007
Сообщений: 31
Репутация: 7
По умолчанию Как прибавить 20 дней к дате

В новой ячейке должно прибавляться 20 дней к той дате которая находится в другой ячейки, подскажите формулу
Talisman вне форума   Ответить с цитированием
Старый 21.11.2009, 10:40   #2
VictorM
Профессионал
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Адрес: Луганск
Сообщений: 2,008
Репутация: 251

icq: 1-702-732
skype: victor11129
По умолчанию

Дата находится в ячейке А1, тогда
=ДАТА(ГОД(A1);МЕСЯЦ(A1);ДЕНЬ(A1)+20 )
__________________
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума   Ответить с цитированием
Старый 21.11.2009, 11:11   #3
IgorGO
Модератор
Заслуженный модератор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Адрес: Украина, Киев
Сообщений: 6,400
Репутация: 1018

icq: 7934250
skype: i2x0,5
По умолчанию

VictorM, прикалываемся?
На исходных, которые описал VictorM, в любую ячейку пишем =A1+20. Если в итоге увидели число, задайте новой ячейке формат дата и будет вам...
Вообще, даты ексель хранит, как рациональное или действительное число. Число Пи, например, - это действительное число.
Целая часть - это количество дней от 31.12.1899, напишите в ячейку 1, поставьте формат дата "ДД.ММ.ГГГГ" увидите 01.01.1900.
Дробная часть числа овечает за часы, минуты, секунды.
поставьте в ячеку =ПИ(), задайте формат "ДД.ММ.ГГГГ чч:мм:сс", увидите: 03.01.1900 3:23:54. Колонка только должна быть достаточной ширины, чтобы все это увидеть.
Поставьте в третью ячейку =121+15/24+ 3/1440. ПоставЬте формат время "ДД.ММ.ГГГГ чч:мм", увидите 30.04.1900 15:03.
если в соседней написать =предыдущая + 4/24 + 2/1440 (где предыдущая - это адрес ячейки с 30.04.1900 15:03), то получите 30.04.1900 19:05 (прибавили 4 часа, 2 минуты)

Последний раз редактировалось IgorGO; 21.11.2009 в 11:33.
IgorGO вне форума   Ответить с цитированием
Старый 21.11.2009, 11:29   #4
VictorM
Профессионал
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Адрес: Луганск
Сообщений: 2,008
Репутация: 251

icq: 1-702-732
skype: victor11129
По умолчанию

IgorGO, спасибо за исчерпывающую информацию!
С датами и временем вечная проблема))
А приведеная выше формула у меня работает в коде VBA и используется для прибавления месяца.
ActiveCell.FormulaLocal = "=ДАТА(ГОД(A1);МЕСЯЦ(A1)+C1 ;ДЕНЬ(A1))"
Кстати, может подскажете, правильно ли это?
Извините, если ввел в заблуждение)
__________________
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499

Последний раз редактировалось VictorM; 21.11.2009 в 11:38.
VictorM вне форума   Ответить с цитированием
Старый 21.11.2009, 12:34   #5
Talisman
Пользователь
 
Регистрация: 29.12.2007
Сообщений: 31
Репутация: 7
По умолчанию

Спасиб работает, апреобразования числа в дату считаю ненадежным, просто потому что не понимаю что это за число
Talisman вне форума   Ответить с цитированием
Старый 23.11.2009, 08:21   #6
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
Репутация: 40
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
IgorGO, спасибо за исчерпывающую информацию!
С датами и временем вечная проблема))
А приведеная выше формула у меня работает в коде VBA и используется для прибавления месяца.
ActiveCell.FormulaLocal = "=ДАТА(ГОД(A1);МЕСЯЦ(A1)+C1 ;ДЕНЬ(A1))"
Кстати, может подскажете, правильно ли это?
Извините, если ввел в заблуждение)
Уважаемый VictorM!
Я в свое время очень мучался с такой же проблемой. Это было связанно с использованием особого формата даты и времени в контроллерах Siemens. В них дата и время раздельные. И если с временем особых проблем не было измеряется в милисекундах, то дата - в них исчесляется от рождества Христова.
Эта путаница продолжалось до тех пока, я не перешел в VBA в формат представления даты Еxcel. ЧТо же касается вашего примера я записал бы так.
Код:

ActiveCell.FormulaLocal = "=ДАТА(ГОД(A1)+ЦЕЛОЕ((МЕСЯЦ(A1)+C1)/12);МЕСЯЦ(A1)+C1-ЦЕЛОЕ((МЕСЯЦ(A1)+C1)/12)*12 ;ДЕНЬ(A1))"

Юнлинг вне форума   Ответить с цитированием
Старый 21.02.2010, 23:26   #7
rick1177
Пользователь
 
Регистрация: 15.02.2010
Адрес: Россия, Пермь
Сообщений: 27
Репутация: 10

icq: 210381376
skype: rick11117777
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
VictorM, прикалываемся?
На исходных, которые описал VictorM, в любую ячейку пишем =A1+20. Если в итоге увидели число, задайте новой ячейке формат дата и будет вам...
Вообще, даты ексель хранит, как рациональное или действительное число. Число Пи, например, - это действительное число.
Целая часть - это количество дней от 31.12.1899, напишите в ячейку 1, поставьте формат дата "ДД.ММ.ГГГГ" увидите 01.01.1900.
Дробная часть числа овечает за часы, минуты, секунды.
поставьте в ячеку =ПИ(), задайте формат "ДД.ММ.ГГГГ чч:мм:сс", увидите: 03.01.1900 3:23:54. Колонка только должна быть достаточной ширины, чтобы все это увидеть.
Поставьте в третью ячейку =121+15/24+ 3/1440. ПоставЬте формат время "ДД.ММ.ГГГГ чч:мм", увидите 30.04.1900 15:03.
если в соседней написать =предыдущая + 4/24 + 2/1440 (где предыдущая - это адрес ячейки с 30.04.1900 15:03), то получите 30.04.1900 19:05 (прибавили 4 часа, 2 минуты)
А как программно сделать такое..Пользователь в Excel ставит дату (в одной ячейке) и число дней в другой. Мне требуется определить, какое число будет через это количество дней (причём важно знать, что может быть весокосный или нет год) и какой день недели будет по календарю?
rick1177 вне форума   Ответить с цитированием
Старый 21.02.2010, 23:31   #8
EducatedFool
Программист VBA
Заслуженный модератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Адрес: Россия, Урал
Сообщений: 6,432
Репутация: 1019

icq: 5836318
skype: ExcelVBA.ru
По умолчанию

Код:

Sub test()
    ДатаИзЯчейки = CDate([a1])
    КолвоДней = 20
    НоваяДата = DateAdd("d", КолвоДней, ДатаИзЯчейки)
    ДеньНедели = Weekday(НоваяДата, vbMonday)
End Sub

EducatedFool вне форума   Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как к числу прибавить проценты 90 + 10% и получить 100. а не 99. il_il Microsoft Office Excel 30 21.07.2012 01:42
Как прибавить год к текущей дате Bigtyoma Общие вопросы Delphi 18 06.05.2011 20:22
Как прибавить привлекательности сделанной программе Arassir Свободное общение 5 09.11.2008 22:20
Помогите прибавить 3% Miyazaki Microsoft Office Excel 6 01.09.2008 12:29
Как сделать отсчет дней от заданной даты в Excel? ru16 Microsoft Office Excel 1 22.11.2007 11:13




06:37.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.

Forex с Admiral Markets — это надежно


Работа на Forex с 2000 года. Очное и дистанционное обучение. Выгодные условия.
магазин горящих туров


более 1000 горящих предложений ежедневно
Бэбиблог - соц сеть для будущих мам


RusProfile.ru


Справочник российских юридических лиц и организаций.