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

Вход

Регистрация

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

 

= Мир MS Excel/Високосный сдвиг - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин  
Мир MS Excel » Работа и общение » Мозговой штурм » Високосный сдвиг (Невисокосный год - 366 дней. Как?)
Високосный сдвиг
ZORRO2005 Дата: Вторник, 22.01.2013, 20:24 | Сообщение № 21
Группа: Друзья
Ранг: Обитатель
Сообщений: 382
Репутация: 148 ±
Замечаний: 0% ±

Excel2010
У меня пока нет решения.
Хорошо, давай еще подождем.
 
Ответить
СообщениеУ меня пока нет решения.
Хорошо, давай еще подождем.

Автор - ZORRO2005
Дата добавления - 22.01.2013 в 20:24
Serge_007 Дата: Вторник, 22.01.2013, 20:28 | Сообщение № 22
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Цитата (ZORRO2005)
У меня пока нет решения.

Не верю
Задача очень простая
Или это только мне так кажется?

ЗЫ Моя формула подходит для любой версии, без пакета анализов, но ссылается на год и ставит ""
Если на него не ссылаться, то надо ещё десяток знаков прибавить к общей длинне
Если даты некорректны, например начальная больше окончательной - возвращается ""

Крутил по разному, ошибок не нашел


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата (ZORRO2005)
У меня пока нет решения.

Не верю
Задача очень простая
Или это только мне так кажется?

ЗЫ Моя формула подходит для любой версии, без пакета анализов, но ссылается на год и ставит ""
Если на него не ссылаться, то надо ещё десяток знаков прибавить к общей длинне
Если даты некорректны, например начальная больше окончательной - возвращается ""

Крутил по разному, ошибок не нашел

Автор - Serge_007
Дата добавления - 22.01.2013 в 20:28
MCH Дата: Вторник, 22.01.2013, 23:40 | Сообщение № 23
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

Цитата (Serge_007)
Задача очень простая Или это только мне так кажется?

для меня она не показалась простой, либо я не нашел простого алгоритма
Цитата (Serge_007)
Моя формула подходит для любой версии, без пакета анализов, но ссылается на год и ставит ""

Сергей, у тебя дата в виде даты или текстом?
 
Ответить
Сообщение
Цитата (Serge_007)
Задача очень простая Или это только мне так кажется?

для меня она не показалась простой, либо я не нашел простого алгоритма
Цитата (Serge_007)
Моя формула подходит для любой версии, без пакета анализов, но ссылается на год и ставит ""

Сергей, у тебя дата в виде даты или текстом?

Автор - MCH
Дата добавления - 22.01.2013 в 23:40
ZORRO2005 Дата: Вторник, 22.01.2013, 23:58 | Сообщение № 24
Группа: Друзья
Ранг: Обитатель
Сообщений: 382
Репутация: 148 ±
Замечаний: 0% ±

Excel2010
Цитата (MCH)
Сергей, у тебя дата в виде даты или текстом?

В виде даты
 
Ответить
Сообщение
Цитата (MCH)
Сергей, у тебя дата в виде даты или текстом?

В виде даты

Автор - ZORRO2005
Дата добавления - 22.01.2013 в 23:58
Serge_007 Дата: Среда, 23.01.2013, 11:42 | Сообщение № 25
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Цитата (MCH)
Сергей, у тебя дата в виде даты или текстом?

В виде даты


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата (MCH)
Сергей, у тебя дата в виде даты или текстом?

В виде даты

Автор - Serge_007
Дата добавления - 23.01.2013 в 11:42
MCH Дата: Среда, 23.01.2013, 22:43 | Сообщение № 26
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

Цитата (Serge_007)
Задача очень простая Или это только мне так кажется?

Серег, не знаю как ты решал, но для меня задача сложная
Я решал по такому алгоритму:
1. формируем даты високосного года (любого) начиная с дня и месяца начальной даты, год любой високосный (например 2000)
2. производим сдвиг полученной даты до нужного года (я делал через ДАТАМЕС, отсюда и потребность в "Пакете анализа")
3. проверяем, если 29.02.текущего года не существует, либо текущая дата больше конечной то выводим "", иначе полученную дату
Если решать влоб, то получится очень длинное решение, пришлось изворачиваться, чтобы получилось относительно короткое решение, дату вычисляю только один раз
 
Ответить
Сообщение
Цитата (Serge_007)
Задача очень простая Или это только мне так кажется?

Серег, не знаю как ты решал, но для меня задача сложная
Я решал по такому алгоритму:
1. формируем даты високосного года (любого) начиная с дня и месяца начальной даты, год любой високосный (например 2000)
2. производим сдвиг полученной даты до нужного года (я делал через ДАТАМЕС, отсюда и потребность в "Пакете анализа")
3. проверяем, если 29.02.текущего года не существует, либо текущая дата больше конечной то выводим "", иначе полученную дату
Если решать влоб, то получится очень длинное решение, пришлось изворачиваться, чтобы получилось относительно короткое решение, дату вычисляю только один раз

Автор - MCH
Дата добавления - 23.01.2013 в 22:43
Serge_007 Дата: Среда, 23.01.2013, 22:49 | Сообщение № 27
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Цитата (MCH)
Я решал по такому алгоритму:
1. формируем даты високосного года (любого) начиная с дня и месяца начальной даты, год любой високосный

А если сразу проверять на високосность (вспомни, даты не могут принадлежать разным годам!)?
Просто ДА или НЕТ?
Так ведь проще?..

ЗЫ "В лоб" раздельно пишется smile


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата (MCH)
Я решал по такому алгоритму:
1. формируем даты високосного года (любого) начиная с дня и месяца начальной даты, год любой високосный

А если сразу проверять на високосность (вспомни, даты не могут принадлежать разным годам!)?
Просто ДА или НЕТ?
Так ведь проще?..

ЗЫ "В лоб" раздельно пишется smile

Автор - Serge_007
Дата добавления - 23.01.2013 в 22:49
MCH Дата: Среда, 23.01.2013, 22:57 | Сообщение № 28
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

Цитата (Serge_007)
ЗЫ "В лоб" раздельно пишется

а у меня это не существительное, а наречие, отвечающее на вопрос "как?" (тапа как вверх или вниз) smile
 
Ответить
Сообщение
Цитата (Serge_007)
ЗЫ "В лоб" раздельно пишется

а у меня это не существительное, а наречие, отвечающее на вопрос "как?" (тапа как вверх или вниз) smile

Автор - MCH
Дата добавления - 23.01.2013 в 22:57
MCH Дата: Среда, 23.01.2013, 23:10 | Сообщение № 29
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

Цитата (Serge_007)
А если сразу проверять на високосность

а как ты проверяешь? 2100 год у тебя високосный или нет?
 
Ответить
Сообщение
Цитата (Serge_007)
А если сразу проверять на високосность

а как ты проверяешь? 2100 год у тебя високосный или нет?

Автор - MCH
Дата добавления - 23.01.2013 в 23:10
Serge_007 Дата: Среда, 23.01.2013, 23:12 | Сообщение № 30
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Цитата (MCH)
а как ты проверяешь?

Если есть 29-е февраля - значит високосный, как ещё?..


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата (MCH)
а как ты проверяешь?

Если есть 29-е февраля - значит високосный, как ещё?..

Автор - Serge_007
Дата добавления - 23.01.2013 в 23:12
MCH Дата: Среда, 23.01.2013, 23:19 | Сообщение № 31
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

Цитата (Serge_007)
Если есть 29-е февраля - значит високосный, как ещё?.

Можно проверять по самому году (кратности 4, 100 и 400), можно упростить и проверять на кратность 4, ошибка будет для 2100, 2200, 2300 и др. годов, возможно для практического применения этим можно принебречь, т.к. до 2100 года еще очень долго.
Хотел уточнить, потому как проверяя на 29 февраля, формула достаточно длинная получается
 
Ответить
Сообщение
Цитата (Serge_007)
Если есть 29-е февраля - значит високосный, как ещё?.

Можно проверять по самому году (кратности 4, 100 и 400), можно упростить и проверять на кратность 4, ошибка будет для 2100, 2200, 2300 и др. годов, возможно для практического применения этим можно принебречь, т.к. до 2100 года еще очень долго.
Хотел уточнить, потому как проверяя на 29 февраля, формула достаточно длинная получается

Автор - MCH
Дата добавления - 23.01.2013 в 23:19
Serge_007 Дата: Среда, 23.01.2013, 23:24 | Сообщение № 32
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Миш, мы мыслим совершенно по разному...
Может это и хорошо smile

ЗЫ Если хочешь - я завтра вышлю тебе свою формулу


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеМиш, мы мыслим совершенно по разному...
Может это и хорошо smile

ЗЫ Если хочешь - я завтра вышлю тебе свою формулу

Автор - Serge_007
Дата добавления - 23.01.2013 в 23:24
MCH Дата: Вторник, 29.01.2013, 10:19 | Сообщение № 33
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

новых решений нет, может пора выкладываться?
 
Ответить
Сообщениеновых решений нет, может пора выкладываться?

Автор - MCH
Дата добавления - 29.01.2013 в 10:19
MCH Дата: Среда, 30.01.2013, 01:21 | Сообщение № 34
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

Т.к. автор темы молчит (либо сам не решил задачку, либо ни кому не хочет показывать), выкладываю свое решение
Для 2007/2010, 127:
Код
=ЕСЛИОШИБКА(--ТЕКСТ(ДАТАМЕС(ТЕКСТ(E$4;"Д-М-\0")+СТРОКА(A1)-1;(ГОД(E$4)-2000)*12);"[="&ЕСЛИ(E$4=E$5;0;E5)&"] ;[<="&E$5&"];");"")

Решение с нулем вместо пустой строки в 109 символов - см. во вложение
К сообщению приложен файл: M_SH_ZORRO.xls (66.0 Kb)
 
Ответить
СообщениеТ.к. автор темы молчит (либо сам не решил задачку, либо ни кому не хочет показывать), выкладываю свое решение
Для 2007/2010, 127:
Код
=ЕСЛИОШИБКА(--ТЕКСТ(ДАТАМЕС(ТЕКСТ(E$4;"Д-М-\0")+СТРОКА(A1)-1;(ГОД(E$4)-2000)*12);"[="&ЕСЛИ(E$4=E$5;0;E5)&"] ;[<="&E$5&"];");"")

Решение с нулем вместо пустой строки в 109 символов - см. во вложение

Автор - MCH
Дата добавления - 30.01.2013 в 01:21
Serge_007 Дата: Среда, 30.01.2013, 10:10 | Сообщение № 35
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Код
=ВЫБОР((ДЕНЬ(ДАТА(E$3;2;29))=1)*(E5=ДАТА(E$3;2;28))+(E$4+СТРОКА()-6-СЧЁТЕСЛИ(E$4:E5;"")<=E$5)+1;"";E$4+СТРОКА()-6-СЧЁТЕСЛИ(E$4:E5;"");"")
К сообщению приложен файл: leap_year.xls (74.5 Kb)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Код
=ВЫБОР((ДЕНЬ(ДАТА(E$3;2;29))=1)*(E5=ДАТА(E$3;2;28))+(E$4+СТРОКА()-6-СЧЁТЕСЛИ(E$4:E5;"")<=E$5)+1;"";E$4+СТРОКА()-6-СЧЁТЕСЛИ(E$4:E5;"");"")

Автор - Serge_007
Дата добавления - 30.01.2013 в 10:10
ZORRO2005 Дата: Среда, 30.01.2013, 16:31 | Сообщение № 36
Группа: Друзья
Ранг: Обитатель
Сообщений: 382
Репутация: 148 ±
Замечаний: 0% ±

Excel2010
MCH, Serge_007,
Спасибо большое, все отлично работает!
Очень порадовал формат с помощью формул в квадратных скобках.

Цитата (Serge_007)
Задача очень простая

Больше задавать не буду. smile
 
Ответить
СообщениеMCH, Serge_007,
Спасибо большое, все отлично работает!
Очень порадовал формат с помощью формул в квадратных скобках.

Цитата (Serge_007)
Задача очень простая

Больше задавать не буду. smile

Автор - ZORRO2005
Дата добавления - 30.01.2013 в 16:31
Мир MS Excel » Работа и общение » Мозговой штурм » Високосный сдвиг (Невисокосный год - 366 дней. Как?)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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