如何在Excel中筛选工作日和周末?
在数据分析或考勤跟踪中,您可能经常需要从Excel中的长列表里筛选出周末或工作日日期,例如仅突出显示周六和周日以计算加班,或者专注于工作日来分析工作时间。当日期以标准日期格式(如2012年6月7日)显示时,无法一眼看出每个日期是周末还是工作日,手动筛选不仅效率低下,还容易出错。本文提供了几种实用方法,快速区分并筛选工作日或周末,包括内置的Excel方法、有用的公式、VBA自动化,以及像Kutools for Excel这样的用户友好型插件。通过学习和应用这些技巧,您可以简化工作流程,减少手动排序,并降低日期分析任务中的意外错误分类。
➤ 使用函数筛选工作日和周末
➤ 使用Kutools for Excel筛选工作日和周末
➤ 使用Kutools for Excel的超级筛选工具筛选工作日和周末
➤ 使用VBA宏自动筛选或高亮显示工作日或周末
➤ 使用高级筛选与自定义条件筛选工作日和周末
使用函数筛选工作日和周末
Microsoft Excel的WEEKDAY函数返回1到7之间的序列号,表示给定日期的星期几。默认情况下(不使用第二个参数),1代表星期日,7代表星期六。例如,如果日期是星期日,该函数将返回1;如果是星期五,则结果为6。这使您可以识别周末或工作日,并相应地进行筛选。
此方法适用于大多数通用数据表,并为您提供完全控制权,但需要辅助列。
步骤1:在日期列旁边的一个空白列中(例如单元格C2),输入以下公式以获取星期几索引:
=WEEKDAY(B2)
步骤2:按Enter键,然后拖动填充柄向下应用公式到其余的日期行。每一行现在都会显示一个星期数字。
步骤3:转到功能区上的“数据”>“筛选”,启用筛选功能。如果您首先选择数据集内的某个单元格,Excel会自动选择数据块。
步骤4: 下拉箭头 将出现在每列的标题中。点击辅助列(例如“星期几”)上的筛选箭头,勾选 1 和 7 以筛选出周末(星期日和星期六)。
步骤5:在筛选菜单中点击“确定”。Excel现在只显示与您的选择匹配的周末日期(1和7)。
注意:如果您只想筛选工作日(星期一至星期五),请勾选2、3、4、5和6。
提示和提醒:
- 如果您的地区一周从不同的日子开始,请使用
=WEEKDAY(B2, 2)
,这样星期一=1,星期日=7,并相应调整筛选条件。 - 日期列中的空白单元格可能会返回意外结果——如有必要,请清理数据。
- 始终将公式拖动到所有行,以确保筛选的准确性。
使用Kutools for Excel筛选工作日和周末
使用Excel内置方法通常需要辅助列来区分工作日和周末。而Kutools for Excel提供了一个更直接的解决方案:您可以直接使用日期格式显示星期名称,或将它们转换为纯文本以便更容易筛选。Kutools中的“应用日期格式”工具让这一过程变得快速简便。
Kutools for Excel - 包含超过 300 个 Excel 必备工具。永久免费享受 AI 功能!立即下载!
步骤1:选择要转换的日期范围。
步骤2:转到Kutools选项卡,点击“格式”>“应用日期格式”。将弹出一个对话框。
步骤3:在对话框中,从日期格式列表中选择“Wed”或“Wednesday”格式,以显示星期名称。
步骤4:点击“确定”。所选日期现在将以星期名称显示。如果您希望将它们作为文本而不是日期进行筛选,请点击Kutools > 转为实际值,将格式化结果转换为静态文本。
步骤5: 转到 数据 > 筛选。在筛选下拉菜单中,勾选 并勾选 周六 和 周日 以仅显示周末。这种方法比使用星期数字更加直观清晰。
步骤6:点击“确定”。筛选结果将仅显示周末(周六和周日)。
注意事项:
- 要在步骤5中仅筛选工作日,请勾选周一、周二、周三、周四和周五。
- 为了保留原始日期值,在应用格式和筛选之前,请考虑将它们复制到辅助列中。
- “应用日期格式”和“转为实际值”工具在准备用于报告或导出的干净、易读的星期数据时非常有用。
了解更多关于这些工具的信息:
- 应用日期格式
- 转为实际值
Kutools for Excel - 通过超过300个必备工具,让Excel功能大幅提升。永久免费享受AI功能!立即获取
使用Kutools for Excel的超级筛选工具筛选工作日和周末
如果您希望在不改变原始数据格式的情况下按工作日或周末筛选日期,Kutools for Excel的超级筛选工具提供了一种高效的解决方案。
Kutools for Excel - 包含超过 300 个 Excel 必备工具。永久免费享受 AI 功能!立即下载!
此方法适用于需要多条件筛选、不想修改原始数据或需要图形界面进行重复筛选任务的用户。
步骤1:点击Kutools Plus > 超级筛选,以在工作簿中启用超级筛选窗格。
步骤2:在超级筛选窗格中,执行以下操作:

1) 点击“浏览”按钮,选择要筛选的数据范围。
2) 将鼠标悬停在“或”标签上以展开条件编辑器,然后配置筛选条件:
- 在第一个框中选择列名(例如“日期”)
- 在第二个框中选择“周”。
- 在第三个框中选择“等于”。
- 在最后一个框中选择1到7之间的数字。例如,1 = 星期日,7 = 星期六。
注意:数字1-7分别代表星期日至星期六。如果您的周从不同的一天开始或使用不同的区域设置,请调整条件。
3) 点击“筛选”按钮以应用。
现在,数据将仅显示符合您指定日期的行——例如,如果您选择了1,则显示星期日。
如果您想筛选所有周末(周六和周日),请添加两个条件:
- 日期 > 周 > 等于 > 1
- 日期 > 周 > 等于 > 7
确保它们之间的逻辑设置为“或”。
要筛选仅工作日(周一至周五),请应用以下条件:
- 日期 > 周 > 不等于 > 1
- 日期 > 周 > 不等于 > 7
确保这些条件之间的逻辑运算符设置为“与”。
关键点和建议:
- 超级筛选支持复杂的多层次筛选,包括日期范围、数值和文本字段。
- 您可以保存并重复使用筛选配置,这对于定期报告或批量数据审核非常理想。
了解更多关于超级筛选工具的信息。
Kutools for Excel - 通过超过300个必备工具,让Excel功能大幅提升。永久免费享受AI功能!立即获取
使用VBA宏自动筛选或高亮显示工作日或周末
如果您正在处理大型数据集、需要自动化或频繁筛选或高亮显示工作日和周末,使用VBA宏可以节省时间并减少重复的手动操作。这种方法适合高级用户或熟悉Excel宏的人,且无需辅助列或第三方插件。请确保在继续之前启用了宏并且工作簿受信任。
步骤1:按Alt + F11打开Microsoft Visual Basic for Applications编辑器。然后点击“插入”>“模块”,并将以下VBA代码粘贴到模块窗口中:
Sub FilterWeekendDates()
Dim rng As Range
Dim cell As Range
Dim ws As Worksheet
Dim weekDayNum As Integer
Set ws = ActiveSheet
On Error Resume Next
Set rng = Application.InputBox("Select the date range to filter (single column, without header):", "Filter Weekends Only", Type:=8)
On Error GoTo 0
If rng Is Nothing Then Exit Sub
If rng.Columns.Count > 1 Then
MsgBox "Please select only one column.", vbExclamation
Exit Sub
End If
Application.ScreenUpdating = False
ws.Rows.Hidden = False
For Each cell In rng
If IsDate(cell.Value) Then
weekDayNum = Weekday(cell.Value, vbSunday)
If weekDayNum <> 1 And weekDayNum <> 7 Then
cell.EntireRow.Hidden = True
End If
Else
cell.EntireRow.Hidden = True
End If
Next cell
Application.ScreenUpdating = True
End Sub
步骤2:关闭VBA编辑器。要运行宏,请按Alt + F8,从列表中选择FilterWeekendDates,然后点击“运行”。将弹出一个对话框,提示您选择单列日期范围(不包括标题)。宏随后将隐藏所有不在周末的行(周六和周日仍然可见)。
如果您想筛选工作日而不是周末,请按如下方式更新循环内的代码行:
原始代码:
If weekDayNum <> 1 And weekDayNum <> 7 Then
更改后:
If weekDayNum = 1 Or weekDayNum = 7 Then
此更改将隐藏周末(星期日和星期六)并仅显示工作日(周一至周五)。
提示和说明:
- 在此脚本中,
Weekday(cell.Value, vbSunday)
表示星期日=1,星期六=7,这是美国区域设置中的默认值。如果您的区域设置将星期一定义为一周的开始,请调整逻辑。 - 要 高亮显示 周末而不是筛选,请结合条件格式使用以下公式:
=OR(WEEKDAY(A2,1)=1,WEEKDAY(A2,1)=7)
(假设您的日期在A列中)。 - 此宏仅在视觉上隐藏行。数据未被删除,并可以通过删除筛选或运行
ws.Rows.Hidden = False
取消隐藏。
故障排除:
- 如果宏无法运行,请确保已在Excel的信任中心启用了宏。
- 确保所选范围内包含有效的日期值。文本格式或空白单元格可能会被误解并隐藏。
- 如果运行后没有任何反应,请检查是否正确选择了范围,并且列数恰好为一列。
使用高级筛选与自定义条件筛选工作日和周末
Excel的高级筛选功能允许您使用自定义条件对数据进行原地筛选或将结果复制到其他位置,而无需辅助列或插件。通过利用基于WEEKDAY
函数的自定义公式作为条件范围,您可以灵活地仅显示工作日、仅显示周末甚至特定几天。此方法适用于临时一次性筛选,避免了因额外列而使工作表混乱。
以下是使用高级筛选进行工作日/周末筛选的步骤:
- 步骤1:确保您的数据有标题。例如,假设您的日期在B列(标题:“日期”)。
- 步骤2: 在工作表的其他地方设置条件范围。在条件范围标题单元格(例如 D1)中,输入与日期列相同的标题(“日期”)。在其下方的单元格(例如 D2)中,输入以下公式以筛选周末:
=OR(WEEKDAY(B2)=1, WEEKDAY(B2)=7)
- 步骤3:选择您的原始数据。转到“数据”>“高级”(位于排序和筛选组中)。
- 步骤4: 在高级筛选对话框中,设置:
- 列表范围:您的原始数据,包括标题
- 条件范围:您的条件块(标题和公式单元格)
- 选择是否在原地筛选列表或将结果复制到其他位置
- 步骤5:点击“确定”。只有周末日期将被显示(或复制,如果选择了该选项)。
要筛选工作日:
在“日期”标题下的条件单元格中使用以下公式:
=AND(WEEKDAY(B2)>1, WEEKDAY(B2)<7)
实用提示:
- 条件单元格中的公式应引用日期列中的第一个数据单元格(例如B2)。
- 避免将公式输入为数组;只需将其作为普通公式输入即可。
- 当您不想添加辅助列时,高级筛选最适合临时视图或筛选导出。
限制:
- 如果添加了新数据,则必须重新应用高级筛选。
- 条件范围中的标题必须与数据集中列名完全匹配。
常见错误和故障排除:
- 确保公式引用正确的单元格(例如,如果B列为日期列,则为B2)。
- 如果没有返回数据,请在样本行上手动测试公式以确认逻辑。
演示:在Excel中筛选工作日和周末
最佳Office办公效率工具
🤖 | Kutools AI 助手:以智能执行为基础,彻底革新数据分析 |代码生成 |自定义公式创建|数据分析与图表生成 |调用Kutools函数…… |
热门功能:查找、选中项的背景色或标记重复项 | 删除空行 | 合并列或单元格且不丢失数据 | 四舍五入…… | |
高级LOOKUP:多条件VLookup|多值VLookup|多表查找|模糊查找…… | |
高级下拉列表:快速创建下拉列表 |依赖下拉列表 | 多选下拉列表…… | |
列管理器: 添加指定数量的列 | 移动列 | 切换隐藏列的可见状态 | 比较区域与列…… | |
特色功能:网格聚焦 |设计视图 | 增强编辑栏 | 工作簿及工作表管理器 | 资源库(自动文本) | 日期提取 | 合并数据 | 加密/解密单元格 | 按名单发送电子邮件 | 超级筛选 | 特殊筛选(筛选粗体/倾斜/删除线等)…… | |
15大工具集:12项 文本工具(添加文本、删除特定字符等)|50+种 图表 类型(甘特图等)|40+实用 公式(基于生日计算年龄等)|19项 插入工具(插入二维码、从路径插入图片等)|12项 转换工具(小写金额转大写、汇率转换等)|7项 合并与分割工具(高级合并行、分割单元格等)| …… |
通过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和PowerPoint插件+Office Tab Pro
- 单一安装包、单一授权——数分钟即可完成设置(支持MSI)
- 协同更高效——提升Office应用间的整体工作效率
- 30天全功能试用——无需注册,无需信用卡
- 超高性价比——比单独购买更实惠