tévék. Konzolok. Projektorok és tartozékok. Technológiák. Digitális TV

Egy hónap napjainak számának meghatározása Microsoft Excelben. Hogyan lehet kiszámítani a benne lévő napok számát egy matematikai képlet segítségével a hónapszám alapján? Hogyan számoljunk egy hónapot

A táblázat létrehozásakor felmerülő problémák megoldásához külön cellában vagy egy képletben meg kell adnia egy hónap napjainak számát, hogy a program elvégezhesse a szükséges számításokat. Az Excel rendelkezik a művelet végrehajtására tervezett eszközökkel. Nézzük meg különféle módokon ennek a funkciónak a használata.

Speciális kategóriájú operátorok segítségével kiszámíthatja az Excelben egy hónap napjainak számát "Dátum és idő". Ahhoz, hogy kitaláljuk, melyik lehetőség a legmegfelelőbb, először meg kell határoznia a művelet céljait. Ennek függvényében a számítás eredménye ben jeleníthető meg külön elem egy lapon, és egy másik képletben is használható.

1. módszer: DAY és MONTH operátorok kombinációja

Legtöbb egyszerű módon a probléma megoldásához operátorok kombinációja szükséges NAPÉs EON-HÓNAP.

Funkció NAP kezelői csoportba tartozik "Dátum és idő". Egy adott számra mutat innen 1 hogy 31 . Esetünkben ennek az operátornak az lesz a feladata, hogy a beépített függvény argumentumként a hónap utolsó napját jelezze. EON-HÓNAP.

Operátori szintaxis NAP következő:

DAY(dátum_numerikus_formátumban)

Vagyis ennek a függvénynek az egyetlen érve az "Dátum numerikus formátumban". Az üzemeltető fogja beállítani EON-HÓNAP. Azt kell mondanunk, hogy a dátum numerikus formátumban eltér a szokásos formátumtól. Például dátum 04.05.2017 számszerű formában úgy fog kinézni 42859 . Ezért az Excel ezt a formátumot csak belső műveletekhez használja. Ritkán használják cellákban való megjelenítésre

Operátor EON-HÓNAP a hónap utolsó napjának sorszámát hivatott jelezni, amely a megadott dátumtól számított meghatározott számú hónap előre vagy hátra. A függvény szintaxisa a következő:

EON-HÓNAP(kezdési_dátum;hónapok_száma)

Operátor "Kezdő dátum" tartalmazza a dátumot, amelytől kezdve számítják, vagy egy hivatkozást arra a cellára, ahol található.

Operátor "Hónapok száma" azt jelzi, hány hónapig kell számolni egy adott dátumtól.

Most pedig lássuk, hogyan működik konkrét példa. Ehhez vegyük Excel lap, amelynek egyik cellájába egy adott naptári dátum kerül beírásra. A fenti operátorkészlet segítségével meg kell határozni, hogy hány nap van abban a havi időszakban, amelyre ez a szám vonatkozik.


Általános képletünk a következő formát öltötte:

NAP (HÓNAP(B3,0))

Ebben a képletben az egyetlen változó értéke a cella címe ( B3). Így, ha nem akarja elvégezni az eljárást keresztül Funkcióvarázslók, ezt a képletet a lap bármely elemébe beillesztheti úgy, hogy egyszerűen lecseréli a számot tartalmazó cella címét az adott esetben relevánsra. Az eredmény hasonló lesz.

2. módszer: A napok számának automatikus észlelése

Most nézzünk egy másik problémát. A napok számát nem egy adott naptári dátum szerint kell megjeleníteni, hanem az aktuális dátum szerint. Emellett az időszakok módosítása automatikusan, felhasználói beavatkozás nélkül is megtörténik. Bár furcsának tűnik, ez a feladat könnyebb, mint az előző. Megoldásához akár nyissa meg Funkcióvarázsló nem szükséges, mivel a műveletet végrehajtó képlet nem tartalmazza változó értékek vagy cellahivatkozások. Egyszerűen beírhatja a következő képletet változtatás nélkül abba a cellába, ahol az eredményt meg kívánja jeleníteni:

NAP(HÓNAP(MA(),0))

Az általunk használt beépített TODAY funkció ebben az esetben, a mai dátumot jeleníti meg, és nincsenek argumentumai. Így a cellája folyamatosan megjeleníti az aktuális hónap napjainak számát.

3. módszer: Számítsa ki az összetett képletekben használandó napok számát

A fenti példákban bemutattuk, hogyan számítható ki egy hónap napjainak száma egy adott naptári dátum alapján vagy automatikusan az aktuális hónap alapján, külön cellában jelenítve meg az eredményt. De ennek az értéknek a megállapítására más mutatók kiszámításához is szükség lehet. Ebben az esetben a napok számának kiszámítása belsőleg történik összetett képletés nem jelenik meg külön cellában. Nézzük meg, hogyan kell ezt megtenni egy példán keresztül.

Gondoskodnunk kell arról, hogy a cellában megjelenjen a végéig hátralévő napok száma aktuális hónap. Az előző módszerhez hasonlóan ez az opció nem igényel megnyitást Funkcióvarázslók. Egyszerűen beírhatja a következő kifejezést a cellába:

NAP(HÓNAP(MA(),0))-NAP(MA())

Ezt követően a megadott cellában megjelenik a hónap végéig hátralévő napok száma. Az eredmény minden nap automatikusan frissül, és az új időszak elejétől a visszaszámlálás újra kezdődik. Kiderült, hogy ez egyfajta visszaszámláló.

Amint látja, ez a képlet két részből áll. Az első közülük egy már ismerős kifejezés egy hónapban lévő napok számának kiszámításához:

NAP(HÓNAP(MA(),0))

De a második részben a mai számot levonjuk ebből a mutatóból:

NAP (MA())

Így ennek a számításnak a végrehajtásakor a napok számának kiszámításának képlete a szerves része bonyolultabb képlet.

4. módszer: Alternatív képlet

Sajnos azonban a program Excel 2007-nél korábbi verziói nem rendelkeznek operátorral EON-HÓNAP. Mi a helyzet azokkal a felhasználókkal, akik az alkalmazás régebbi verzióit használják? Számukra ez a lehetőség egy másik képlet révén létezik, amely a fent leírtaknál masszívabb. Nézzük meg, hogyan számítható ki egy hónap napjainak száma egy adott naptári dátum alapján ezzel az opcióval.

  1. Válassza ki a cellát az eredmény megjelenítéséhez, és lépjen az operátori argumentumok ablakba NAP számunkra már ismerős módon. Helyezze a kurzort az ablak egyetlen mezőjébe, és kattintson a képletsor bal oldalán lévő fordított háromszögre. Menjen a szakaszhoz "Egyéb funkciók...".
  2. Az ablakban Funkcióvarázslók a csoportban "Dátum és idő" jelölje ki a nevet "DÁTUM"és nyomja meg a gombot "RENDBEN".
  3. Megnyílik a kezelőablak DÁTUM. Ez a függvény egy dátumot konvertál ebből szabályos formátum numerikus értékké, amelyet az operátornak kell feldolgoznia NAP.

    A megnyíló ablak három mezőt tartalmaz. A mezőn "Nap" azonnal beírhatja a számot "1". Ez minden helyzetben ugyanaz lesz. De a másik két területtel alaposan foglalkozni kell majd.

    Helyezze a kurzort a mezőbe "Év". Ezután áttérünk az operátorok kiválasztására az ismerős háromszögön keresztül.

  4. Mind ugyanabban a kategóriában Funkcióvarázslók jelölje ki a nevet "ÉV"és kattintson a gombra "RENDBEN".
  5. Megnyílik az operátori argumentumok ablaka ÉV. A megadott szám alapján határozza meg az évet. Egyablakos mezőben "Dátum numerikus formátumban" Jelölünk egy hivatkozást az eredeti dátumot tartalmazó cellára, amelyhez meg kell határoznunk a napok számát. Ezt követően ne rohanjon a gombra kattintással "RENDBEN", és kattintson a névre "DÁTUM" a képletsávban.
  6. Ezután ismét visszatérünk az argumentumok ablakához DÁTUM. Helyezze a kurzort a mezőbe "Hónap"és lépjen tovább a funkciók kiválasztására.
  7. IN Funkcióvarázsló kattintson a névre "HÓNAP"és nyomja meg a gombot "RENDBEN".
  8. Megnyílik a függvény argumentumai ablak HÓNAP. Feladatai hasonlóak az előző operátorhoz, csak a hónap szám értékét jeleníti meg. Ennek az ablaknak az egyetlen mezőjében ugyanazt a hivatkozást állítjuk be az eredeti számra. Ezután a képletsorban kattintson a névre "NAP".
  9. Visszatérés az argumentumok ablakához NAP. Itt csak egy apró érintést kell tennünk. Az ablak egyetlen olyan mezőjében, amely már tartalmaz adatokat, adja hozzá a kifejezést a képlet végéhez "-1" idézőjelek nélkül, és az operátor mögé tegyük a „+1”-et HÓNAP. Ezt követően kattintson a gombra "RENDBEN".
  10. Mint látható, az előzőleg kiválasztott cella a hónap azon napjainak számát jeleníti meg, amelyekhez a megadott dátum tartozik. Az általános képlet így néz ki:

    NAP(DÁTUM(ÉV(D3),HÓNAP(D3)+1,1)-1)

Ennek a képletnek a titka egyszerű. Ezzel határozzuk meg a következő időszak első napjának dátumát, majd levonunk belőle egy napot, így megkapjuk a megadott hónapban lévő napok számát. Ebben a képletben a változó a cellahivatkozás D3 két helyen. Ha az adott esetben lecseréli annak a cellának a címére, amelyben a dátum található, akkor egyszerűen beírhatja ezt a kifejezést bármely lapelemhez segítség nélkül Funkcióvarázslók.

Amint láthatja, számos lehetőség van az egy hónapban lévő napok számának meghatározására az Excelben. Az, hogy melyiket használja, a felhasználó végső céljától, valamint attól függ, hogy a program melyik verzióját használja.

Jegyzet: ez a bejegyzés a cmcenroe.me/2014/12/05/days-in-month-formula.html cikk fordítása I. rész), valamint a szerző hozzáfűzése ( rész II). Az anyagot nem szabad komolyan venni, hanem inkább szellemi gyakorlatnak, amely nem igényel többet, mint iskolai számtan ismereteket, és nem. gyakorlati alkalmazása. Jó olvasást mindenkinek!

I. rész

Bevezetés

Nemrég, egy újabb álmatlan éjszaka után, azon gondolkodtam, hogy milyen módszerekkel emlékezzem a napok számára az év minden hónapjában. Van erre egy számláló rím, meg úgy, hogy a csülökre is lehet számolni, de nekem sem az egyik, sem a másik nem jött be. Azon töprengtem, hogy lehet-e valami matematikai képlet egy ilyen probléma megoldására, és - nem találtam egyet egy felületes tanulmányozás során - kihívtam magam, hogy készítsem el.

Formalizálás Más szóval meg kell találni a függvényt f, hogy az érték f(x) minden hónapra x, amelyet 1 és 12 közötti szám képvisel, megegyezik az adott hónapban lévő napok számával. Az argumentum- és függvényértékek táblázata:

x 1 2 3 4 5 6 7 8 9 10 11 12
f(x) 31 28 31 30 31 30 31 31 30 31 30 31

Ha kedvet kaptál ahhoz, hogy kipróbáld magad, mielőtt elolvasnád a megoldásomat, itt az ideje. Ha szeretné azonnal látni a kész választ, akkor nézzen a spoiler alá.

Válasz


Az alábbiakban bemutatom a megoldás megtalálásának lépéseit.

Matematikai berendezés

Először is, röviden frissítsük fel a memóriánkat két létfontosságú operátoron a probléma megoldásában: az egész osztáson és az osztás maradékán.

Egész osztás Ez egy operátor, amelyet sok programozási nyelvben használnak két egész szám felosztására és a törtrész eltávolítására a hányadosból. úgy fogom ábrázolni, mint . Például:

A felosztás maradéka Ez egy operátor, amely megtalálja az osztás maradékát. Sok programozási nyelv használja a szimbólumot % , olyan konstrukciókat fogok használni, mint például:

Ne feledje, hogy az osztás többi része egyenlő elsőbbséget élvez a felosztással.

Alapok

Tehát használjuk a matematikai apparátusunkat az alapképlet megszerzéséhez. Egy normál hónapnak 30 vagy 31 napja van, tehát váltogathatunk 1 és 0 között, majd egyszerűen hozzáadhatunk egy állandót ehhez a számhoz:

Kapunk egy táblázatot, amelyben a helyes értékek félkövérrel vannak kiemelve:
x 1 2 3 4 5 6 7 8 9 10 11 12
f(x) 31 30 31 30 31 30 31 30 31 30 31 30

Nem rossz kezdés! Már vannak helyes értékek januárra és a márciustól júliusig tartó hónapokra. február - speciális eset, és kicsit később foglalkozunk vele. Július után a hátralévő hónapokra fel kell fordítani a 0 és 1 beérkezési sorrendjét.
Ehhez hozzáadhatunk 1-et az osztalékhoz:

x 1 2 3 4 5 6 7 8 9 10 11 12
f(x) 30 31 30 31 30 31 30 31 30 31 30 31

Az augusztus és december közötti időszakra vonatkozó értékek most helyesek, de ahogy az várható volt, a többi hónap értéke hibás. Nézzük meg, hogyan kombinálhatjuk ezeket a képleteket.

Maszk átfedés

Ehhez darabonkénti függvény kell, de - mivel ez unalmasnak tűnt - más megoldáson gondolkodtam, hogy a függvény egyik részét használom az egyik intervallumon, a másikat a másikon.
Úgy gondolom, hogy a legegyszerűbb módja az lenne, ha olyan kifejezést találnánk, amely az egyik alkalmazási területen 1, a többiben pedig 0. Azt a módszert, amelyben egy argumentumot egy kifejezéssel megszorozva kizárjuk a képletből a hatókörén kívül, „maszk felrakásnak” neveztem el, mert ez a viselkedés egyfajta bitmaszkhoz hasonlít.
A módszer használatához függvényünk utolsó részében egy 1-gyel egyenlő kifejezést kell találnunk, amikor , és - mivel az argumentumértékek mindig kisebbek 16-nál - erre jól működik az egész szám 8-cal való osztása.
x 1 2 3 4 5 6 7 8 9 10 11 12
x ⁄ 8 ⌋ 0 0 0 0 0 0 0 1 1 1 1 1

Most ezt a maszkot használva, az osztalékban egy kifejezést használva 1 helyett, megfordíthatjuk a 0 és 1 megszerzésének sorrendjét a képletben:

x 1 2 3 4 5 6 7 8 9 10 11 12
f(x) 31 30 31 30 31 30 31 31 30 31 30 31

Eureka! Minden rendben van, kivéve februárt. Meglepetés meglepetés.

február

Bármely hónapnak van 30 vagy 31 napja, kivéve a februárt a maga 28 napjával (a szökőévek túlmutatnak ezen a feladaton). Jelenleg a képletünk szerint 30 napja van, ezért jó lenne kivonni a 2-vel egyenlő kifejezést -nél.
A legjobb, amit ki tudok találni, ez, amely a maszkot február után minden hónapra alkalmazza:
x 1 2 3 4 5 6 7 8 9 10 11 12
2 mod x 0 0 2 2 2 2 2 2 2 2 2 2

Az alapállandót 28-ra változtatva és 2-t hozzáadva a fennmaradó hónapokhoz, a következő képletet kapjuk:

x 1 2 3 4 5 6 7 8 9 10 11 12
f(x) 29 28 31 30 31 30 31 31 30 31 30 31

Sajnos január most 2 nappal rövidebb. De szerencsére nagyon könnyű olyan kifejezést kapni, amely csak az első hónapra vonatkozik: ez a lefelé kerekített szám fordítottja. Ha megszorozzuk 2-vel, megkapjuk a végső képletet:

x 1 2 3 4 5 6 7 8 9 10 11 12
f(x) 31 28 31 30 31 30 31 31 30 31 30 31

Utószó

Itt van - egy képlet a napok számának az év bármely hónapjában, egyszerű aritmetika segítségével. Ha legközelebb arra kíváncsi, hány nap van még szeptemberben, csak használja ezt az egysoros JavaScript-függvényt:

f(x) függvény (vissza 28 + (x + Math.floor(x/8)) % 2 + 2 % x + 2 * Math.floor(1/x); )

rész II

Bevezetés

Az első részben egy rövid, sőt kissé elegáns képletet kaptunk, melynek fő előnye a matematikai apparátus egyszerűsége, az elágazások és feltételes kifejezések hiánya, valamint a tömörség. A hátrányok közé tartozik – azon túl, hogy nem fogja használni a projektjében – a szökőévek és nem szökőévek ellenőrzésének hiánya.
Így egy függvény létrehozását tűztem ki magam elé f, hogy az érték f(x, y) minden hónapra x, amelyet egy 1-től 12-ig terjedő szám és az évszám képvisel y, nagyobb, mint 0, megegyezik a napok számával egy hónapban xévente y.
A türelmetleneknek kész válasz van a spoiler alatt, de a többieknél kérem, hogy kövessenek.

Válasz

A részleg maradéka: modés ⌊⌋

A vizuális áttekinthetőség kedvéért egyezzünk meg abban, hogy egyes képletekben a maradékot tartalmazó osztás operátort alsó zárójelek helyettesítik, ahol számomra szükségesnek tűnt:

Szökőév

Szökőév során egy további naptári nap kerül bevezetésre: február 29. Mint tudják, a szökőév olyan év, amely osztható 4-gyel, és nem osztható 100-zal, vagy osztható 400-zal. Írjuk fel a kifejezéssel azonos kifejezést:

Ahhoz, hogy ezt a kifejezést algebraivá alakíthassuk, a kifejezés eredményére a forma injekcióját kell alkalmazni:

Ez lehetővé teszi, hogy 1-et kapjon, ha maradék nélkül oszt, és 0-t, ha maradékkal osztja, annak érdekében, hogy felhasználja a hónap napjainak meghatározására szolgáló képletben.

Funkcióként g" használhatja az 1 mínusz az osztás maradékát:

x 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
g"(x) Végtelenség 1 0 0 0 0 0 0 0 0 0 0 0 0 0

Könnyen belátható, hogy az osztó és az osztó 1-gyel történő növelésével a megfelelő képletet kapjuk:
x 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
g"(x) 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Így a kifejezést így írjuk:


És írjuk a kifejezést így:

Ezzel a megközelítéssel a következő függvényt kapjuk g(y), amelynek értéke 1, ha az év szökőév, vagy 0 egyébként:

y 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000
g(y) 0 0 1 0 0 0 1 0 0 0 1
y 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 3000
g(y) 1 0 0 0 1 0 0 0 1 0 0

A szökőévek félkövérrel vannak szedve.

Hadd emlékeztessem Önöket arra, hogy az elfogadott megállapodás keretein belül a maradék osztás megszerzésének operátora úgy ábrázolható, mint mod, és ⌊⌋.

Maszk átfedés

A képletben az a rész egy módosítás, amely 2 nappal bővíti a januárt. Ha eltávolítjuk a 2-es tényezőt, és az 1-et 2-re cseréljük a számlálóban, akkor ez a képlet 2 napot ad januárhoz és 1 napot februárhoz, ami megadja a kulcsot egy nap hozzáadásához a szökőévben. Az érthetőség kedvéért a képletben köztes értéket használunk g(y)és mint y 2000-es (szökő) és 2001-es (nem szökőévet) használunk:

x 1 2 3 4 5 6 7 8 9 10 11 12
f(x, 2000) 31 29 31 30 31 30 31 31 30 31 30 31
f(x, 2001) 30 28 31 30 31 30 31 31 30 31 30 30

A nem szökőévek január kivételével minden hónapra érvényesek az értékek.

Ennek a bosszantó félreértésnek a kijavítására adjunk hozzá 1 napot januárhoz a már ismert képlet segítségével:


Vagy:

x 1 2 3 4 5 6 7 8 9 10 11 12
f(x, 2000) 31 29 31 30 31 30 31 31 30 31 30 31
f(x, 2001) 31 28 31 30 31 30 31 31 30 31 30 30

Következtetés

Ennek eredményeként egy sokkal körülményesebb, de univerzálisabb képletet kaptunk, amellyel egy adott év egy hónapjában a napok száma is kiszámítható:

f(x, y) függvény ( visszatérés 28 + ((x + Math.floor(x / 8)) % 2) + 2 % x + Math.floor((1 + (1 - (y % 4 + 2)) % (y % 4 + 1)) * ((y % 100 + 2) % (y % 100 + 1)) + (1 - (y % 400 + 2) % (y % 400 + 1))) / x) + Math.floor(1/x) - Math.floor(((1 - (y % 4 + 2) % (y % 4 + 1)) * ((y % 100 + 2) % (y % 100 + 1) )) + (1 - (y % 400 + 2) % (y % 400 + 1)))/x )
Példa a C# ideone.com/fANutz-ban.

1 . Nem tudom, hogyan kell ilyen mnemonikát használni, ezért megnéztem a jelet az interneten.
2 . „Az alapok” vagy a „Szabály sok kivétellel”, mint a legtöbb szabály.
3 . A római naptárban eredetileg a február volt az év utolsó hónapja, ezért értelemszerűen rövidebb, mint az összes többi. Az is logikus, hogy év végén adjunk hozzá vagy távolítsunk el egy napot, így annak hossza változó.

Upd. 1:
Az első rész alternatív fordítása in

A Kontur.Accounting ingyenes online számológép segít Önnek, és megmondja, hány nap telt el két megadott dátum között. Ezen felül, ha igénye van, meg tudja számolni, hogy egy adott év vagy több év hány naptári, hétvégét vagy munkanapot (órát) tartalmaz.

Hány nap van a dátumok között? Utasítás

Egyszerűen be kell állítani egy konkrét kezdő és befejező napot, és a másodperc töredéke alatt árajánlatot kap. Az online számológép minden adatot függetlenül számít ki. Ha módosítja a hét eredeti napjait, az eredmény automatikusan újraszámításra kerül a szökőévek figyelembevételével.

Fontos: nem veheti ki a havi munkanapokat/órákat a tavalyi számításokból, és nem adhatja meg számításként – az adatok változhatnak. Ezért jobb, ha számológépet használ.

Tehát az eljárás a következő:

  1. A „Kezdő dátum” és „Befejezés dátuma” mezőben válassza ki a visszaszámlálás kezdő és befejező napját, amely 2013-tól kezdődik és 2018-ban a jövőben végződik.
  2. Állítsa be a napi munkaórák számát a következő mezőben. Alapértelmezés szerint ez a mező már 8 órára van beállítva (40 órás munkahét), de ezt a számot módosíthatja.
  3. A képernyő jobb oldalán a bannerben az eredmény látható: munkanapok, naptári napok és munkaidő a megadott dátumok között. Az eredményeket másolni kell, és el kell menteni a dokumentumba.

Mire használhatod a számológépet?

  1. A szerződések szerinti kötbér és késedelem kiszámítása
  2. Hogyan lehet megérteni egy erőforrás felhasználásának hatékonyságát és a felhasználás határidejét
  3. Hogyan kerüljük el, hogy véletlenül ütemezzünk be feladatokat egy hétvégére
  4. Mennyi idő van még hátra a határidőig

Példa:

Ön könyvelő. Az ügyvezető arra kérte Önt, hogy a következő percekben adjon meg adatokat arról, hogy a cég összes dolgozójának hány munkaórát kell februárban ledolgoznia. Könnyen meghatározhatja az alkalmazottak számát – a számok a szeme előtt vannak. De számolni kell az órák számát.... Hány nap van februárban? Szökőév ez? Milyen napokon voltak hétvégék? Hogyan határozható meg az ünnepnapok száma?

Megoldás: Csak használja a widgetünket. Minden információt automatikusan megkap, nincs rá szüksége asztali naptárakés számológépek.

Tetszett ez a számológép? Akkor próbálja ki a többi lehetőségünket

Kényelmes és kényelmes módon szeretne könyvelést vezetni, jelentéseket küldeni és számításokat végezni? egyszerű webszolgáltatás? Próbálja ki a Kontur.Accounting szolgáltatást 14 napig ingyen! Gyorsan megtanítjuk a szolgáltatás használatára, és válaszolunk minden kérdésére!



Kapcsolódó kiadványok