Exceli valem: lugege nädalapäev kuupäevade vahel -

Lang L: none (table-of-contents)

Üldine valem

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

Kokkuvõte

Nädalapäevade (esmaspäev, reede, pühapäev jne) lugemiseks kahe kuupäeva vahel võite kasutada massiivivalemit, mis kasutab mitut funktsiooni: SUMPRODUCT, WEEKDAY, ROW ja INDIRECT. Näidatud näites on lahtris E6 valem

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

Valemi üldises versioonis algus = alguskuupäev, lõpp = lõppkuupäev ja dow = nädalapäev.

Selgitus

Põhimõtteliselt kasutab see valem WEEKDAY funktsiooni, et testida mitmeid kuupäevi, et näha, kas need maanduvad antud nädalapäeval (dow), ja funktsiooni SUMPRODUCT, et kokku kokku saada.

Kuupäeva määramisel tagastab WEEKDAY lihtsalt numbri vahemikus 1 kuni 7, mis vastab kindlale nädalapäevale. Vaikeseadetega 1 = pühapäev ja 7 = laupäev. Niisiis, 2 = esmaspäev, 6 = reede jne.

Selle valemi nipp on mõista, et Exceli kuupäevad on lihtsalt seerianumbrid, mis algavad 1. jaanuaril 1900. Näiteks 1. jaanuar 2016 on seerianumber 42370 ja 8. jaanuar 42377. Exceli kuupäevad näevad välja nagu kuupäevad, kui rakendatakse kuupäeva numbri vormingut.

Niisiis, tekib küsimus - kuidas saate koostada massiivi kuupäevi, mida saate sisestada funktsiooni WEEKDAY, et teada saada vastavaid nädalapäevi?

Vastus on kasutada ROW kaudsete funktsioonidega:

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

INDIRECT võimaldab liidetud kuupäevi "42370: 42377" tõlgendada rea ​​numbritena. Seejärel tagastab funktsioon ROW sellise massiivi:

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

Funktsioon WEEKDAY hindab neid numbreid kuupäevadeks ja tagastab selle massiivi:

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

mida testitakse antud nädalapäeva järgi (antud juhul 6 alates D6). Kui testi tulemused on kahekordse sidekriipsuga teisendatud 1-ks ja 0-ks, töötleb seda massiivi SUMPRODUCT:

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

Mis tagastab 2.

Järjestusega

Uue funktsiooniga SEQUENCE saab seda valemit mõnevõrra lihtsustada:

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

Selles versioonis kasutame kuupäevamassiivi otse genereerimiseks SEQUENCE, ilma et oleks vaja INDIRECT või ROW.

Huvitavad Artiklid...