You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel表格去重技术问询:按时间区间保留最早/最新数据

Excel按时间区间差异化去重(分区间保留最早/最新更新日期)

需求很明确:同一数据集里,第一个时间区间内按date+amount去重,只留update_date最早的行;第二个时间区间同样按这两列去重,但留update_date最新的行。之前用where date between...没成功,是因为只拆分了数据,没结合分组取最值的逻辑,给你两种可行方案:

方案1:Power Query实现(首选,大数据量也能扛)

  1. 选数据里任意单元格,点「数据」→「从表格/区域」,导入Power Query(记得勾选“我的表格有标题”)。
  2. 加自定义列区分区间:
    点「添加列」→「自定义列」,输入公式(把日期改成你的实际区间分界):
    if [date] <= #date(2023,1,5) then "区间1" else "区间2"
    
    如果你的日期是文本格式,直接写[date] <= "01-05-2023"也行,但转成日期类型更稳妥。
  3. 分组取最值:
    点「转换」→「分组依据」,设置:
    • 分组列:date、amount、「刚才添加的自定义列」
    • 新列名:目标日期
    • 操作选「自定义」,公式写:
      if [自定义列] = "区间1" then List.Min([update_date]) else List.Max([update_date])
      
  4. 匹配原表取完整行:
    点「添加列」→「合并查询」,把分组后的表和原表按date、amount、自定义列、目标日期这四列匹配,展开后保留你需要的三列即可。
  5. 删除重复项:选中date、amount、update_date列,点「开始」→「删除重复项」,最后加载回Excel。

方案2:辅助列+筛选(小数据量快速搞定)

  1. 加辅助列D,标记区间:
    D2单元格输入:=IF(A2<=DATE(2023,1,5),"区间1","区间2")(A列对应你的date列,自行调整列号)
  2. 加辅助列E,计算每组要保留的update_date:
    E2单元格输入:
    =IF(D2="区间1",MINIFS(C:C,A:A,A2,B:B,B2,D:D,D2),MAXIFS(C:C,A:A,A2,B:B,B2,D:D,D2))
    
    (C列对应update_date,B列对应amount,按需修改列号)
  3. 筛选目标行:选中E列,筛选「等于」C列的内容,把这些行复制到新表就是最终结果。

内容的提问来源于stack exchange,提问作者rekas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 00:05:34