Excel中去重并只保留最近n次日期/最大最小值的数据
↓↓↓欢迎关注我的公众号,在这里有数据相关技术经验的优质原创文章↓↓↓

假设一个应用场景如下:当前存在一个产品的记录表,记录着这一个产品对应的日期及状态。同一个产品中存在多条数据,记录产品在不同时间的状态。现在需要根据需求找到最新的一条/最新的n条记录。
Excel测试数据如下:
| 产品ID | 日期 | 记录 |
|---|---|---|
| 1 | 2020/6/1 | 已投产 |
| 2 | 2020/6/1 | 停产 |
| 4 | 2020/5/1 | 产出23件 |
| 1 | 2020/4/6 | 准备中 |
| 2 | 2020/4/6 | 下线中 |
| 3 | 2020/3/26 | 准备中 |
| 5 | 2020/3/26 | 已投产 |
| 1 | 2020/2/26 | 准备中 |
| 1 | 2020/1/26 | 评估中 |
其中我们需要拿到每个产品最新的记录状态,结果预期如下:
| 产品ID | 日期 | 记录 |
|---|---|---|
| 1 | 2020/6/1 | 已投产 |
| 2 | 2020/6/1 | 停产 |
| 4 | 2020/5/1 | 产出23件 |
| 3 | 2020/3/26 | 准备中 |
| 5 | 2020/3/26 | 已投产 |
如果需要求最大/最小值或者前n大/小的数据逻辑是一致的,因为日期实质上也是一个数值,越新的日期值越大,找最新的n条数据就是要找前n大/小的数据。
方法一:直接去重求top1
首先将数据按照日期从新到旧排序(如果是去重并保留最大或最小值,则按照值排序即可),随后在选项卡中依次点击数据–去除重复项,并选择去重的列。在本例中选择产品ID,去重后即可得到结果

这种方法主要是利用Excel在去重时是从上到下遍历的,并且总是保留第一个不重复的值
方法二:公式去重求top n
将数据按照日期从新到旧排序(如果是去重并保留最大或最小值,则按照值排序即可)
在辅助列中输入公式:
=COUNTIF($A$2:A2,A2)
并向下填充。

这一个公式用到countif公式和单元格的相对/绝对引用,首先countif公式可以对范围内符合条件的值进行计数,从而判断是否存在重复。而计数的范围选择从产品ID第一行开始逐渐增加,这样第一次出现的产品ID在辅助列中为1,第二次出现则辅助列的值为2…从而得到每一个产品ID出现的次数和顺序。
这一种方法相较于第一种方法的优点是可以选出每个不重复产品ID的前n个(Top n)值。例如要找每个产品ID的最新的日期,则选取所有的辅助列为1的值即可,如果需要找每个产品IDI的最新的2条记录,则选取辅助列小于等于2的行.
同理,求不同的ID/类别/区间的前n的最大值/最小值都是一样的,只要同样按照需求先排序然后添加辅助列即可
Excel中去重并只保留最近n次日期/最大最小值的数据的更多相关文章
- EXCEL excel中运用ctrl+D、ctrl+enter、ctrl+E批量填充数据
在excel中,利用鼠标拖动可以快速向下或者向右填充序列或者复制单元格.但是利用快捷键也可以实现多种填充方式,本文就为大家介绍一些ctrl系列快捷键的填充,一起来看看吧. 封面tu 一,ctrl+D/ ...
- MSSQL sql server 2005/2008 row_number()函数应用之–删除表中重复记录,只保留一条不重复数据
转自:http://www.maomao365.com/?p=4942 下文主要讲述:重复数据只获取一条的方法 row_number函数在数据库中的功能是为每一行 按照一定的规则生成一个编号,我们常常 ...
- excel中如何设置只打印第一页
在打印表格时,怎样设置只打印第一页呢,操作很简单,下面,小编说下操作方法. 方法/步骤 打开要打印的工作表, 再点击“文件” 弹出的页面中,在左侧这里,点击“打印” 在右边弹出与打 ...
- python 去掉html中其他属性,只保留href 和 src
https://segmentfault.com/q/1010000010845573 import re #reg=r'\s+[^(href)]*=\"[^<>]+\" ...
- sql删除表中重复记录只保留一条记录
最终代码 update T_Fee set gzl_dfg_op = 'delete' where MetReadRecordID in ( select MetReadRecordID from T ...
- C# 设置Excel中的数字字符串格式
在Excel中,数字字符串用不同格式表示,可代表不同数据意义.例如在财务报表里需要用特定的数字字符串格式来反映金额信息.货币币种.数据精确程度.增减趋势等等.下面分享如何通过C#编程来设置Excel表 ...
- Excel中如何匹配另外一个Excel中的数据
场景: 我在Excel中想展示通过一列匹配到另外Excel中的数据.对于程序员来说,就是left join 出 B表的数据. 但是在Excel中怎么做呢,我又不想每次都在把数据导入到数据库中操作. 这 ...
- 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的 ...
- VBS 移除excel数据公式,只保留值
如果将excel数据公式移除,只保留计算之后的值,将大大减少excel文件. 因为有上篇移除excel外部数据链接的经验,进行excel数据公式移除将快的多,方法如下. 首先我们得明白怎么手动移除ex ...
- VBS 处理断开excel数据链接格式,只保留值
最近有个项目是将一个excel压缩之后发给客户,但是由于excel数据过大,即使压缩之后仍然接近5M,因为是大批量发送数据,所以非常慢.急需要将EXCEL数据压缩. 后来我想到一个办法,就excel数 ...
随机推荐
- 正在开发的.net sql拼写神器
我正在开发的一个.net sql拼写工具,当然也可以算是ORM 该工具的作用就是帮忙码农拼写sql,对标开源项目SqlKata.该工具最适合搭配Dapper使用,所以附带了一个Dapper扩展.当然直 ...
- 学习Linux命令的正确姿势
大家好,我是良许. 大家应该注意到了,最近我的公众号文章末尾都挂着自己录制的<Linux命令从小白到大神>课程. 这个课程我从开始录制到制作完成,足足花了一个半月.如果加上前期的资料收集与 ...
- 0x00 语法知识
目录 C++ STL Vector Pair String Queue Stack Deque Set Map Bitset Algorithm库函数 Reverse Unique Random_sh ...
- 主存的扩展及其与CPU的连接——字扩展
一块芯片的容量为\(2^{18}B\),而该CPU需要的容量为:\(2^{地址总线位宽}\)=\(2^{21}B\),所以需要8片该芯片来扩展. 由于CPU由21个地址引脚,芯片只有18个地址引脚,C ...
- 火焰图(Flame Graph)使用指南
火焰图(Flame Graph) 是一种可视化性能分析工具,可以帮助你快速定位 CPU.内存或 I/O 瓶颈.它看起来像火焰,因此得名. 火焰图能解决什么问题? CPU 占用高:找出哪些函数消耗了最多 ...
- Linux部署调度工具xxl-job
背景: Pentaho Data Integration(kettle)作为用户规模最多的开源ETL工具,强大简洁的功能深受广大ETL从业者的欢迎.但kettle本身的调度监控功能却非常弱.Penta ...
- 解决微信二维码接口接口返回:errcode\":47001,\"errmsg\":\"data format error rid: xxx和处理返回的buffer的问题
data format error rid问题: 在php中使用curl调用微信二维码生成接口getwxacodeunlimit时得到错误响应信息: errcode\":47001,\&qu ...
- 可视化图解算法:按之字形顺序打印二叉树( Z字形、锯齿形遍历)
1. 题目 描述 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替) 数据范围:0≤n≤1500,树上每个节点的val满足 |val| <= 1500 ...
- 45分钟从零搭建私有MaaS平台和生产级的Qwen3模型服务
今天凌晨,阿里通义团队正式发布了 Qwen3,涵盖六款 Dense 模型(0.6B.1.7B.4B.8B.14B.32B)和两款 MoE 模型(30B-A3B 和 235B-A22B).其中的旗舰模型 ...
- SQL Server 2025 中的改进
SQL Server 2025 中的改进 当我们接近 SQL Server 2025 的首次公开版本时,开始深入探究 Azure SQL DB 如今(已公布和未公布)但在 SQL Server 盒装产 ...