Скрыжаванне інтэрвалаў дат

Адна з тыповых задач для карыстальніка Microsoft Excel. Маем два дыяпазоны дат тыпу «пачатак-канец». Задача складаецца ў тым, каб вызначыць, ці перакрываюцца гэтыя дыяпазоны і, калі так, то на колькі дзён.

Перасякаюцца ці не?

Пачнем з вырашэння пытання, ці існуе ў прынцыпе перасячэнне інтэрвалаў? Выкажам здагадку, што ў нас ёсць такая табліца працоўных змен для супрацоўнікаў:

Добра бачна, што працоўныя змены Яраслава і Алены перасякаюцца, але як гэта разлічыць, не звяртаючыся да пабудовы каляндарнага графіка і візуальнага кантролю? Функцыя нам дапаможа SUMPRODUCT (SUMPRODUCT).

Давайце ўставім яшчэ адзін слупок у нашу табліцу з формулай, якая дае лагічнае значэнне TRUE, калі даты перасякаюцца:

Колькі дзён доўжыцца пераправа?

Калі прынцыпова няпроста зразумець, перасякаюцца нашы інтэрвалы ці не, але дакладна ведаць, колькі менавіта дзён трапляе ў перасячэнне, то задача ўскладняецца. Лагічна, што ў адну формулу неабходна «прапампаваць» цэлых 3 розныя сітуацыі:

  • інтэрвалы не перакрываюцца
  • адзін з інтэрвалаў цалкам паглынае іншы
  • інтэрвалы часткова перасякаюцца

Час ад часу я бачу рэалізацыю гэтага падыходу іншымі карыстальнікамі з выкарыстаннем мноства ўкладзеных функцый IF і г.д.

На самай справе з дапамогай функцыі можна зрабіць усё прыгожа МЕДЫЯН (СЯРЭДНІ) з катэгорыі Статыстычны.

Калі ўмоўна пазначыць пачатак першага інтэрвалу як N1, і канец для K1, і пачатак другой N2 і канец для K2, то ў агульных рысах нашу формулу можна запісаць так:

=МЕДЫЯНА(N1;K1+ 1;K2+1)-СЯРЭДНІ (N1;K1+ 1;N2)

Кампактны і элегантны, ці не праўда? 😉

  • Як Excel на самай справе працуе з датамі? Як разлічыць колькасць каляндарных або працоўных дзён паміж датамі?
  • Як пабудаваць каляндарны расклад (святы, трэніроўкі, змены…) у Excel з дапамогай умоўнага фарматавання?
  • Праверка аднаго або некалькіх умоў з дапамогай функцый КАЛІ (IF).

Пакінуць каментар