跳至主要内容

Kutools for Office — 一套工具,五种功能。事半功倍。

如何在Excel中突出显示周末和节假日?

Author: Xiaoyang Last Modified: 2025-08-22

在Excel中处理日常记录表时,通常需要将周末或公共假期与普通工作日区分开来,以便于数据审查。这种高亮显示对于考勤表、项目时间表或业务日志特别有用,区分工作日和非工作日有助于视觉管理和后续分析。Excel提供了多种方法来实现这一点,包括条件格式、自定义辅助公式列或使用VBA进行更高级的自动化。选择合适的解决方案可能取决于表格布局、新数据添加频率以及节假日列表是否经常变化。


使用条件格式突出显示周末和节假日

Excel的条件格式功能可以让你自动突出显示日期记录中的周末(通常是周六和周日)和节假日,而无需在数据中写入任何计算。这种方法适用于频繁查看或更新工作表的用户,并希望当数据或节假日发生变化时,能即时更新非工作日的颜色提示。

要为周末和节假日设置条件格式,请按照以下说明操作:

1. 选择要突出显示的日期范围。 

2. 转到“开始”选项卡,点击“条件格式”,然后选择“新建规则”以打开规则编辑器。见截图:

click Home > Conditional Formatting > New Rule

3. 在“新建格式规则”对话框中:

  • 从规则类型列表中选择“使用公式确定要设置格式的单元格”。
  • 在公式输入框中,输入以下公式:=NETWORKDAYS($A2,$A2,$F$2:$F$6)=0
  • 点击“格式”按钮设置高亮样式。
注意:在此公式中,$A2 指代您选择的第一个日期单元格(如果起始单元格不同,请相应调整)。$F$2:$F$6 应包含您的节假日列表(请根据实际的节假日范围进行编辑)。NETWORKDAYS 函数仅将周一至周五视为工作日。如果您使用不同的周末安排或只想包括特定天数,则可能需要自定义公式。

specify the options in the dialog box

4. 在“设置单元格格式”窗口中,切换到“填充”选项卡并选择一个背景颜色来区分非工作日和普通工作日,以便快速视觉参考。

under the Fill tab, specify a color for highlighting the rows

5. 单击两次“确定”关闭对话框。所选区域内的任何匹配周末或列出的节假日都会自动显示所选高亮。可以通过编辑节假日范围随时更新节假日,格式也会相应更新。

the rows contain the weekends and holidays are shaded

提示和故障排除:如果高亮未显示,请仔细检查日期格式(公式适用于真实的Excel日期);不匹配可能导致规则失败。如果应用于多个列,请调整公式的单元格引用。此外,如果数据跨越多年,请根据需要更新节假日列表以反映正确的非工作日。

优点: 无需额外列或手动操作;随着表格增长或节假日列表的变化完全动态调整。
潜在限制: 条件格式每个工作表有最大规则数量限制(很少达到),过于复杂的公式可能会在大型数据集中降低工作簿性能。

a screenshot of kutools for excel ai

使用 Kutools AI 解锁 Excel 魔法

  • 智能执行:执行单元格操作、分析数据和创建图表——所有这些都由简单命令驱动。
  • 自定义公式:生成量身定制的公式,优化您的工作流程。
  • VBA 编码:轻松编写和实现 VBA 代码。
  • 公式解释:轻松理解复杂公式。
  • 文本翻译:打破电子表格中的语言障碍。
通过人工智能驱动的工具增强您的 Excel 能力。立即下载,体验前所未有的高效!

Excel公式 – 使用辅助列标记周末和节假日

对于希望对颜色编码有更多控制权或希望按工作日或非工作日排序/筛选的用户,添加带有公式的辅助列是一个可靠的选择。此技术清楚地标记每一行为周末、节假日或普通日,可用于筛选、手动格式化或汇总数据。
此方法在单纯使用颜色编码不足以解决问题的情况下特别有用,或者当你想直接统计周末/节假日总数时。

假设您的日期在列A中从第2行开始,节假日列表在F2:F6。在日期列旁边插入一个新列,并输入标题如“日期类型”。

1. 在B2单元格(辅助列)中输入以下公式:

=IF(OR(WEEKDAY(A2,2)>=6,COUNTIF($F$2:$F$6,A2)>0),"Weekend/Holiday","Workday")

该公式对每个日期进行两项检查:
- WEEKDAY(A2,2)>=6:将周六(6)和周日(7)视为周末(如果您的周末不同,请相应调整)。
- COUNTIF($F$2:$F$6,A2)>0:检查日期是否与节假日列表中的某一天匹配。

2. 然后向下拖动填充柄以将公式应用到其他行。一旦填充完成,可以通过“周末/假日”筛选表格以隔离或手动高亮这些行。如果需要着色,还可以基于此列应用条件格式。

提示:如果您的周末不同,请更改WEEKDAY逻辑(例如,使用1代表星期日或特定数字代表您的地区)。始终确保节假日列表是最新的。如果数据范围发生变化,请根据需要重新应用填充/复制。

优点: 辅助列允许更多的自定义过滤和报告。根据需要轻松识别、计数或着色。
缺点: 除非与进一步的条件格式结合使用,否则需要在数据中增加一列并手动填充颜色。


VBA代码 – 自动为周末和节假日着色

当您需要频繁更新日期范围,或者希望自动执行超出公式和条件格式所能完成的突出显示周末和节假日的过程时,使用简单的VBA宏非常高效。这对于管理较长列表或重复生成工作表的用户来说是理想的选择。

通过宏,Excel会根据您选择的日期范围和节假日列表立即为周末和节假日日期着色。您可以根据需要在代码中更改高亮颜色,并在数据发生变化时重新运行宏。

1. 单击“开发工具”>“Visual Basic”。在Microsoft Visual Basic for Applications窗口中,选择“插入”>“模块”。

2. 将以下代码复制并粘贴到新创建的模块中:

Sub ShadeWeekendsAndHolidays()
    Dim rngDates As Range
    Dim rngHolidays As Range
    Dim cell As Range
    Dim xTitleId As String
    
    xTitleId = "KutoolsforExcel"
    On Error Resume Next
    Set rngDates = Application.InputBox("Select the range with dates:", xTitleId, Selection.Address, Type:=8)
    Set rngHolidays = Application.InputBox("Select the range with holiday dates:", xTitleId, , Type:=8)
    On Error GoTo 0
    
    If rngDates Is Nothing Then Exit Sub
    If rngHolidays Is Nothing Then Exit Sub
    
    Application.ScreenUpdating = False
    
    For Each cell In rngDates
        If IsDate(cell.Value) Then
            If Weekday(cell.Value, vbMonday) >= 6 Or Not IsError(Application.Match(CDbl(cell.Value), rngHolidays, 0)) Then
                cell.Interior.Color = RGB(255, 199, 206) ' Light red fill; adjust as needed
            Else
                cell.Interior.ColorIndex = xlNone ' Remove fill from regular days
            End If
        End If
    Next cell
    
    Application.ScreenUpdating = True
End Sub

3. 按F5键运行此代码,将提示您选择日期单元格,然后选择节假日单元格列表。按照屏幕上的指示进行操作。

该宏突出显示周末(周六/周日)和节假日(根据您的列表),并用填充颜色表示。如果需要,可以在代码中调整RGB(255,199,206)以使用您喜欢的颜色。

提示:
如果不小心选择了错误的范围,只需重新运行宏即可。所选范围内的所有现有填充都将重置为不匹配的单元格。
确保您的日期和节假日使用正确的Excel日期值(而不是文本)。

优点: 节省重复任务的时间,并提供极大的灵活性。无需手动重新应用格式。
缺点: 必须为工作簿启用宏;不熟悉VBA的用户应在运行前保存并在备份副本上尝试。


更多相关文章:

  • 合并单元格的交替行着色
  • 在大数据中为交替行设置不同颜色以方便我们扫描数据是非常有用的,但有时您的数据中可能存在一些合并单元格。为了按下面截图所示为合并单元格的行交替着色,如何在Excel中解决这个问题呢?
  • 突出显示近似匹配查找
  • 在Excel中,我们可以使用Vlookup函数快速轻松地获取近似匹配值。但是,您是否尝试过根据行和列数据获取近似匹配,并从原始数据范围中突出显示近似匹配,如下方截图所示?本文将讨论如何在Excel中解决这个任务。
  • 基于下拉列表突出显示行
  • 本文将讨论如何基于下拉列表突出显示行,以下方截图为例,当我从E列的下拉列表中选择“进行中”时,我需要用红色突出显示该行;当我从下拉列表中选择“已完成”时,我需要用蓝色突出显示该行;当我选择“未开始”时,将使用绿色突出显示该行。

最佳Office办公效率工具

🤖 Kutools AI 助手:以智能执行为基础,彻底革新数据分析 |代码生成 |自定义公式创建|数据分析与图表生成 |调用Kutools函数……
热门功能:查找、选中项的背景色或标记重复项 | 删除空行 | 合并列或单元格且不丢失数据 | 四舍五入……
高级LOOKUP多条件VLookup|多值VLookup|多表查找|模糊查找……
高级下拉列表快速创建下拉列表 |依赖下拉列表 | 多选下拉列表……
列管理器添加指定数量的列 | 移动列 | 切换隐藏列的可见状态 | 比较区域与列……
特色功能网格聚焦 |设计视图 | 增强编辑栏 | 工作簿及工作表管理器 | 资源库(自动文本) | 日期提取 | 合并数据 | 加密/解密单元格 | 按名单发送电子邮件 | 超级筛选 | 特殊筛选(筛选粗体/倾斜/删除线等)……
15大工具集12项 文本工具添加文本删除特定字符等)|50+种 图表 类型甘特图等)|40+实用 公式基于生日计算年龄等)|19项 插入工具插入二维码从路径插入图片等)|12项 转换工具小写金额转大写汇率转换等)|7项 合并与分割工具高级合并行分割单元格等)| ……
Kutools支持多种语言——可选择英语、西班牙语、德语、法语、中文等40多种语言!

通过Kutools for Excel提升您的Excel技能,体验前所未有的高效办公。 Kutools for Excel提供300多项高级功能,助您提升效率并节省时间。 点击此处获取您最需要的功能……


Office Tab为Office带来多标签界面,让您的工作更加轻松

  • 支持在Word、Excel、PowerPoint中进行多标签编辑与阅读
  • 在同一个窗口的新标签页中打开和创建多个文档,而不是分多个窗口。
  • 可提升50%的工作效率,每天为您减少数百次鼠标点击!

所有Kutools加载项,一键安装

Kutools for Office套件包含Excel、Word、Outlook和PowerPoint的插件,以及Office Tab Pro,非常适合跨Office应用团队使用。

Excel Word Outlook Tabs PowerPoint
  • 全能套装——Excel、Word、Outlook和PowerPoint插件+Office Tab Pro
  • 单一安装包、单一授权——数分钟即可完成设置(支持MSI)
  • 协同更高效——提升Office应用间的整体工作效率
  • 30天全功能试用——无需注册,无需信用卡
  • 超高性价比——比单独购买更实惠