1 / 1 / 0
Регистрация: 03.12.2014
Сообщений: 329
|
|
1 | |
Формула с датой13.03.2017, 15:27. Показов 4217. Ответов 12
Метки нет (Все метки)
Дорогие форумяне! помогите с формулой
нужно высчитывать разницу между текущим днем и прошлым если в ячейку А1 загнать формулу TODAY(), а в А2 - Date, то нет проблем.... ActiveCell=А1-А2... все работает но если формулу TODAY() внести в ActiveCell сразу, то уже не выходит Код
ActiveCell.FormulaR1C1 = "=TODAY()-" & Cells(2, 1) Код
ActiveCell.FormulaR1C1 = "=TODAY()-" & 3
0
|
13.03.2017, 15:27 | |
Ответы с готовыми решениями:
12
Если пусто - одна формула, если есть значение - другая формула Операции с датой Счетчик с датой Работа с датой |
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
|
|||||||||||
13.03.2017, 18:37 | 3 | ||||||||||
Сообщение было отмечено Оксана33 как решение
Решение
Разница между текущим днем и прошлым, всегда = 1 день (без учёта часов, минут и секунд)
Если же в указанной ячейке введён не прошлый день, то ввести формулу, возвращающую их разницу, можно, например, так :
1
|
1 / 1 / 0
Регистрация: 03.12.2014
Сообщений: 329
|
|
17.03.2017, 20:37 [ТС] | 4 |
pashulka, объясни пожалуйста почему CDbl - он конвертирует его в число, которое Эксель интерпретирует как дату?
0
|
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
|
|
17.03.2017, 20:42 | 5 |
Потому, что дата это всего лишь количество(читайте число) дней, прошедших с 1 января 1900 года (или 2 января 1904 года, если в Excel установлена соответствующая опция)
1
|
1 / 1 / 0
Регистрация: 03.12.2014
Сообщений: 329
|
|
17.03.2017, 21:27 [ТС] | 6 |
но я не поняла при чем тут Double
Добавлено через 1 минуту aequit, можно ли "d" заменить DateInterval.Day?
0
|
17.03.2017, 21:39 | 7 |
"d" это и есть строковое значение DateInterval.Day
https://msdn.microsoft.com/ru-... s.90).aspx
1
|
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
|
||||||
17.03.2017, 21:50 | 8 | |||||
1
|
1 / 1 / 0
Регистрация: 03.12.2014
Сообщений: 329
|
|
17.03.2017, 22:04 [ТС] | 9 |
я там уже была) но если в формуле меняешь на DateInterval.Day то не выходит
Добавлено через 7 минут я просто не пойму как Double это делает с датой, я думала что он предназначен для чисел с запятыми
0
|
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
|
||||||
17.03.2017, 22:18 | 10 | |||||
Ещё раз повторю, дата это и есть число, например, 17.03.2017 12:00 это 42811,5
1
|
1 / 1 / 0
Регистрация: 03.12.2014
Сообщений: 329
|
|
18.03.2017, 12:07 [ТС] | 11 |
я не пойму... cdbl для того, чтобы преобразовать в число? я думала, что он для другого служит
тогда почему не CLng или CSng, что для меня более логично бы звучало или даже CInt, но только с ним какая то засада - в экселе преобразовует, а вот в vba - нет
0
|
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
|
|
18.03.2017, 16:15 | 12 |
Сообщение было отмечено Оксана33 как решение
Решение
В Excel нет стандартной функции рабочего листа CInt, а есть Int(Целое)
А что касается VB(A), то функция CInt, при конвертации даты в число, во-первых отбросит время(дробную часть), а во-вторых, будет работать только с датами до 16.09.1989 (включительно)
1
|
1 / 1 / 0
Регистрация: 03.12.2014
Сообщений: 329
|
|
21.03.2017, 18:42 [ТС] | 13 |
ясно, спасибо за подробный ответ)
0
|
21.03.2017, 18:42 | |
21.03.2017, 18:42 | |
Помогаю со студенческими работами здесь
13
Работа с датой на VBA Колонтитул с динамической датой VBA в Excel: работа с датой Добавление столбца с датой в цикле Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |