Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/указать в ячейке начальную и конечную даты - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
указать в ячейке начальную и конечную даты
Gold_Barsik Дата: Понедельник, 21.05.2018, 19:22 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 459
Репутация: 6 ±
Замечаний: 0% ±

2003
1) Как указать в ячейке начальную и конечную даты при выделении диапазона? можно назвать её ПЕРИОД ДАТ. Т.е. ставим в ячейке знак =, выделяем нужный диапазон и в результате получаем начальную дату-конечную дату.
2) Что бы после из этой ячейки вычислялось количество дней, можно назвать их ДЛИНА ПЕРИОДА. т.е. ставим в ячейке знак =, выделяем нужную ячейку с диапазоном дат (ПЕРИОД ДАТ) и результате получаем число дней этого диапазона (ПЕРИОД ДАТ) и точное число (десятичное) месяцев этого (ПЕРИОД ДАТ) в другой ячейке.
К сообщению приложен файл: _Microsoft_Exce.xls (18.5 Kb)


Сообщение отредактировал 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]
К сообщению приложен файл: 6948752.xls (42.5 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
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_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]
Вдруг правильно
К сообщению приложен файл: 3250245.xls (40.5 Kb)


Ю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
Дата добавления - 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"


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
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?


Сообщение отредактировал 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]
Код
If .Column = 4 Then
[/vba]нужно заменить 4 на 23


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
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 знаков после.


Сообщение отредактировал 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_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
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!