указать в ячейке начальную и конечную даты
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
Группа: Админы
Ранг: Местный житель
Сообщений: 16910
Репутация:
6615
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Засунул все это в один макрос Этоставим в ячейке знак =, выделяем нужный диапазон
делайте в столбце D
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
Засунул все это в один макрос Этоставим в ячейке знак =, выделяем нужный диапазон
делайте в столбце D
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
_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 WithEnd 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
Группа: Админы
Ранг: Местный житель
Сообщений: 16910
Репутация:
6615
±
Замечаний:
±
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
Группа: Друзья
Ранг: Экселист
Сообщений: 9136
Репутация:
2416
±
Замечаний:
0% ±
Excel 2010
=ТЕКСТ(МИН(A16:A18 );"ДД.ММ.ГГГГ")&"-"&ТЕКСТ(МАКС(A16:A18 );"ДД.ММ.ГГГГ")
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
Вдруг правильно
=ТЕКСТ(МИН(A16:A18 );"ДД.ММ.ГГГГ")&"-"&ТЕКСТ(МАКС(A16:A18 );"ДД.ММ.ГГГГ")
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
Вдруг правильно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_04End 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
Группа: Админы
Ранг: Местный житель
Сообщений: 16910
Репутация:
6615
±
Замечаний:
±
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
Группа: Админы
Ранг: Местный житель
Сообщений: 16910
Репутация:
6615
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Номер столбца W - 23-й. Следовательно в строке нужно заменить 4 на 23
Номер столбца W - 23-й. Следовательно в строке нужно заменить 4 на 23 _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Номер столбца W - 23-й. Следовательно в строке [vba]
If .Column = 4 Then
[/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
Группа: Админы
Ранг: Местный житель
Сообщений: 16910
Репутация:
6615
±
Замечаний:
±
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