Екцел формула: Броји дан у недељи између датума -

Преглед садржаја

Генеричка формула

=SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(start&":"&end)))=dow))

Резиме

За бројање радних дана (понедељком, петком, недељом итд.) Између два датума можете користити формулу низа која користи неколико функција: СУМПРОДУЦТ, ВЕЕКДАИ, РОВ и ИНДИРЕЦТ. У приказаном примеру, формула у ћелији Е6 је

=SUMPRODUCT(--(WEEKDAY(ROW(INDIRECT(B6&":"&C6)))=D6))

У генеричкој верзији формуле, почетак = датум почетка, крај = датум завршетка и дов = дан у недељи.

Објашњење

У основи, ова формула користи функцију ВЕЕКДАИ за тестирање одређеног броја датума како би се утврдило да ли слећу у одређени дан у недељи (дов) и функцију СУМПРОДУЦТ за израчунавање укупног броја.

Када добијете датум, ВЕЕКДАИ једноставно враћа број између 1 и 7 који одговара одређеном дану у недељи. Са подразумеваним подешавањима, 1 = недеља и 7 = субота. Дакле, 2 = понедељак, 6 = петак и тако даље.

Трик ове формуле је разумевање да су датуми у Екцелу само серијски бројеви који почињу 1. јануара 1900. На пример, 1. јануар 2016. је серијски број 42370, а 8. јануар 42377. Датуми у Екцелу изгледају само као датуми када примењује се формат броја датума.

Дакле, поставља се питање - како можете конструисати низ датума које можете унети у функцију ВЕЕКДАИ да бисте сазнали одговарајуће дане у недељи?

Одговор је да се РЕД користи са ИНДИРЕЦТ функцијама на следећи начин:

ROW(INDIRECT(date1&":"&date2))

ИНДИРЕЦТ омогућава да се спојени датуми „42370: 42377“ тумаче као бројеви редова. Тада функција РОВ враћа низ попут овог:

(42370;42371;42372;42373;42374;42375;42376;42377)

Функција ВЕЕКДАИ процењује ове бројеве као датуме и враћа овај низ:

(6;7;1;2;3;4;5;6)

која се тестира у односу на дати дан у недељи (6, у овом случају, из Д6). Када се резултати теста конвертују у 1 и 0 са двоструком цртицом, овај низ обрађује СУМПРОДУЦТ:

(1;0;0;0;0;0;0;1)

Који враћа 2.

Са СЕКУЕНЦЕ

Са новом функцијом СЕКУЕНЦЕ, ова формула може да поједностави овако:

=SUMPRODUCT(--(WEEKDAY(SEQUENCE(end-start+1,1,start,1))=dow))

У овој верзији користимо СЕКУЕНЦЕ за директно генерисање низа датума, без потребе за ИНДИРЕЦТ или РОВ.

Занимљиви Чланци...