↓↓↓欢迎关注我的公众号,在这里有数据相关技术经验的优质原创文章↓↓↓

假设一个应用场景如下:当前存在一个产品的记录表,记录着这一个产品对应的日期及状态。同一个产品中存在多条数据,记录产品在不同时间的状态。现在需要根据需求找到最新的一条/最新的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次日期/最大最小值的数据的更多相关文章

  1. EXCEL excel中运用ctrl+D、ctrl+enter、ctrl+E批量填充数据

    在excel中,利用鼠标拖动可以快速向下或者向右填充序列或者复制单元格.但是利用快捷键也可以实现多种填充方式,本文就为大家介绍一些ctrl系列快捷键的填充,一起来看看吧. 封面tu 一,ctrl+D/ ...

  2. MSSQL sql server 2005/2008 row_number()函数应用之–删除表中重复记录,只保留一条不重复数据

    转自:http://www.maomao365.com/?p=4942 下文主要讲述:重复数据只获取一条的方法 row_number函数在数据库中的功能是为每一行 按照一定的规则生成一个编号,我们常常 ...

  3. excel中如何设置只打印第一页

    在打印表格时,怎样设置只打印第一页呢,操作很简单,下面,小编说下操作方法.   方法/步骤     打开要打印的工作表, 再点击“文件”   弹出的页面中,在左侧这里,点击“打印”   在右边弹出与打 ...

  4. python 去掉html中其他属性,只保留href 和 src

    https://segmentfault.com/q/1010000010845573 import re #reg=r'\s+[^(href)]*=\"[^<>]+\" ...

  5. sql删除表中重复记录只保留一条记录

    最终代码 update T_Fee set gzl_dfg_op = 'delete' where MetReadRecordID in ( select MetReadRecordID from T ...

  6. C# 设置Excel中的数字字符串格式

    在Excel中,数字字符串用不同格式表示,可代表不同数据意义.例如在财务报表里需要用特定的数字字符串格式来反映金额信息.货币币种.数据精确程度.增减趋势等等.下面分享如何通过C#编程来设置Excel表 ...

  7. Excel中如何匹配另外一个Excel中的数据

    场景: 我在Excel中想展示通过一列匹配到另外Excel中的数据.对于程序员来说,就是left join 出 B表的数据. 但是在Excel中怎么做呢,我又不想每次都在把数据导入到数据库中操作. 这 ...

  8. 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从

    明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的 ...

  9. VBS 移除excel数据公式,只保留值

    如果将excel数据公式移除,只保留计算之后的值,将大大减少excel文件. 因为有上篇移除excel外部数据链接的经验,进行excel数据公式移除将快的多,方法如下. 首先我们得明白怎么手动移除ex ...

  10. VBS 处理断开excel数据链接格式,只保留值

    最近有个项目是将一个excel压缩之后发给客户,但是由于excel数据过大,即使压缩之后仍然接近5M,因为是大批量发送数据,所以非常慢.急需要将EXCEL数据压缩. 后来我想到一个办法,就excel数 ...

随机推荐

  1. springboot将vo生成文件到目录

    依赖 org.springframework spring-mock 2.0.8 com.alibaba fastjson 1.2.62 service实现 public RestResponseBo ...

  2. apk签名问题

    https://www.jianshu.com/p/0bd7b6d6e068 https://blog.51cto.com/u_15520037/5703487

  3. Rabbitmq防止消息的丢失

    一.Rabbitmq的流程图 二.出现消息丢失的三个可能 A:写消息的过程,消息都没到rabbitmq,在网络传输过程就丢了:或者是消息到了rabbitmq,但是人家内部出错了没保存下来 例子: 1. ...

  4. 🎀Markdown介绍与语法

    简介 Markdown是一种轻量级的标记语言,由John Gruber于2004年创建.它的设计目标是让人们能够使用易读易写的纯文本格式编写文档,并且可以通过工具将其转换为结构化的HTML(超文本标记 ...

  5. C#之值类型与引用类型--out参数--ref参数-"=="、Equals和ReferenceEquals之间的区别

    一.值类型和引用类型 1.值类型 (1)值类型的大小是固定的 (2)值类型都派生自ValueType (3)值类型不能继承,只能实现接口 2.值类型:int.char.double.float.lon ...

  6. 为了掌握设计模式,开发了一款Markdown 文本编辑器软件(已开源)

    设计模式实战项目:Markdown 文本编辑器软件开发(已开源) 一.项目简介 项目名称:YtyMark-java 本项目是一款基于 Java 语言 和 JavaFX 图形界面框架 开发的 Markd ...

  7. 掌握Tortoise-ORM高级异步查询技巧

    title: 掌握Tortoise-ORM高级异步查询技巧 date: 2025/04/22 12:05:33 updated: 2025/04/22 12:05:33 author: cmdrago ...

  8. vue属性/子属性监听watch的几种方法

    特殊字符法 特殊字符+deep法 直接deep法 常规法 直接用如下代码示例吧: data(){ return { goBackHeader:'添加排班', scheduleForm:{ schedu ...

  9. 亚马逊aws_access_key_id和aws_secret_access_key利用

    00X01 信息泄露 敏感信息泄露,例如环境变量.例如,为了配置AWS CLI,需要设置以下环境变量: $ export AWS_ACCESS_KEY_ID=AKISIOSFODNN7EXAMPLE ...

  10. Java线程控制: sleep、yield、join深度解析

    结论先行 sleep:主动让出CPU但保持锁,适合控制执行节奏和优化CPU占用 yield:建议让出CPU但无强制力,适用场景有限且效果不稳定 join:通过等待机制实现线程顺序控制,底层基于wait ...