Версия для печати темы

Нажмите сюда для просмотра этой темы в оригинальном формате

WinCity.Ru _ Microsoft/Office Excel _ Посчитать стаж

Автор: arturhome Пятница, 04 Апреля 2008, 15:05

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

т.е к примеру 01.01.2008 и 24.03.2009 лет ?? месяцев ?? недель ?

специальные програмки не устраивают нужо именно Excel
wallbash.gif

Автор: Квазимодо Пятница, 04 Апреля 2008, 16:15

arturhome, попробуем так. Пусть в ячейке A1 начальная дата, в A2 - конечная, и дата в A2 больше, чем в A1. Тогда количество полных лет рассчитывается по формуле:

=ЦЕЛОЕ(ГОД(A2)-ГОД(A1)-ЕСЛИ(ДАТА(ГОД(A1);МЕСЯЦ(A2);ДЕНЬ(A2))<A1;1;0))

(т.е. если день, который был в первой дате, еще не наступил во второй, то из числа полных лет нужно вычесть 1; ЦЕЛОЕ() использовано, чтобы формат ячейки не менялся на дату).

Количество месяцев:

=ЦЕЛОЕ(МЕСЯЦ(A2)-МЕСЯЦ(A1)-ЕСЛИ(ДЕНЬ(A2)<ДЕНЬ(A1);1;0)+ЕСЛИ(ДАТА(ГОД(A1);МЕСЯЦ(A2);ДЕНЬ(A2))<A1;12;0))

(если не прошло полного месяца, уменьшаем на 1; если количество лет уже уменьшено на 1, добавляем 12).

Количество дней (без выделения недель):

=ЕСЛИ(ДЕНЬ(A2)>ДЕНЬ(A1);ДЕНЬ(A2)-ДЕНЬ(A1);ЦЕЛОЕ(A2-ДАТА(ГОД(A2)-ЕСЛИ(МЕСЯЦ(A2)=1;1;0);ЕСЛИ(МЕСЯЦ(A2)=1;12;МЕСЯЦ(A2)-1);ДЕНЬ(A1))))

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

Количество недель и дней можно сосчитать, поделив последнее число на 7 с остатком. (функции =ЦЕЛОЕ() и =ОСТАТ()))

Автор: pashulka Пятница, 04 Апреля 2008, 21:18

Всё гораздо проще, ибо для подобных вычислений существует функция рабочего листа =РАЗНДАТ() / DATEDIF()

A1=01.01.2008
A2=24.03.2009

=РАЗНДАТ(A1;A2;"Y")
=РАЗНДАТ(A1;A2;"YM")
=РАЗНДАТ(A1;A2;"MD")

Автор: arturhome Пятница, 11 Апреля 2008, 13:00

Спасибо
очень интересная формула
кстати её нет в стандартном наборе функций...

Автор: pashulka Пятница, 11 Апреля 2008, 21:14

Этой функции (равно как и некоторых других) действительно нет в списке функций из стандартного диалогового окна Мастер функций, однако, несмотря на этот очевидный факт =РАЗНДАТ() является функцией рабочего листа, упоминается в рабочей книге funcs.xls, и её описание наличествует, например, в справке MS Excel 2000

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)