×
×
+ Ответить в теме
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 30 из 45
  1. #1
    Клерк
    Регистрация
    04.12.2003
    Адрес
    г.Москва
    Сообщений
    1,576

    Excel. Пользовательская функция - подсчет стажа

    Доброго времени суток, уважаемые!
    Представляю Вам на обсуждение сбацанную "на коленке" пользовательскую функцию для подсчета временного интервала между двумя датами (проще говоря - по-нашему, по-бразильски, - стажа).
    Данные выводятся в виде строки "Стаж составляет ... г. ... мес. ... дн."
    Синтаксис функции в прилагаемом файле на единственном листе (думаю, разберетесь).
    Код функции - в том же файле - в единственном модуле проекта.
    Что хотелось бы услышать - комментарии по коду (оптимальность, ну и как можно было сделать лучше) от "зубров VBA".
    Ну и благодарность восхищенных слушателей тоже приветствуется!
    Пользуясь случаем поздравляю всех с наступающим праздником!!!!
    С НОВЫМ ГОДОМ! УРА-УРА-УРА-А-А-А-А-А!!!!
    Вложения Вложения
    Поделиться с друзьями
    Все, что может быть - случается. Все что не может быть - тоже случается, причем значительно чаще...

  2. #2
    Клерк Аватар для zAngel
    Регистрация
    18.01.2006
    Сообщений
    892
    Это новогодний подарочек?
    К сожалению нет екселя (в опене не открывается корректно) под рукой, уже только в следующем году увижу во всей красе.
    Но меня лично интересуют следующие факты, т.к. функцию с подобным результатом мы не так давно обсуждали.
    1. Захватывает ли результат +1 день? То есть
    01.01.09 по 30.09.09 и мне выдает не 9 месяцев, а 8 месяцев 29 дней.
    2. Есть ли возможность составлять по вашей формуле общий стаж? То есть плюсовать, например, стаж состоящий из двух-трех и более периодов?
    ЗЫ: сорь, повторюсь задаю вопросы вслепую.
    С НАСТУПАЮЩИМ!!!!
    Быть, а не казаться.
    «Ответы - убийцы вопросов. И сами по себе - будущие вопросы» © Олди

  3. #3
    ~ Аватар для Зета
    Регистрация
    18.10.2009
    Сообщений
    17,638
    Спасибо. Удобно для случаев, когда приходится указывать стаж в 1С:ЗиК.
    Присоединяюсь к предыдущему оратору неплохо было бы
    плюсовать, например, стаж состоящий из двух-трех и более периодов
    И еще. Добавить вариант вывода результата не в годах-месяцах- днях, а только в месяцах-днях. Так требуется в 1С:ЗиК

  4. #4
    vikttur
    Гость
    Пытливый, выложил Ваш файл на Планете_Excel:
    Главный форум-Форумы-Вопросы по Microsoft Excel-Подсчет стажа

    Никоим образом не умаляю знаний посетителей данного форума, но, согласитесь, - знатоков Excel'я на специализированном форуме больше и, естественно, критических замечаний и помощи по корректировке кода можно получить больше.
    Заходите, тема-то Ваша

  5. #5
    Клерк Аватар для Anden
    Регистрация
    19.08.2009
    Сообщений
    11
    СПАСИБО автору за новогодний подарочек! Очень полезная программка... Побольше бы таких опытных пользователей-программеров на нашем сайте! Будут еще интересные идейки программ - выкладывайте! Будем очень благодарны!

  6. #6
    Ревизорша
    Гость

    Осторожно вот-бы эту штуку в оупен-офис...

    Ребятки.. а у меня в оупене работа.. помогите, плиз... а так чёт в экселе не получилось... я по другому формулу забила)) вот так: =РАЗНДАТ(A1;A2;"y") & " г. " & РАЗНДАТ(A1;A2;"ym") & " мес. " & РАЗНДАТ(A1;A2;"md") & " дн."

  7. #7
    vikttur
    Гость
    =ГОД(A2-A3)-1900& " г. " & МЕСЯЦ(A2-A3)& " мес. " &ДЕНЬ(A2-A3)& " дн."

  8. #8
    Клерк-клерик Аватар для Octopus
    Регистрация
    04.12.2008
    Адрес
    Пермь
    Сообщений
    2,187
    Есть аналогичное творение, но без VBA, чистыми формулами Excel. Кому надо - обращайтесь.
    Если бы я не был программистом, я б наверное хирургом стал. Люблю, знаете ли, покопаться во всякой фигне непонятной...

  9. #9
    Клерк Аватар для zAngel
    Регистрация
    18.01.2006
    Сообщений
    892
    Ну наконец дошли руки и память.
    Предлагаю посчитать стаж работника принятого на работу 1 января и уволенного 31 декабря.
    По канонам подсчета стажа, он отработал ровно один год. По всевозможным функциям екселя в т.ч. и =РАЗНДАТ всегда украден один день. Выход из этой ситуации простейший есть, например добавлением скрытой колонки с =B1+1.
    2. и насколько я увидела плюсовать эти стажи также возможности нет.

    Не так давно мы обсуждали это на клерке, немного в другом разделе.
    То есть ничем не отличается от от разндата
    Быть, а не казаться.
    «Ответы - убийцы вопросов. И сами по себе - будущие вопросы» © Олди

  10. #10
    Клерк-клерик Аватар для Octopus
    Регистрация
    04.12.2008
    Адрес
    Пермь
    Сообщений
    2,187
    Стаж с 1 января по 28 февраля составляет 2 месяца, а у вас 1 месяц 27 дней.

    Предлагаю свою "разработку", никакого VBA, чистые формулы
    Вложения Вложения
    Последний раз редактировалось Octopus; 09.02.2010 в 10:47.
    Если бы я не был программистом, я б наверное хирургом стал. Люблю, знаете ли, покопаться во всякой фигне непонятной...

  11. #11
    Клерк Аватар для zAngel
    Регистрация
    18.01.2006
    Сообщений
    892
    Octopus, спасибо, очень и гланое руки не доходили никак
    Быть, а не казаться.
    «Ответы - убийцы вопросов. И сами по себе - будущие вопросы» © Олди

  12. #12
    Клерк-клерик Аватар для Octopus
    Регистрация
    04.12.2008
    Адрес
    Пермь
    Сообщений
    2,187
    Осталась проблема суммирования нескольких периодов стажа. В случае, если периоды идут один за другим, проблем нет; хуже, когда разрывы... У меня пока никаких идей относительно того, как это реализовать малой кровью.
    Если бы я не был программистом, я б наверное хирургом стал. Люблю, знаете ли, покопаться во всякой фигне непонятной...

  13. #13
    vikttur
    Гость
    Киньте пример

  14. #14
    vikttur
    Гость
    Цитата Сообщение от Octopus Посмотреть сообщение
    Стаж с 1 января по 28 февраля составляет 2 месяца, а у вас 1 месяц 27 дней.

    Предлагаю свою "разработку", никакого VBA, чистые формулы
    Движком блокируются ссылки на дружественные сайты!
    Обсуждения по теме:
    Сайт Планета Excel, темы по стажу на форуме:
    =12427
    =6144

  15. #15
    I love Ricky! Аватар для Lenik
    Регистрация
    07.08.2007
    Адрес
    П
    Сообщений
    2,915
    Octopus, пасипа! Тоже себе сохранила. А периоды приноровилась в уме складывать
    Тысячами незримых нитей обвивает тебя закон.
    Разрубишь одну - преступник. Десять - смертник.
    Все - Бог!

  16. #16
    Клерк
    Регистрация
    01.10.2007
    Адрес
    Питер
    Сообщений
    1,188
    Цитата Сообщение от Пытливый Посмотреть сообщение
    Доброго времени суток, уважаемые!
    Представляю Вам на обсуждение сбацанную "на коленке" пользовательскую функцию для подсчета временного интервала между двумя датами (проще говоря - по-нашему, по-бразильски, - стажа).
    Данные выводятся в виде строки "Стаж составляет ... г. ... мес. ... дн."
    Синтаксис функции в прилагаемом файле на единственном листе (думаю, разберетесь).
    Код функции - в том же файле - в единственном модуле проекта.
    Что хотелось бы услышать - комментарии по коду (оптимальность, ну и как можно было сделать лучше) от "зубров VBA".
    Ну и благодарность восхищенных слушателей тоже приветствуется!
    Пользуясь случаем поздравляю всех с наступающим праздником!!!!
    С НОВЫМ ГОДОМ! УРА-УРА-УРА-А-А-А-А-А!!!!
    По вашей функции:
    01.12.2008 12.02.2010 стаж составляет: 2 г.-10 мес. 11 дн.
    А это неправильно.

  17. #17
    Консультант по ИТ Аватар для lubezniy
    Регистрация
    26.09.2004
    Адрес
    г. Москва, ВАО
    Сообщений
    5,383
    А вот это не проверите?
    http://www.lubezniy.ru/stag2.html
    С уважением,
    Виктор

  18. #18
    Клерк Аватар для yante
    Регистрация
    13.03.2002
    Адрес
    Новороссийск, Краснодарский край
    Сообщений
    950
    Цитата Сообщение от lubezniy Посмотреть сообщение
    А вот это не проверите?
    http://www.lubezniy.ru/stag2.html
    С 01/02/2009 по 28/02/2009 выдает 29 дней...

  19. #19
    Клерк-клерик Аватар для Octopus
    Регистрация
    04.12.2008
    Адрес
    Пермь
    Сообщений
    2,187
    Цитата Сообщение от lubezniy Посмотреть сообщение
    А вот это не проверите?
    http://www.lubezniy.ru/stag2.html
    05.01.2009 04.02.2009 0 лет 1 мес 1 дн
    А должен быть ровно месяц
    Если бы я не был программистом, я б наверное хирургом стал. Люблю, знаете ли, покопаться во всякой фигне непонятной...

  20. #20
    Клерк Аватар для YUM
    Регистрация
    30.06.2005
    Адрес
    Санкт-Петербург
    Сообщений
    6,223
    Цитата Сообщение от Octopus Посмотреть сообщение
    05.01.2009 04.02.2009 0 лет 1 мес 1 дн
    А должен быть ровно месяц
    при расчет стажа принят месяц равный 30 дням.
    31-5=26 + 4=30 МЕСЯЦ !
    На мое ИМХО, просьба не опираться!
    Когда я говорю,
    складывается впечатление, что я брежу(©)

  21. #21
    Клерк
    Регистрация
    17.10.2008
    Адрес
    Санкт-Петербург
    Сообщений
    4,080
    Цитата Сообщение от YUM Посмотреть сообщение
    31-5=26
    Как это, как это? 5-е число "за человека" не считаете? "Пустышек" вроде только четыре: с 1-ого по 4-ое.

  22. #22
    Клерк Аватар для YUM
    Регистрация
    30.06.2005
    Адрес
    Санкт-Петербург
    Сообщений
    6,223
    Цитата Сообщение от Bucom Посмотреть сообщение
    Как это, как это? 5-е число "за человека" не считаете? "Пустышек" вроде только четыре: с 1-ого по 4-ое.
    я что-то не понял.
    Январь =31 день. В задаче 5 января первый день расчета. 31-5=26 дней стажа в январе, плюс 4 дня в феврале. Итого =30 дней, т.е. 1 месяц.
    На мое ИМХО, просьба не опираться!
    Когда я говорю,
    складывается впечатление, что я брежу(©)

  23. #23
    Клерк
    Регистрация
    17.10.2008
    Адрес
    Санкт-Петербург
    Сообщений
    4,080
    Цитата Сообщение от YUM Посмотреть сообщение
    я что-то не понял
    И я тоже. Если 5 января входит в стаж, то январского стажа 27 дней?

  24. #24
    Клерк Аватар для YUM
    Регистрация
    30.06.2005
    Адрес
    Санкт-Петербург
    Сообщений
    6,223
    Цитата Сообщение от Bucom Посмотреть сообщение
    И я тоже. Если 5 января входит в стаж, то январского стажа 27 дней?
    точно там же алгоритм содержит +1
    На мое ИМХО, просьба не опираться!
    Когда я говорю,
    складывается впечатление, что я брежу(©)

  25. #25
    Аноним
    Гость
    Цитата Сообщение от vikttur Посмотреть сообщение
    =ГОД(A2-A3)-1900& " г. " & МЕСЯЦ(A2-A3)& " мес. " &ДЕНЬ(A2-A3)& " дн."
    Данная формула вычисляет не првильно. Пример дата приема на работу 01.01.2010 дата увольнения 31.12.2010 года. Результат должен быть ровно 1 год. А по формуле получается 0 г. 12 мес. 29 дн.

  26. #26
    Клерк Аватар для Старый ворчун
    Регистрация
    27.03.2002
    Сообщений
    12,453

    Ворчалка

    где постановка задачи? т.е. описание на русском языке, что должна выдавать функция при таких-то входных параметрах.

    без этого смысла нет что-то кодировать на любом языке.
    ... поскольку вышеизложенное в свете вышеуказанного влечет нижеследующее по отношению к поименованному...

  27. #27
    Клерк.
    Регистрация
    11.09.2010
    Сообщений
    11
    Бухгалтера прикалываются с экзельем
    Если так пойдет, то кто-нибудь сделает экзель альтернативу 1с в виде ерп

  28. #28
    Клерк Аватар для Старый ворчун
    Регистрация
    27.03.2002
    Сообщений
    12,453
    Цитата Сообщение от richard_az Посмотреть сообщение
    Бухгалтера прикалываются с экзельем
    Если так пойдет, то кто-нибудь сделает экзель альтернативу 1с в виде ерп
    на чистом екзеле вряд ли.
    а связка Access+Excel как раз для всяких бухучетов - ваяй, что хочешь.
    ... поскольку вышеизложенное в свете вышеуказанного влечет нижеследующее по отношению к поименованному...

  29. #29
    Клерк Аватар для YUM
    Регистрация
    30.06.2005
    Адрес
    Санкт-Петербург
    Сообщений
    6,223
    Цитата Сообщение от Аноним Посмотреть сообщение
    Данная формула вычисляет не првильно. Пример дата приема на работу 01.01.2010 дата увольнения 31.12.2010 года. Результат должен быть ровно 1 год. А по формуле получается 0 г. 12 мес. 29 дн.
    11 месяцев
    в формулу надо добавить +1 день (смотрите ниже по постам. Или на любую линейку, где отсчет идет с нуля, а не с единицы)
    тогда будет 11 мес 30 дней, что равно 12 мес.И равно 1 году
    Последний раз редактировалось YUM; 17.09.2010 в 13:17.
    На мое ИМХО, просьба не опираться!
    Когда я говорю,
    складывается впечатление, что я брежу(©)

  30. #30
    И был глубокий эконом ... Аватар для Klerk-agent
    Регистрация
    27.04.2009
    Сообщений
    650

    Эврика

    Цитата Сообщение от Octopus Посмотреть сообщение
    Стаж с 1 января по 28 февраля составляет 2 месяца, а у вас 1 месяц 27 дней.

    Предлагаю свою "разработку", никакого VBA, чистые формулы
    Блин, вещуга прикольная, но 1 день битый получается.

    вот такой вот промежуток времени:

    05.07.10 - 21.09.10 - по табличке выходит 2 мес. 17 дн.
    а должно быть 2 мес. 16 дн.

+ Ответить в теме
Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы можете создавать новые темы
  • Вы можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •