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

假设一个应用场景如下:当前存在一个产品的记录表,记录着这一个产品对应的日期及状态。同一个产品中存在多条数据,记录产品在不同时间的状态。现在需要根据需求找到最新的一条/最新的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. 5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明

    5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明 @ 目录 5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明 1. Exchanges 交换机的 ...

  2. SpringBoot校验请求Json参数

    spring boot 校验请求json参数 在后端开发中,通过接口和参数传输来进行与前端交互,才可以让一个项目成型. 由于全后端隔离的方式,所以有时候需要不那么信任前端,也就是在验证当前操作是否有权 ...

  3. SynchronousQueue的put方法底层源码

    一.SynchronousQueue的put方法底层源码 SynchronousQueue 的 put 方法用于将元素插入队列.由于 SynchronousQueue 没有实际的存储空间,put 方法 ...

  4. 邮件自动回复助手(Rasa/SMTP)实现教程

    在现代办公场景中,处理大量邮件是一项既耗时又容易出错的任务.为了提升工作效率,我们可以利用自然语言处理(NLP)和邮件传输协议(SMTP)技术,构建一个智能的邮件自动回复助手.本文将详细介绍如何使用P ...

  5. 聊聊四种实时通信技术:长轮询、短轮询、WebSocket 和 SSE

    这篇文章,我们聊聊 四种实时通信技术:短轮询.长轮询.WebSocket 和 SSE . 1 短轮询 浏览器 定时(如每秒)向服务器发送 HTTP 请求,服务器立即返回当前数据(无论是否有更新). 优 ...

  6. maven setting.xml文件配置

    官网文档:http://maven.apache.org/ref/3.2.5/maven-settings/settings.html 下面是我个人的配置 <?xml version=" ...

  7. 记一次移动光猫(GM219-S)安全测试

    前言 过个年,WiFi密码忘记了-光猫管理密码也忘记了(这个光猫也不支持物理按钮重置设置),但是手机还连着WiFi,正规操作找回不了密码,那就用咱们测试的思维来试试PWN掉这个路由器. 过程 未授权获 ...

  8. Pandas 批量处理文本表

    就是一个批量读取文件, 然后计算指标的过程. 难度到是没啥, 只是想记录一把, 毕竟这类的需求, 其实还是蛮多的. 但涉及一些数据的安全, 和指标这块也是不能透露的, 因此只能是贴上代码, 目的还是给 ...

  9. Python基础 - 多线程(上)

    前面对 进程 一点认识, 通俗理解, 进程是操作系统(OS)进行资源调度分配的基本单元. 每个程序的至少就一个进程在OS中被"监控"着的哦. 然后围绕着多进程, 用消息队列共享全局 ...

  10. 深挖diff算法:揭开代码版本控制神器的神秘面纱

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...