указать в ячейке начальную и конечную даты
Gold_Barsik
Дата: Понедельник, 21.05.2018, 19:22 |
Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 459
Репутация:
6
±
Замечаний:
0% ±
2003
1) Как указать в ячейке начальную и конечную даты при выделении диапазона? можно назвать её ПЕРИОД ДАТ . Т.е. ставим в ячейке знак =, выделяем нужный диапазон и в результате получаем начальную дату-конечную дату. 2) Что бы после из этой ячейки вычислялось количество дней, можно назвать их ДЛИНА ПЕРИОДА . т.е. ставим в ячейке знак =, выделяем нужную ячейку с диапазоном дат (ПЕРИОД ДАТ) и результате получаем число дней этого диапазона (ПЕРИОД ДАТ) и точное число (десятичное) месяцев этого (ПЕРИОД ДАТ) в другой ячейке.
1) Как указать в ячейке начальную и конечную даты при выделении диапазона? можно назвать её ПЕРИОД ДАТ . Т.е. ставим в ячейке знак =, выделяем нужный диапазон и в результате получаем начальную дату-конечную дату. 2) Что бы после из этой ячейки вычислялось количество дней, можно назвать их ДЛИНА ПЕРИОДА . т.е. ставим в ячейке знак =, выделяем нужную ячейку с диапазоном дат (ПЕРИОД ДАТ) и результате получаем число дней этого диапазона (ПЕРИОД ДАТ) и точное число (десятичное) месяцев этого (ПЕРИОД ДАТ) в другой ячейке. Gold_Barsik
Сообщение отредактировал Gold_Barsik - Понедельник, 21.05.2018, 20:02
Ответить
Сообщение 1) Как указать в ячейке начальную и конечную даты при выделении диапазона? можно назвать её ПЕРИОД ДАТ . Т.е. ставим в ячейке знак =, выделяем нужный диапазон и в результате получаем начальную дату-конечную дату. 2) Что бы после из этой ячейки вычислялось количество дней, можно назвать их ДЛИНА ПЕРИОДА . т.е. ставим в ячейке знак =, выделяем нужную ячейку с диапазоном дат (ПЕРИОД ДАТ) и результате получаем число дней этого диапазона (ПЕРИОД ДАТ) и точное число (десятичное) месяцев этого (ПЕРИОД ДАТ) в другой ячейке. Автор - Gold_Barsik Дата добавления - 21.05.2018 в 19:22
_Boroda_
Дата: Понедельник, 21.05.2018, 21:40 |
Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16711
Репутация:
6502
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Засунул все это в один макрос Этоставим в ячейке знак =, выделяем нужный диапазон
делайте в столбце D [vba]Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim d_ As Range With Target If .Count > 1 Then Exit Sub If Left(.Formula, 1) <> "=" Then Exit Sub ar = Split(Mid(.Formula, 2), ":") If UBound(ar) <> 1 Then Exit Sub Set d_ = Range(Range(ar(0)), Range(ar(1))) Application.EnableEvents = 0 If .Column = 4 Then .Value = CDate(WorksheetFunction.Min(d_)) & "-" & CDate(WorksheetFunction.Max(d_)) .Offset(, 2).Value = "дней: " & Round(WorksheetFunction.Max(d_) - WorksheetFunction.Min(d_) + 1, 0) .Offset(, 3).Value = "месяцев: " & Round((WorksheetFunction.Max(d_) - WorksheetFunction.Min(d_) + 1) / 30, 2) End If Application.EnableEvents = 1 End With End Sub
[/vba]
Засунул все это в один макрос Этоставим в ячейке знак =, выделяем нужный диапазон
делайте в столбце D [vba]Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim d_ As Range With Target If .Count > 1 Then Exit Sub If Left(.Formula, 1) <> "=" Then Exit Sub ar = Split(Mid(.Formula, 2), ":") If UBound(ar) <> 1 Then Exit Sub Set d_ = Range(Range(ar(0)), Range(ar(1))) Application.EnableEvents = 0 If .Column = 4 Then .Value = CDate(WorksheetFunction.Min(d_)) & "-" & CDate(WorksheetFunction.Max(d_)) .Offset(, 2).Value = "дней: " & Round(WorksheetFunction.Max(d_) - WorksheetFunction.Min(d_) + 1, 0) .Offset(, 3).Value = "месяцев: " & Round((WorksheetFunction.Max(d_) - WorksheetFunction.Min(d_) + 1) / 30, 2) End If Application.EnableEvents = 1 End With End Sub
[/vba] _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Засунул все это в один макрос Этоставим в ячейке знак =, выделяем нужный диапазон
делайте в столбце D [vba]Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim d_ As Range With Target If .Count > 1 Then Exit Sub If Left(.Formula, 1) <> "=" Then Exit Sub ar = Split(Mid(.Formula, 2), ":") If UBound(ar) <> 1 Then Exit Sub Set d_ = Range(Range(ar(0)), Range(ar(1))) Application.EnableEvents = 0 If .Column = 4 Then .Value = CDate(WorksheetFunction.Min(d_)) & "-" & CDate(WorksheetFunction.Max(d_)) .Offset(, 2).Value = "дней: " & Round(WorksheetFunction.Max(d_) - WorksheetFunction.Min(d_) + 1, 0) .Offset(, 3).Value = "месяцев: " & Round((WorksheetFunction.Max(d_) - WorksheetFunction.Min(d_) + 1) / 30, 2) End If Application.EnableEvents = 1 End With End Sub
[/vba] Автор - _Boroda_ Дата добавления - 21.05.2018 в 21:40
Gold_Barsik
Дата: Понедельник, 21.05.2018, 21:51 |
Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 459
Репутация:
6
±
Замечаний:
0% ±
2003
Большое СПАСИБО! А формулой никак?
Ответить
Сообщение Большое СПАСИБО! А формулой никак? Автор - Gold_Barsik Дата добавления - 21.05.2018 в 21:51
_Boroda_
Дата: Понедельник, 21.05.2018, 21:57 |
Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16711
Репутация:
6502
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Не, к сожалению никак. Формула сама себя в ячейке менять не может
Не, к сожалению никак. Формула сама себя в ячейке менять не может _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Не, к сожалению никак. Формула сама себя в ячейке менять не может Автор - _Boroda_ Дата добавления - 21.05.2018 в 21:57
Nic70y
Дата: Понедельник, 21.05.2018, 21:59 |
Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 8999
Репутация:
2366
±
Замечаний:
0% ±
Excel 2010
Код
=ТЕКСТ(МИН(A16:A18);"ДД.ММ.ГГГГ")&"-"&ТЕКСТ(МАКС(A16:A18);"ДД.ММ.ГГГГ")
[vba]Код
Function ПериодДат(S As Range) u_01 = WorksheetFunction.Min(S) u_02 = WorksheetFunction.Max(S) u_03 = Format(u_01, "dd.mm.yyyy") u_04 = Format(u_02, "dd.mm.yyyy") ПериодДат = u_03 & "-" & u_04 End Function
[/vba] Вдруг правильно
Код
=ТЕКСТ(МИН(A16:A18);"ДД.ММ.ГГГГ")&"-"&ТЕКСТ(МАКС(A16:A18);"ДД.ММ.ГГГГ")
[vba]Код
Function ПериодДат(S As Range) u_01 = WorksheetFunction.Min(S) u_02 = WorksheetFunction.Max(S) u_03 = Format(u_01, "dd.mm.yyyy") u_04 = Format(u_02, "dd.mm.yyyy") ПериодДат = u_03 & "-" & u_04 End Function
[/vba] Вдруг правильноNic70y
ЮMoney 41001841029809
Ответить
Сообщение Код
=ТЕКСТ(МИН(A16:A18);"ДД.ММ.ГГГГ")&"-"&ТЕКСТ(МАКС(A16:A18);"ДД.ММ.ГГГГ")
[vba]Код
Function ПериодДат(S As Range) u_01 = WorksheetFunction.Min(S) u_02 = WorksheetFunction.Max(S) u_03 = Format(u_01, "dd.mm.yyyy") u_04 = Format(u_02, "dd.mm.yyyy") ПериодДат = u_03 & "-" & u_04 End Function
[/vba] Вдруг правильноАвтор - Nic70y Дата добавления - 21.05.2018 в 21:59
Gold_Barsik
Дата: Понедельник, 21.05.2018, 22:08 |
Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 459
Репутация:
6
±
Замечаний:
0% ±
2003
_Boroda_ , а скажите почему в подсчётах выдаёт 75 дней, а по факту 74 дня?
_Boroda_ , а скажите почему в подсчётах выдаёт 75 дней, а по факту 74 дня?Gold_Barsik
Ответить
Сообщение _Boroda_ , а скажите почему в подсчётах выдаёт 75 дней, а по факту 74 дня?Автор - Gold_Barsik Дата добавления - 21.05.2018 в 22:08
_Boroda_
Дата: Понедельник, 21.05.2018, 22:17 |
Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 16711
Репутация:
6502
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Потому, что с 1.1.18 по 1.1.18 будет не ноль дней, а 1 день Если нужно, чтобы было ноль дней, то в макросе в двух местах сотрите "+1"
Потому, что с 1.1.18 по 1.1.18 будет не ноль дней, а 1 день Если нужно, чтобы было ноль дней, то в макросе в двух местах сотрите "+1" _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Потому, что с 1.1.18 по 1.1.18 будет не ноль дней, а 1 день Если нужно, чтобы было ноль дней, то в макросе в двух местах сотрите "+1" Автор - _Boroda_ Дата добавления - 21.05.2018 в 22:17
Gold_Barsik
Дата: Понедельник, 21.05.2018, 22:25 |
Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 459
Репутация:
6
±
Замечаний:
0% ±
2003
Понятно. Не буду стирать. Подскажите как изменить столбец ввода "делайте в столбце D", на W?
Понятно. Не буду стирать. Подскажите как изменить столбец ввода "делайте в столбце D", на W? Gold_Barsik
Сообщение отредактировал Gold_Barsik - Понедельник, 21.05.2018, 22:26
Ответить
Сообщение Понятно. Не буду стирать. Подскажите как изменить столбец ввода "делайте в столбце D", на W? Автор - Gold_Barsik Дата добавления - 21.05.2018 в 22:25
_Boroda_
Дата: Понедельник, 21.05.2018, 22:28 |
Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 16711
Репутация:
6502
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Номер столбца W - 23-й. Следовательно в строке [vba][/vba]нужно заменить 4 на 23
Номер столбца W - 23-й. Следовательно в строке [vba][/vba]нужно заменить 4 на 23 _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Номер столбца W - 23-й. Следовательно в строке [vba][/vba]нужно заменить 4 на 23 Автор - _Boroda_ Дата добавления - 21.05.2018 в 22:28
Gold_Barsik
Дата: Понедельник, 21.05.2018, 22:34 |
Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 459
Репутация:
6
±
Замечаний:
0% ±
2003
Догадывался, но сомневался. Спасибо! Как в количестве месяцев сделать чтобы не округлял после запятой? или хотя бы до 4 знаков после.
Догадывался, но сомневался. Спасибо! Как в количестве месяцев сделать чтобы не округлял после запятой? или хотя бы до 4 знаков после. Gold_Barsik
Сообщение отредактировал Gold_Barsik - Понедельник, 21.05.2018, 22:41
Ответить
Сообщение Догадывался, но сомневался. Спасибо! Как в количестве месяцев сделать чтобы не округлял после запятой? или хотя бы до 4 знаков после. Автор - Gold_Barsik Дата добавления - 21.05.2018 в 22:34
_Boroda_
Дата: Понедельник, 21.05.2018, 22:52 |
Сообщение № 11
Группа: Админы
Ранг: Местный житель
Сообщений: 16711
Репутация:
6502
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Догадывался, но сомневался
Попробуйте еще раз догадаться, там все просто. Поэкспериментируйте самостоятельно. А когда найдете, то уже точно надолго запомните
Догадывался, но сомневался
Попробуйте еще раз догадаться, там все просто. Поэкспериментируйте самостоятельно. А когда найдете, то уже точно надолго запомните_Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Догадывался, но сомневался
Попробуйте еще раз догадаться, там все просто. Поэкспериментируйте самостоятельно. А когда найдете, то уже точно надолго запомнитеАвтор - _Boroda_ Дата добавления - 21.05.2018 в 22:52
Gold_Barsik
Дата: Вторник, 22.05.2018, 01:08 |
Сообщение № 12
Группа: Проверенные
Ранг: Обитатель
Сообщений: 459
Репутация:
6
±
Замечаний:
0% ±
2003
Ваша правда!
Ответить
Сообщение Ваша правда! Автор - Gold_Barsik Дата добавления - 22.05.2018 в 01:08