谷歌表中的DATEDIF和NETWORKDAYS:日、月、年的日期差异

  • Share This
Michael Brown

今天的博文是关于在谷歌表格中计算两个日期之间的差异。 你会看到很多DATEDIF公式来计算日、月和年,并学习NETWORKDAYS是如何用来只计算工作日的,即使你的假期是基于自定义时间表。

很多电子表格的用户发现日期的处理很混乱,甚至非常困难。 但信不信由你,有几个方便而直接的函数可以达到这个目的。 DATEDIF和NETWORKDAYS就是其中的两个。

    谷歌表格中的DATEDIF函数

    就像函数一样,它们的名字暗示着动作。 DATEDIF也是如此。 它必须被理解为 日期差异 ,而不是 日期,如果 ,它代表着 日期差异 因此,谷歌表的DATEDIF计算两个日期之间的日期差。

    让我们把它分解成碎片。 该函数需要三个参数。

    =DATEDIF(start_date, end_date, unit)
    • 开始日期 - 用作起点的日期,必须是下列之一。
      • 一个日期本身在双引号中。 "8/13/2020"
      • 一个对有日期的单元格的引用。 A2
      • 一个返回日期的公式。 日期(2020, 8, 13)
      • 一个代表特定日期的数字,并且可以被Google Sheets解释为日期,例如。 44056 代表 2020年8月13日 .
    • 结束日期 - 一个用作端点的日期。 它的格式必须与 开始日期 .
    • 单位 - 这里有一个你可以使用的单位的完整列表。
      • "D" - (简称为 ) 返回两个日期之间的天数。
      • "M" - 月)两个日期之间的整月数。
      • "Y" - 年)的整数年。
      • "MD" - (天数无视月数)减去整月后的天数。
      • "YD" - 天数无视年数)减去整年后的天数。
      • "YM" - 月忽略年)减去整年后的完整月数。

    注意:所有单位都必须按照上面的方式放入公式中--用双引号。

    现在让我们把所有这些部分拼在一起,看看DATEDIF公式是如何在谷歌表格中工作的。

    在谷歌表格中计算两个日期之间的天数

    例1.计算所有天数

    我有一个小表来跟踪一些订单。 所有的订单都在8月上半月发货了----。 发货日期 - 还有一个大概的交货日期 到期日 .

    我打算计算天数------。 "D" - 以下是我应该使用的公式。

    =datedif(b2, c2, "d")

    我把DATEDIF公式输入到D2,然后把它复制到下一列,应用到其他行。

    提示:你总是可以用ARRAYFORMULA的单个公式一次性计算整个列。

    =ArrayFormula(DATEDIF(B2:B13, C2:C13, "D") )

    例2.计算天数,忽略月数

    想象一下,两个日期之间有几个月的时间。

    你如何只计算天数,就像它们属于同一个月一样? 没错:忽略已经过去的整月。 当你使用DATEDIF时,DATEDIF会自动计算。 "MD" 单位。

    =datedif(a2, b2, "md")

    该函数减去已过去的月份,并计算剩余的天数。

    例3.计算天数,忽略年份

    另一个单位--"YD"--将在日期间隔超过一年的情况下提供帮助。

    =datedif(a2, b2, "yd")

    该公式将首先减去年份,然后计算剩余天数,就像它们属于同一年一样。

    在谷歌表格中计算工作天数

    有一种特殊情况,当你需要在谷歌表格中只计算工作日时。 DATEDIF公式在这里不会有太大帮助。 而且我相信你会同意,手动减去周末并不是最优雅的选择。

    幸运的是,谷歌表有几个不那么神奇的法术来解决这个问题:)

    例1.NETWORKDAYS函数

    第一个被称为NETWORKDAYS,这个函数计算两个日期之间的工作日数,不包括周末(周六和周日),如果有必要,甚至包括节假日。

    =NETWORKDAYS(start_date, end_date, [节假日])
    • 开始日期 - 作为起点的日期。 需要。

      注意:如果该日期不是假日,则算作工作日。

    • 结束日期 - 一个用作端点的日期。 需要。

      注意:如果该日期不是假日,则算作工作日。

    • 假期 - 这个是可选的,当你需要指出特定的假期时。 它必须是一个日期范围或代表日期的数字。

    为了说明它是如何工作的,我将添加一个发生在发货日期和到期日期之间的假期列表。

    所以,B列是我的开始日期,C列是结束日期。 E列的日期是要考虑的假期。 以下是公式的样子。

    =networkdays(b2, c2, $e$2:$e$4)

    提示:如果你要将公式复制到其他单元格,请使用绝对的单元格引用,以避免错误或不正确的结果。 或者考虑建立一个数组公式来代替。

    你是否注意到,与DATEDIF公式相比,天数减少了? 因为现在该函数自动减去了所有周六、周日和两个发生在周五和周一的假期。

    注意:与谷歌表格中的DATEDIF不同,NETWORKDAYS计算的是 开始日期 结束日 因此,D7返回的是 1 .

    例2.谷歌表的NETWORKDAYS.INTL

    如果你有一个自定义的周末时间表,你会从另一个功能中受益:NETWORKDAYS.INTL.它可以让你根据个人设定的周末来计算谷歌表的工作日。

    =NETWORKDAYS.INTL(start_date, end_date, [周末], [假期])
    • 开始日期 - 作为起点的日期。 需要。
    • 结束日期 - 一个用作端点的日期。 需要。

      注:谷歌表格中的NETWORKDAYS.INTL也计算在内。 开始日期 结束日 除非是节假日,否则都是工作日。

    • 周末 - 如果省略,周六和周日将被视为周末。 但你可以用两种方法改变这一点。
      • 面具 .

        提示:当你的休息日分散在一周内时,这种方式是完美的。

        掩码是一个由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)

    然后简单地添加最后一个参数--参考E列的假期,公式就准备好了。

    =networkdays.intl(b2, c2, 2, $e$2:$e$4)

    谷歌表格和月度的日期差异

    有时,月比天更重要。 如果这对你来说是真的,而且你更喜欢以月而不是以天为单位获得日期差,那么就让谷歌表的DATEDIF来完成这项工作。

    例1.两个日期之间的整月数

    演习是一样的: 开始日期 首先进行,其次是 结束日期 "M" - 矗立了几个月的--作为最后的论据。

    =datedif(a2, b2, "m")

    提示:不要忘记ARRAUFORMULA函数,它可以帮助你一次性计算所有行的月份。

    =arrayformula(dateif(a2:a13, b2:b13, "m"))

    例2.无视年的月数

    你可能不需要在开始和结束日期之间的所有年份中计算月数。 而DATEDIF让你做到这一点。

    只要使用 "YM" 单位,公式会先减去整数年,然后计算日期之间的月数。

    =datedif(a2, b2, "ym")

    在谷歌表格中计算两个日期之间的年份

    最后(但不是最不重要的)要告诉你的是,谷歌表的DATEDIF是如何计算日期的年差的。

    我将根据夫妇的结婚日期和今天的日期来计算他们结婚的年数。

    正如你可能已经猜到的,我将使用 "Y" 节目组为其提供的服务。

    =datedif(a2, b2, "y")

    所有这些DATEDIF公式都是在谷歌表格中计算两个日期之间的日、月、年时首先要尝试的。

    如果你的案件不能通过这些解决,或者你有任何问题,我鼓励你在下面的评论部分与我们分享。

    Michael Brown is a dedicated technology enthusiast with a passion for simplifying complex processes using software tools. With more than a decade of experience in the tech industry, he has honed his skills in Microsoft Excel and Outlook, as well as Google Sheets and Docs. Michael's blog is dedicated to sharing his knowledge and expertise with others, providing easy-to-follow tips and tutorials for improving productivity and efficiency. Whether you're a seasoned professional or a beginner, Michael's blog offers valuable insights and practical advice for getting the most out of these essential software tools.