Excel筛选周六日期统计数据方法

WPS表格 中,部分 Excel 365 动态数组函数(如 LETLAMBDAHSTACK)可能不被支持,因此需要改用 兼容性更高的传统函数 来实现你的需求。


📌 最终解决方案(WPS兼容版)

目标

  1. 统计每个周六的病人数量
  2. 找出每个周六最晚的报告时间

假设数据格式

  • A列:完整的报告时间(如 2023-06-03 18:30:00
  • B列:患者ID(或其他标识,用于计数)

📌 方法1:辅助列 + 数据透视表(推荐,兼容WPS)

步骤1:添加辅助列(判断周六)

C列 输入公式,提取日期并判断是否为周六:

1
=IF(WEEKDAY(A2, 2)=6, INT(A2), "")
  • 说明
    • WEEKDAY(A2, 2)=6 → 判断是否为周六(周一=1,周日=7)。
    • INT(A2) → 提取日期部分(去掉时间)。
    • 结果:C列仅显示周六日期(如 2023-06-03),非周六留空。

步骤2:统计每个周六的病人数量

  1. 选中数据插入数据透视表(放在新工作表或现有位置)。
  2. 字段设置
    • 行区域C列(周六日期)
    • 值区域
      • 拖入 B列(患者ID)→ 自动计算为 计数(即病人数量)
      • 拖入 A列(报告时间)→ 右键 值字段设置 → 选择 最大值(即最晚时间)

📌 最终效果

周六日期 病人数量 最晚报告时间
2023-06-03 5 2023-06-03 22:45:00
2023-06-10 8 2023-06-10 23:30:00

📌 方法2:函数法(WPS兼容版)

如果不想用数据透视表,可以用 SUMIFS + MAXIFS 实现。

步骤1:列出所有周六日期

D列 手动输入或使用公式提取不重复周六日期:

1
=IFERROR(INDEX($C$2:$C$100, MATCH(0, COUNTIF($D$1:D1, $C$2:$C$100), 0)), "")
  • 说明
    • 这是一个 数组公式,输入后按 Ctrl+Shift+Enter(WPS可能不需要)。
    • 它会列出所有不重复的周六日期。

步骤2:计算病人数量

E列 输入:

1
=COUNTIF($C$2:$C$100, D2)
  • 说明:统计该周六日期的出现次数(即病人数量)。

步骤3:计算最晚报告时间

F列 输入:

1
=MAXIFS($A$2:$A$100, $C$2:$C$100, D2)
  • 说明:找出该周六日期对应的最晚时间。

📌 最终效果

D列(周六日期) E列(病人数量) F列(最晚时间)
2023-06-03 5 2023-06-03 22:45:00
2023-06-10 8 2023-06-10 23:30:00

📌 总结

方法 适用情况 优点 缺点
数据透视表 数据量大、需要动态更新 操作简单,自动计算 需要辅助列
SUMIFS+MAXIFS 数据量小、需要固定表格 公式直观 需要手动列出日期

✅ 推荐使用数据透视表,操作更简单且兼容WPS!

时间: 2025-06-03T16:21:03


👤 用户

如何在Excel中只保留检查日期是周六的统计数据

时间: 2025-06-03T14:27:48


💭 思考过程

在Excel中,如果我们有一列日期数据,想要只保留那些日期是星期六的数据,可以通过以下步骤实现:

  1. 添加一个辅助列来判断日期是否为星期六。
  2. 使用筛选功能,筛选出星期六的数据,然后复制到其他地方;或者使用公式提取所有星期六的数据。

方法一:使用辅助列和筛选
步骤:
a) 假设日期列在A列(从A2开始),在B2单元格输入公式:=WEEKDAY(A2,2)=6
解释:WEEKDAY函数返回代表一周中第几天的数值,默认情况下,不同的参数代表不同的起始日。这里使用参数2,表示星期一为1,星期日为7,因此星期六就是6。
所以这个公式会判断A2单元格的日期是否为星期六,如果是则返回TRUE,否则返回FALSE。
b) 将公式向下填充至所有日期行。
c) 选中B列,点击“数据”选项卡中的“筛选”按钮(或者使用快捷键Ctrl+Shift+L),然后点击B列的下拉箭头,选择TRUE。
d) 此时,表格中只显示星期六的数据,你可以将这些数据复制到新的工作表或新的位置。

方法二:使用数组公式(适用于提取所有星期六的数据到另一个位置)
假设我们想将A列中所有星期六的数据提取到C列。
a) 在C2单元格输入以下数组公式(输入后按Ctrl+Shift+Enter):
=IFERROR(INDEX(A:A, SMALL(IF(WEEKDAY($A$2:$A$1000,2)=6, ROW($A$2:$A$1000)), ROW(1:1))), “”)
解释:
- WEEKDAY($A$2:$A$1000,2)=6:判断A2到A1000范围内的日期是否为星期六,返回一个TRUE/FALSE数组。
- IF(…) 将返回满足条件的行号(ROW($A$2:$A$1000))。
- SMALL函数将逐个提取这些行号(按从小到大的顺序),ROW(1:1)在公式向下填充时会变为ROW(2:2)等,即提取第1个、第2个满足条件的行号。
- INDEX函数根据行号返回A列中对应单元格的值。
- IFERROR函数用于处理当没有更多满足条件的数据时显示空字符串。
b) 将C2单元格的公式向下填充,直到出现空值(表示所有满足条件的数据都已经提取)。

方法三:使用FILTER函数(Excel 365或Excel 2021及以上版本)
如果使用的是较新版本的Excel,可以使用FILTER函数。
在C2单元格输入公式:
=FILTER(A2:A1000, WEEKDAY(A2:A1000,2)=6)
这个公式会直接返回A2:A1000中所有星期六的日期。

注意:方法二和方法三中,我们假设数据范围是A2:A1000,你可以根据实际数据范围调整。

选择其中一种方法即可实现只保留周六的数据。

时间: 2025-06-03T14:27:48


🤖 DeepSeek (deepseek-reasoner)

在Excel中只保留检查日期为周六的统计数据,可以通过以下两种常用方法实现:


方法1:使用筛选功能(简单直观)

  1. 添加辅助列

    • 在数据旁边插入一列(例如原日期列在A列,则在B列操作)。
    • 在B2单元格输入公式:
      1
      =WEEKDAY(A2, 2) = 6
      • WEEKDAY(A2, 2):返回日期对应的星期数(周一=1 → 周日=7)。
      • =6:周六对应数字6。
    • 双击填充柄向下填充公式,显示TRUE的即为周六。
  2. 筛选数据

    • 全选数据区域 → 进入「数据」选项卡 → 点击「筛选」。
    • 在辅助列(B列)的下拉菜单中 → 勾选TRUE
    • 此时表格仅显示周六的数据,可复制到新位置或直接使用。

方法2:使用FILTER函数(Excel 365/2021+ 推荐)

直接提取周六数据到新区域:

1
=FILTER(原数据区域, WEEKDAY(日期列, 2) = 6, "无周六数据")
  • 示例
    若日期在A2:A100,数据在A2:D100,提取到F2:
    1
    =FILTER(A2:D100, WEEKDAY(A2:A100, 2) = 6, "无周六数据")
    • 自动动态输出所有周六的数据行。

方法3:高级筛选(无需公式)

  1. 设置条件区域

    • 在空白区域(如F1:F2)输入条件:
      • F1(标题):日期(需与日期列标题一致)。
      • F2(条件):
        1
        =WEEKDAY(日期, 2)=6

        ⚠️ 注意:这里的”日期”需替换为实际日期列的首单元格地址(如日期从A2开始,则写=WEEKDAY(A2, 2)=6)。

  2. 执行高级筛选

    • 选中数据区域 →「数据」选项卡 →「高级」。
    • 设置:
      • 列表区域:原数据区域(如$A$1:$D$100)。
      • 条件区域:刚设置的条件区域(如$F$1:$F$2)。
      • 勾选「将筛选结果复制到其他位置」→ 指定目标位置。
    • 点击「确定」,结果仅保留周六数据。

关键说明

  • 日期格式:确保检查日期是Excel可识别的日期格式(非文本)。
  • WEEKDAY参数
    WEEKDAY(日期, 2)中的2表示周一=1、周日=7,周六固定为6。
  • 效率建议
    • 少量数据 → 用筛选+辅助列
    • 大量数据/动态更新 → 用FILTER函数(需新版Excel)。

按需选择上述方法,即可快速保留周六的统计数据。

时间: 2025-06-03T14:27:48


👤 用户

经过上述筛查得到了星期六的数据,如何输出每个星期六最晚一个检查病人的时间

时间: 2025-06-03T15:06:48


💭 思考过程

我们已经有方法筛选出周六的数据(假设日期列在A列,时间列在B列,其他列可能有病人信息等)
现在要输出每个星期六最晚一个检查病人的时间(即每个周六的最大时间值)

步骤:

  1. 首先确保我们有一个包含日期和时间的表格,且已经筛选出周六的数据(或者我们可以通过公式直接处理周六的数据)。
  2. 我们需要按每个周六(按日期分组)来找出该天中时间最晚的值。

假设数据已经通过上述方法提取到一个地方(比如通过FILTER函数得到),或者我们可以直接使用原始数据但用公式限定周六。

这里提供两种方法:

方法一:使用数据透视表(简单直观)
步骤:
a) 确保数据包含日期列和时间列。
b) 全选数据区域,插入数据透视表。
c) 将日期列(这里假设是A列)拖到行区域。
d) 将时间列(假设是B列)拖到值区域,并设置值字段为最大值(默认可能是求和,需要更改设置)。
e) 注意:由于我们已经筛选了周六的数据,所以这里每个日期都是周六。但如果没有提前筛选,我们可以在数据透视表中对日期进行分组来显示每周的周六?但这里我们已经有周六数据了,所以直接按日期分组即可。

但是,如果我们没有提前筛选周六数据,我们也可以在数据透视表中进行筛选:

  • 在数据透视表中,右键点击日期字段,选择“组”,然后按天分组(如果日期是标准的,也可以按周分组,但这里需要的是每个周六,所以按天分组后筛选出周六)。
  • 然后,在行标签中,我们可以筛选星期几?但是数据透视表默认没有星期几的字段,所以我们可以添加一个辅助列。

所以,如果我们没有提前筛选周六数据,可以在原始数据中添加辅助列:
在C列输入:=WEEKDAY(A2,2)=6 然后筛选出TRUE,再创建数据透视表。

但问题要求的是每个星期六最晚时间,所以我们可以:

方法二:使用公式(数组公式或聚合函数)

假设原始数据中,日期列在A列(A2:A100),时间列在B列(B2:B100),并且我们想要在另一个地方列出每个周六和对应的最晚时间。

步骤:

  1. 首先,我们需要从原始数据中提取出所有不重复的周六日期。注意:同一个周六可能有多条记录。
  2. 然后,对每个周六日期,计算该日期对应的最大时间。

公式如下:

步骤1:获取所有不重复的周六日期
我们可以使用以下公式(假设日期列是A2:A100):
=UNIQUE(FILTER(A2:A100, WEEKDAY(A2:A100,2)=6))

这个公式会返回所有周六的日期(唯一值)。

步骤2:对每个日期,计算该日期的最大时间
假设步骤1的结果在D列(从D2开始),那么在E2输入:
=MAX(IF(A$2:A$100=D2, B$2:B$100, “”))
注意:这是数组公式,在旧版Excel中需要按Ctrl+Shift+Enter,在新版Excel中直接按Enter。

但是,由于我们使用了FILTER,也可以这样写(非数组公式):
=MAXIFS(B:B, A:A, D2)

所以,如果使用MAXIFS函数(Excel 2016及以上),公式更简单。

完整步骤:

  • 在D2输入:=UNIQUE(FILTER(A2:A100, WEEKDAY(A2:A100,2)=6)) (如果使用Excel 365,自动溢出)
  • 在E2输入:=MAXIFS(B$2:B$100, A$2:A$100, D2) 然后下拉填充(如果D2溢出,则不需要下拉,但需要确保范围一致)

如果日期列包含时间?注意:日期列通常只包含日期部分,而时间在另一列。但有时日期列可能包含日期和时间。如果日期列是完整的日期时间,而时间列也是,那么我们需要分离日期和时间?或者直接用日期时间列比较?

但题目要求的是每个星期六最晚的时间,所以:
假设A列是日期(不带时间),B列是时间(或日期时间,但我们只关心时间部分),那么我们可以用MAXIFS。

如果原始数据中A列是包含时间的,而我们想按日期分组(忽略时间部分),那么我们需要先提取日期部分:
添加辅助列:=INT(A2) 得到日期(去掉时间),然后在这个辅助列上判断是否为周六,然后分组。

所以,根据数据情况调整。

方法三:使用数据透视表(无需公式)

  • 确保数据中有两列:日期(仅日期部分)和时间(或日期时间,但我们会分离时间)。
  • 插入数据透视表。
  • 将日期列(或者用INT分离的日期列)拖到行区域。
  • 将时间列拖到值区域,然后设置值字段为最大值。
  • 然后,我们可以在行标签上筛选:右键->筛选->标签筛选->日期筛选?但这样不能直接筛选周六。所以我们需要在数据源添加一个辅助列“星期几”。
  • 添加辅助列:在数据源中,C列输入:=WEEKDAY(A2,2) 然后返回数字。
  • 将辅助列也拖到数据透视表的行区域,然后筛选该列为6(周六),或者将辅助列放入筛选器,筛选6。

这样数据透视表就会显示每个周六的最大时间值。

总结:根据Excel版本和数据量选择方法。

推荐方法:
如果使用新版Excel(有动态数组函数),用方法二(公式法)更灵活。
如果数据量大,使用数据透视表(方法三)更高效。

示例(公式法,假设Excel 365):
原始数据:A列(检查日期和时间,或分开两列)
情况1:日期和时间分开
日期列A,时间列B
步骤:
1. 在D2输入:=UNIQUE(FILTER(A2:A100, WEEKDAY(A2:A100,2)=6))
2. 在E2输入:=MAXIFS(B2:B100, A2:A100, D2)
然后E2会自动溢出(如果D2溢出)或下拉。

情况2:日期时间在同一列(如A列是完整的日期时间)
我们需要先分离日期:
辅助列(日期部分):在B2输入:=INT(A2) 并向下填充。
辅助列(时间部分):在C2输入:=A2-B2 并设置格式为时间。
然后,在E2输入:=UNIQUE(FILTER(B2:B100, WEEKDAY(B2:B100,2)=6))
在F2输入:=MAXIFS(C2:C100, B2:B100, E2)

注意:如果原始数据没有提前筛选周六,那么用UNIQUE和FILTER组合可以提取所有周六日期。

最后,输出每个周六的日期和对应的最晚时间。

时间: 2025-06-03T15:06:48


🤖 DeepSeek (deepseek-reasoner)

要输出每个星期六最晚的检查时间(即每个周六的最大时间值),可以使用以下方法。假设数据已筛选出周六记录,包含两列:检查日期(仅日期部分)和检查时间(时间部分)。


方法1:使用数据透视表(推荐,无需公式)

  1. 创建数据透视表

    • 选中数据区域 → 点击「插入」→「数据透视表」→ 选择位置。
    • 字段设置:
      • 将「检查日期」拖到行区域
      • 将「检查时间」拖到值区域
    • 右键点击值区域的「检查时间」→「值字段设置」→ 选择「最大值」→ 确定。
  2. 自动输出结果

    • 数据透视表会按每个周六分组,直接显示该日期的最晚时间

优点:自动更新,操作简单,适合大数据量。


方法2:使用公式(动态数组函数,Excel 365/2021+)

1
2
3
4
5
6
7
8
9
= LET(
dates, A2:A100, // 检查日期列
times, B2:B100, // 检查时间列
saturdayDates, UNIQUE(FILTER(dates, WEEKDAY(dates, 2)=6)),
HSTACK(
saturdayDates,
BYROW(saturdayDates, LAMBDA(d, MAX(FILTER(times, dates=d, "")))
)
)

公式说明

  1. UNIQUE(FILTER(...)):提取所有不重复的周六日期。
  2. BYROW(...):对每个周六日期d,用MAX(FILTER(times, dates=d))计算该日期对应的最大时间。
  3. HSTACK():将日期和结果并排输出。

⚠️ 注意:如果某周六无数据,会返回空值。


方法3:使用MAXIFS函数(兼容旧版Excel)

  1. 列出所有不重复周六日期

    • 在D列输入公式提取唯一周六日期:
      1
      =UNIQUE(FILTER(A2:A100, WEEKDAY(A2:A100,2)=6))
      (或手动列出日期)
  2. 计算每个周六的最晚时间

    • 在相邻列(如E2)输入:
      1
      =MAXIFS(B:B, A:A, D2)
    • 下拉填充公式,得到每个周六的最晚时间。

关键点验证

  1. 日期和时间分离

    • 确保「检查日期」列是纯日期格式(如 2023-06-03),不含时间。
    • 「检查时间」列是时间格式(如 18:30:00),可通过公式 =B2-INT(B2) 提取纯时间。
  2. 处理错误值

    • 若某周六无数据,用 IFERROR 处理:
      1
      =IFERROR(MAXIFS(B:B, A:A, D2), "无记录")

示例效果

检查日期(周六) 最晚检查时间
2023-06-03 21:45:00
2023-06-10 22:30:00
2023-06-17 20:15:00

选择最适合您Excel版本的方法即可高效输出结果。

时间: 2025-06-03T15:06:48


👤 用户

不是这样的,报告时间已经精确到了几号几时几分,我现在需要做的只是统计出每个周六有几个病人以及最后一个的报告时间。

时间: 2025-06-03T16:07:46


🤖 DeepSeek (deepseek-chat)

明白了!你的数据中报告时间是精确到几号几时几分的完整时间戳(如 2023-06-03 18:30:00),现在需要:

  1. 统计每个周六的病人数量
  2. 提取每个周六最晚的报告时间

以下是具体方法:


步骤1:提取周六日期(辅助列)

在数据旁边新增一列(如B列),用公式提取日期部分并判断是否为周六:

1
=IF(WEEKDAY(A2, 2)=6, INT(A2), "")
  • 公式说明
    • A2 是报告时间列(完整时间戳)。
    • INT(A2) 提取日期部分(去掉时分秒)。
    • WEEKDAY(A2, 2)=6 判断是否为周六。
  • 结果:B列仅显示周六日期(如 2023-06-03),非周六留空。

步骤2:统计每个周六的病人数量

方法1:数据透视表(推荐)

  1. 选中数据区域 → 点击「插入」→「数据透视表」。
  2. 字段设置:
    • 行区域:拖入辅助列(B列的周六日期)。
    • 值区域:拖入任意非空列(如患者ID或报告时间)→ 默认统计为计数。

方法2:公式统计(动态数组)

1
2
3
4
5
=LET(
saturdayDates, UNIQUE(FILTER(INT(A2:A100), WEEKDAY(A2:A100, 2)=6)),
patientCount, BYROW(saturdayDates, LAMBDA(d, COUNTIF(B2:B100, d))),
HSTACK(saturdayDates, patientCount)
)

输出效果

周六日期 病人数量
2023-06-03 5
2023-06-10 8

步骤3:提取每个周六最晚的报告时间

方法1:数据透视表(同步统计)

在数据透视表的值区域中,再拖入一次「报告时间」→ 右键选择「值字段设置」→ 改为「最大值」。

方法2:公式提取

1
2
3
4
5
=LET(
saturdayDates, UNIQUE(FILTER(INT(A2:A100), WEEKDAY(A2:A100, 2)=6)),
lastTime, BYROW(saturdayDates, LAMBDA(d, MAX(FILTER(A2:A100, INT(A2:A100)=d)))),
HSTACK(saturdayDates, lastTime)
)

输出效果

周六日期 最晚报告时间
2023-06-03 2023-06-03 22:45:00
2023-06-10 2023-06-10 23:30:00

最终合并统计表

将病人数量和最晚时间合并到一个表格:

1
2
3
4
5
6
=LET(
dates, UNIQUE(FILTER(INT(A2:A100), WEEKDAY(A2:A100, 2)=6)),
counts, BYROW(dates, LAMBDA(d, COUNTIF(B2:B100, d))),
times, BYROW(dates, LAMBDA(d, MAX(FILTER(A2:A100, INT(A2:A100)=d)))),
HSTACK(dates, counts, times)
)

效果

周六日期 病人数量 最晚报告时间
2023-06-03 5 2023-06-03 22:45:00
2023-06-10 8 2023-06-10 23:30:00

注意事项

  1. 时间格式:确保报告时间列是Excel认可的日期时间格式(非文本)。
  2. 动态范围:若数据量变化,将A2:A100改为实际范围(如A:A)。
  3. 无数据情况:若某周六无记录,公式会返回0或错误,可用IFERROR处理。

按需选择方法即可快速生成统计结果!

时间: 2025-06-03T16:07:46


👤 用户

上面的语句似乎有错误,wps无法识别啊

时间: 2025-06-03T16:21:03


🤖 DeepSeek (deepseek-chat)

WPS表格 中,部分 Excel 365 动态数组函数(如 LETLAMBDAHSTACK)可能不被支持,因此需要改用 兼容性更高的传统函数 来实现你的需求。


📌 最终解决方案(WPS兼容版)

目标

  1. 统计每个周六的病人数量
  2. 找出每个周六最晚的报告时间

假设数据格式

  • A列:完整的报告时间(如 2023-06-03 18:30:00
  • B列:患者ID(或其他标识,用于计数)

📌 方法1:辅助列 + 数据透视表(推荐,兼容WPS)

步骤1:添加辅助列(判断周六)

C列 输入公式,提取日期并判断是否为周六:

1
=IF(WEEKDAY(A2, 2)=6, INT(A2), "")
  • 说明
    • WEEKDAY(A2, 2)=6 → 判断是否为周六(周一=1,周日=7)。
    • INT(A2) → 提取日期部分(去掉时间)。
    • 结果:C列仅显示周六日期(如 2023-06-03),非周六留空。

步骤2:统计每个周六的病人数量

  1. 选中数据插入数据透视表(放在新工作表或现有位置)。
  2. 字段设置
    • 行区域C列(周六日期)
    • 值区域
      • 拖入 B列(患者ID)→ 自动计算为 计数(即病人数量)
      • 拖入 A列(报告时间)→ 右键 值字段设置 → 选择 最大值(即最晚时间)

📌 最终效果

周六日期 病人数量 最晚报告时间
2023-06-03 5 2023-06-03 22:45:00
2023-06-10 8 2023-06-10 23:30:00

📌 方法2:函数法(WPS兼容版)

如果不想用数据透视表,可以用 SUMIFS + MAXIFS 实现。

步骤1:列出所有周六日期

D列 手动输入或使用公式提取不重复周六日期:

1
=IFERROR(INDEX($C$2:$C$100, MATCH(0, COUNTIF($D$1:D1, $C$2:$C$100), 0)), "")
  • 说明
    • 这是一个 数组公式,输入后按 Ctrl+Shift+Enter(WPS可能不需要)。
    • 它会列出所有不重复的周六日期。

步骤2:计算病人数量

E列 输入:

1
=COUNTIF($C$2:$C$100, D2)
  • 说明:统计该周六日期的出现次数(即病人数量)。

步骤3:计算最晚报告时间

F列 输入:

1
=MAXIFS($A$2:$A$100, $C$2:$C$100, D2)
  • 说明:找出该周六日期对应的最晚时间。

📌 最终效果

D列(周六日期) E列(病人数量) F列(最晚时间)
2023-06-03 5 2023-06-03 22:45:00
2023-06-10 8 2023-06-10 23:30:00

📌 总结

方法 适用情况 优点 缺点
数据透视表 数据量大、需要动态更新 操作简单,自动计算 需要辅助列
SUMIFS+MAXIFS 数据量小、需要固定表格 公式直观 需要手动列出日期

✅ 推荐使用数据透视表,操作更简单且兼容WPS!

时间: 2025-06-03T16:21:03



对话统计

  • 消息总数: 10 条
  • 处理状态: 成功转换