Съдържание
Днешната публикация в блога е посветена на определянето на разликата между две дати в Google Sheets. Ще видите много формули DATEDIF за броене на дни, месеци и години и ще научите как NETWORKDAYS се използва за броене само на работни дни, дори ако отпуските ви се основават на потребителски график.
Много потребители на електронни таблици смятат, че работата с дати е объркваща, ако не и изключително трудна. Но вярвате или не, има няколко удобни и прости функции за тази цел. DATEDIF и NETWORKDAYS са няколко от тях.
Функция DATEDIF в Google Sheets
Както се случва с функциите, имената им подсказват действието. Същото важи и за DATEDIF. То трябва да се чете като дата dif , а не с дата, ако и означава разлика в датите . Следователно DATEDIF в Google Sheets изчислява разликата между две дати.
Нека я разделим на части. Функцията изисква три аргумента:
=DATEDIF(start_date, end_date, unit)- start_date - дата, използвана като отправна точка. Тя трябва да бъде една от следните:
- самата дата в двойни кавички: "8/13/2020"
- препратка към клетка с дата: A2
- формула, която връща дата: ДАТА(2020, 8, 13)
- число, което означава конкретна дата и може да бъде интерпретирано като дата от Google Sheets, напр. 44056 представлява август 13, 2020 .
- end_date - дата, използвана като крайна точка. Тя трябва да бъде в същия формат като start_date .
- единица - се използва, за да укаже на функцията каква разлика да върне. Ето пълния списък на единиците, които можете да използвате:
- "D" - (съкращение от дни ) връща броя на дните между две дати.
- "M" - (месеци) броят на пълните месеци между две дати.
- "Y" - (години) броят на пълните години.
- "MD" - (дни без месеци) броят на дните след изваждане на цели месеци.
- "YD" - (дни без години) броят на дните след изваждане на цели години.
- "YM" - (месеци без години) броят на пълните месеци след изваждане на пълните години.
Забележка: Всички единици трябва да се поставят във формулите по същия начин, по който се появяват по-горе - в двойни кавички.
Сега нека обединим всички тези части и да видим как работят формулите DATEDIF в Google Sheets.
Изчисляване на дните между две дати в Google Таблици
Пример 1. Преброяване на всички дни
Имам малка таблица за проследяване на някои поръчки. Всички те са изпратени през първата половина на август - Дата на доставка - която ще бъде началната ми дата. Има и приблизителна дата на доставка - Срок за изпълнение .
Ще изчислявам дните - "D" - между датите на изпращане и датите на плащане, за да видя колко време е необходимо за пристигането на артикулите. Ето формулата, която трябва да използвам:
=DATEDIF(B2, C2, "D")
Въвеждам формулата DATEDIF в D2 и след това я копирам надолу по колоната, за да я приложа към други редове.
Съвет: Винаги можете да изчислите цялата колона наведнъж с една формула, като използвате ARRAYFORMULA:
=ArrayFormula(DATEDIF(B2:B13, C2:C13, "D"))
Пример 2. Броене на дни, като се игнорират месеците
Представете си, че между две дати има няколко месеца:
Как да преброите само дните, сякаш принадлежат на един и същи месец? Точно така: като пренебрегнете пълните месеци, които са минали. DATEDIF изчислява това автоматично, когато използвате "MD" единица:
=DATEDIF(A2, B2, "MD")
Функцията изважда изтеклите месеци и преброява оставащите дни.
Пример 3. Отчитане на дни без отчитане на години
Друга единица - "YD" - ще помага, когато между датите има повече от една година:
=DATEDIF(A2, B2, "YD")
Формулата първо изважда годините, а след това изчислява оставащите дни, сякаш принадлежат на същата година.
Преброяване на работните дни в Google Sheets
Има специален случай, когато трябва да преброите само работните дни в Google Sheets. Тук формулите DATEDIF няма да ви помогнат много. И вярвам, че ще се съгласите, че ръчното изваждане на почивните дни не е най-елегантният вариант.
За щастие, Google Sheets разполага с няколко не толкова вълшебни заклинания за това :)
Пример 1. Функция NETWORKDAYS
Първата от тях се нарича NETWORKDAYS. Тази функция изчислява броя на работните дни между две дати, като не включва почивните дни (събота и неделя) и дори празниците, ако е необходимо:
=NETWORKDAYS(start_date, end_date, [holidays])- start_date - дата, която се използва като отправна точка. Изисква се.
Забележка: Ако тази дата не е почивен ден, тя се счита за работен ден.
- end_date - дата, използвана като крайна точка. Изисква се.
Забележка: Ако тази дата не е почивен ден, тя се счита за работен ден.
- празници - Тази опция не е задължителна, когато трябва да посочите конкретни празници. Тя трябва да бъде диапазон от дати или числа, представляващи дати.
За да илюстрирам начина на работа, ще добавя списък с празници, които се провеждат между датите на изпращане и падеж:
И така, колона Б е началната ми дата, колона В - крайната дата. Датите в колона Д са празниците, които трябва да се вземат предвид. Ето как трябва да изглежда формулата:
=NETWORKDAYS(B2, C2, $E$2:$E$4)
Съвет. Ако ще копирате формулата в други клетки, използвайте абсолютни препратки към клетките за празници, за да избегнете грешки или неверни резултати. Или помислете за изграждане на формула за масив вместо това.
Забелязахте ли как броят на дните намаля в сравнение с формулите DATEDIF? Защото сега функцията автоматично изважда всички съботи, недели и два празника, които се провеждат в петък и понеделник.
Забележка. За разлика от DATEDIF в Google Sheets, NETWORKDAYS отчита start_day и end_day като работни дни, освен ако не са празници. Следователно D7 връща 1 .
Пример 2. NETWORKDAYS.INTL за Google Sheets
Ако имате персонализиран график за уикендите, ще се възползвате от друга функция: NETWORKDAYS.INTL. Тя ви позволява да пресмятате работните дни в Google Sheets въз основа на лично зададени уикенди:
=NETWORKDAYS.INTL(start_date, end_date, [weekend], [holidays])- start_date - дата, която се използва като отправна точка. Изисква се.
- end_date - дата, използвана като крайна точка. Изисква се.
Забележка: NETWORKDAYS.INTL в Google Sheets също се брои start_day и end_day като работни дни, освен ако не са празници.
- уикенд - Ако не се включи, събота и неделя се считат за почивни дни. Но можете да промените това по два начина:
- Маски .
Съвет. Този начин е идеален, когато почивните дни са разпръснати през цялата седмица.
Маската е седемцифрен модел от 1 и 0. 1 означава уикенд, а 0 - работен ден. Първата цифра в модела винаги е понеделник, а последната - неделя.
Например, "1100110" означава, че работите в сряда, четвъртък, петък и събота.
Забележка: Маската трябва да бъде поставена в двойни кавички.
- Числа .
Използвайте едноцифрени числа (1-7), които обозначават двойка почивни дни:
Номер Уикенд 1 събота, неделя 2 неделя, понеделник 3 Понеделник, вторник 4 Вторник, сряда 5 Сряда, четвъртък 6 Четвъртък, петък 7 Петък, събота Или работете с двуцифрени числа (11-17), които означават един ден за почивка в рамките на една седмица:
Номер Ден на уикенда 11 Неделя 12 Понеделник 13 Вторник 14 Сряда 15 Четвъртък 16 Петък 17 Събота
- Маски .
- празници - също не е задължителна и се използва за посочване на празници.
Тази функция може да ви се стори сложна заради всички тези числа, но ви препоръчвам да опитате.
Първо, просто си изяснете почивните дни. Неделя и Понеделник . След това изберете начина, по който да обозначите почивните дни.
Ако използвате маска, тя ще бъде следната - 1000001 :
=NETWORKDAYS.INTL(B2, C2, "1000001")
Но тъй като имам два поредни почивни дни, мога да използвам число от таблиците по-горе, 2 в моя случай:
=NETWORKDAYS.INTL(B2, C2, 2)
След това просто добавете последния аргумент - препратка към почивките в колона Е, и формулата е готова:
=NETWORKDAYS.INTL(B2, C2, 2, $E$2:$E$4)
Таблици на Google и разлика в датите в месеци
Понякога месеците имат по-голямо значение от дните. Ако това е така и предпочитате да получавате разликата в датите в месеци, а не в дни, позволете на DATEDIF от Google Sheets да свърши тази работа.
Пример 1. Броят на пълните месеци между две дати
Схемата е една и съща: start_date първо, а след това end_date и "M" - която е в продължение на месеци - като последен аргумент:
=DATEDIF(A2, B2, "M")
Съвет: Не забравяйте за функцията ARRAUFORMULA, която може да ви помогне да преброите месеците на всички редове наведнъж:
=ARRAYFORMULA(DATEDIF(A2:A13, B2:B13, "M"))
Пример 2. Броят на месеците, които пренебрегват годините
Може да не е необходимо да броите месеците през всички години между началната и крайната дата. А DATEDIF ви позволява да го направите.
Просто използвайте "YM" и формулата първо ще извади цели години, а след това ще пресметне броя на месеците между датите:
=DATEDIF(A2, B2, "YM")
Изчисляване на годините между две дати в Google Таблици
Последното (но не и по важност) нещо, което ще ви покажа, е как DATEDIF на Google Sheets изчислява разликата в датите в години.
Ще изчисля броя на годините, от които двойките са женени, въз основа на датата на сватбата им и днешната дата:
Както може би вече сте се досетили, ще използвам "Y" единица за това:
=DATEDIF(A2, B2, "Y")
Всички тези формули DATEDIF са първите, които трябва да опитате, когато става въпрос за изчисляване на дни, месеци и години между две дати в Google Sheets.
Ако вашият случай не може да бъде решен с тези методи или ако имате въпроси, ви насърчавам да ги споделите с нас в раздела за коментари по-долу.