在Excel中用WEEKDAY公式来获取星期几、周末和工作日

  • Share This
Michael Brown

如果你正在寻找一个从日期中获取星期的Excel函数,那么你已经找到了正确的页面。 本教程将教你如何使用Excel中的WEEKDAY公式将日期转换为工作日名称,过滤,突出显示和计算周末或工作日,以及更多。

在Excel中,有多种处理日期的函数。 周日函数(WEEKDAY)对计划和安排特别有用,例如,确定一个项目的时间框架,并自动从总数中去除周末。 因此,让我们逐一运行这些例子,看看它们如何帮助你应对Excel中各种与日期有关的任务。

    WEEKDAY--Excel函数中的星期

    Excel的WEEKDAY函数是用来返回从一个给定日期开始的一周中的某一天。

    结果是一个整数,默认范围是1(周日)到7(周六)。 如果你的业务逻辑需要一个不同的枚举,你可以配置公式,从一周中的任何其他日子开始计算。

    WEEKDAY函数在Excel 365到2000的所有版本中都可用。

    WEEKDAY函数的语法如下。

    WEEKDAY(serial_number, [return_type])

    在哪里?

    序号 (required) - 你想转换为工作日数字的日期,它可以作为代表日期的序列号,作为Excel理解的格式的文本字符串,作为对包含日期的单元格的引用,或者通过使用DATE函数提供。

    返回_类型 (可选) - 决定使用一周中的哪一天作为第一天。 如果省略,默认为太阳-星期六一周。

    以下是所有支持的列表 返回类型 价值。

    返回_类型 返回的数量
    1或省略 从1(星期日)至7(星期六)。
    2 从1(星期一)至7(星期日)
    3 从0(周一)到6(周日)。
    11 从1(星期一)至7(星期日)
    12 从1(星期二)至7(星期一)。
    13 从1(星期三)至7(星期二)。
    14 从1(星期四)至7(星期三)。
    15 从1(星期五)至7(星期四)。
    16 从1(星期六)至7(星期五)。
    17 从1(星期日)至7(星期六)。

    注:该 返回类型 数值11至17是在Excel 2010中引入的,因此它们不能在早期版本中使用。

    Excel中的基本WEEKDAY公式

    首先,让我们看看如何使用WEEKDAY公式的最简单形式,从日期中获得日号。

    例如,要从C4中的日期中获得工作日,默认为周日-周六的一周,公式为:。

    =WEEKDAY(C4)

    如果你有一个代表日期的序列号(例如由DATEVALUE函数带来的),你可以在公式中直接输入这个数字。

    =weekday(45658)

    另外,你也可以直接在公式中以文本字符串的形式输入日期,并加上引号。 只要确保使用Excel期望并能解释的日期格式。

    =weekday("1/1/2025")

    或者,使用DATE函数,以100%可靠的方式提供源日期。

    =weekday(date(2025, 1,1))

    要使用默认的日-日以外的日期映射,请在第二个参数中输入适当的数字。 例如,要从星期一开始计算日期,公式为:。

    =weekday(c4, 2)

    在下图中,所有的公式都返回2025年1月1日对应的星期,在Excel内部存储为数字45658。 根据第二个参数中设置的值,公式输出不同的结果。

    乍一看,似乎WEEKDAY函数返回的数字没有什么实际意义。 但让我们从不同的角度来看,并讨论一些解决现实生活任务的公式。

    如何将Excel日期转换为工作日名称

    根据设计,Excel的WEEKDAY函数以数字形式返回星期几。 要把星期几变成日期名称,请使用TEXT函数。

    为了获得 全天的名字 ,使用 "ddd "格式代码。

    TEXT(WEEKDAY( 日期 ), "dddd")

    返回 缩写的日名 ,格式代码为 "ddd"。

    TEXT(WEEKDAY( 日期 ), "ddd")

    例如,要将A3中的日期转换为工作日的名称,公式为:。

    =TEXT(WEEKDAY(A3), "ddd")

    =TEXT(WEEKDAY(A3), "ddd")

    另一个可能的解决方案是将WEEKDAY与CHOOSE函数一起使用。

    例如,要从A3的日期中得到一个缩写的工作日名称,公式如下。

    =CHOOSE(WEEKDAY(A3), "Sun", "Mon", "Tus", "Wed", "Thu", "Fri", "Sat")

    这里,WEEKDAY返回一个从1(太阳)到7(星期六)的序号,CHOOSE从列表中选择相应的值。 由于A3(星期三)中的日期对应于4,CHOOSE输出 "Wed",这是列表中的第四个值。

    虽然CHOOSE公式的配置稍显繁琐,但它提供了更大的灵活性,让你以任何你想要的格式输出日名。 在上面的例子中,我们显示的是缩写的日名。 相反,你可以提供全名、自定义缩写或甚至不同语言的日名。

    提示:将日期转换为工作日名称的另一个简单方法是应用自定义日期格式。 例如,代码格式 "ddd, mmmm d, yyyy "将使日期显示为" 2025年1月3日,星期五 ",而 "ddd "将只显示" 星期五 ".

    用Excel WEEKDAY公式查找和过滤工作日和周末

    在处理一长串日期时,你可能想知道哪些是工作日,哪些是周末。

    确定周末和工作日 在Excel中,用嵌套的WEEKDAY函数建立一个IF语句。 例如。

    =IF(WEEKDAY(A3, 2)<6, "工作日", "周末")

    这个公式进入A3单元格,并根据需要向下复制到多个单元格。

    在WEEKDAY公式中,你设置了 返回类型 所以,如果工作日的数字小于6(周一到周五),该公式就会返回 "工作日",否则就会返回 "周末"。

    过滤周末或工作日 将Excel过滤器应用于你的数据集( 数据 标签> 过滤器 )并选择 "周末 "或 "工作日"。

    在下面的截图中,我们将工作日过滤掉了,所以只有周末是可见的。

    如果你的组织的某些区域办事处按照不同的时间表工作,休息日不在周六和周日,你可以很容易地调整WEEKDAY公式以满足你的需要,指定一个不同的 返回类型 .

    例如,为了治疗 星期六 星期一 作为周末,设置 返回类型 到12,所以你会得到 "星期二(1)到星期一(7)"的星期类型。

    =IF(WEEKDAY(A2, 12)<6, "工作日", "周末")

    如何在Excel中突出显示周末工作日和

    为了一目了然地发现工作表中的周末和工作日,你可以让它们自动以不同的颜色显示出来。 为此,使用前面例子中讨论的工作日/周末公式与Excel条件格式化。 由于条件是隐含的,我们只需要核心的WEEKDAY函数而不需要IF包装。

    亮点周末 (周六和周日)。

    =WEEKDAY($A2, 2)<6

    亮点工作日 (周一至周五)。

    =WEEKDAY($A2, 2)>5

    其中A2是选定区域的左上角单元格。

    要设置条件格式化规则,步骤如下。

    1. 选择日期列表(在我们的例子中是A2:A15)。
    2. 关于 首页 选项卡,在 风格 组,点击 条件性格式化 > 新规则 .
    3. 新的格式化规则 对话框,选择 使用一个公式来决定哪些单元格需要格式化 .
    4. 格式化数值,其中该公式 为真框,输入上述周末或工作日的公式。
    5. 点击 格式 按钮并选择所需的格式。
    6. 点击 认可 两次,以保存更改并关闭对话窗口。

    关于每个步骤的详细信息,请参见如何用公式设置条件格式化。

    结果看起来很不错,不是吗?

    如何在Excel中计算工作日和周末

    要想得到日期列表中的工作日或周末的数量,可以使用WEEKDAY函数与SUM结合使用。 例如::

    计算周末 ,D3中的公式是。

    =SUM(--(WEEKDAY(A3:A20, 2)>5))

    计算工作日 ,D4中的公式采取这种形式。

    =SUM(--(WEEKDAY(A3:A20, 2)<6))

    在原生处理数组的Excel 365和Excel 2021中,这可以作为一个普通的公式,如下图所示。 在Excel 2019和更早的版本中,按Ctrl + Shift + Enter使其成为一个数组公式。

    这些公式是如何工作的。

    WEEKDAY函数带有 返回类型 设置为2,为A3:A20范围内的每个日期返回一个从1(周一)到7(周日)的天数。 逻辑表达式检查返回的数字是否大于5(周末)或小于6(工作日)。 这个操作的结果是一个TRUE和FALSE值的数组。

    双重否定(--)将逻辑值胁迫为1和0,然后SUM函数将它们相加。 鉴于1(TRUE)代表要计算的天数,0(FALSE)代表要忽略的天数,你会得到想要的结果。

    提示:要计算出 两个日期之间的工作日 ,使用NETWORKDAYS或NETWORKDAYS.INTL函数。

    如果是工作日,那么,如果是周六或周日,那么

    最后,让我们来讨论一个更具体的案例,说明如何确定一周中的哪一天,如果是周六或周日,那么就做一些事情,如果是工作日,那么就做一些其他事情。

    IF(WEEKDAY( 电池 ,2)>5。 如果_周末_那么 , 如果_weekday_then )

    假设你要为那些在休息日做了一些额外工作的员工计算报酬,所以你需要对工作日和周末适用不同的报酬率。 这可以用下面的IF语句完成。

    • 逻辑_测试 参数,嵌套WEEKDAY函数,检查给定的一天是工作日还是周末。
    • value_if_true 论点,将工作时间乘以周末费率(G4)。
    • value_if_false 参数,将工作时数乘以工作日率(G3)。

    D3中的完整公式采取这种形式。

    =IF(WEEKDAY(B3, 2)>5, C3*$G$4, C3*$G$3)

    为了使公式能正确地复制到下面的单元格,请确保用$符号锁定速率单元格地址(如$G$4)。

    WEEKDAY功能不工作

    一般来说,WEEKDAY公式可能返回两个常见的错误。

    #VALUE!如果不是这样,就会发生错误。

    • 序号 返回类型 为非数字型。
    • 序号 不在支持的日期范围内(1900到9999)。

    #NUM!错误发生在 返回类型 不在允许的范围内(1-3或11-17)。

    这就是如何在Excel中使用WEEKDAY函数来操作星期。 在下一篇文章中,我们将探讨Excel函数如何操作更大的时间单位,如周、月和年。 请继续关注并感谢您的阅读!

    供下载的实践工作手册

    Excel中的WEEKDAY公式--实例(.xlsx文件)

    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.