ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > 函数与公式 > 返回最后5行的数据记录

返回最后5行的数据记录

作者:绿色风 分类: 时间:2022-08-18 浏览:108
楼主
Zaezhong
Q:如何取得一个数据表的最后5行的数据记录(数据表的数据会随时间变化)?
A:方法1
来源:Zaezhong
  1. =IF(ROW()-7>=0,"",OFFSET(A$1,SUM(N(A:A<>""))-7+ROW(),))
由于输入结果的单元格在第二行,返回的结果区域为5行,所以需要使得公式填充到第7行的时候显示空白,故通过ROW()-7确定,当该值非负的时候显示空白,如果需要返回的数据行数发生变化,设为K,原来的7可以通过ROW()+K确定
方法2
来源:zhanghi,(多单元格数组公式)
  1. =OFFSET(A1,COUNT(IF(A:A="","",1))-K,,K,5)
这是多单元格的数组公式,已经将原来公式的$省略,该方法原来比较简单,如果需要返回的数据行数发生变化,仅需要在K部分输入自己数据
方法3
来源:悟空师弟
  1. =IFERROR(INDEX(A:A,SMALL(LARGE((LEN($B$2:$B$30)>0)*ROW($2:$30),ROW($1:$K)),ROW(A1)))&"","")
该方法的30可以随便设置为一个大于20的数(在此为30),先判断B列字符长度是否为0确定最后一行的位置,LARGE函数取得最后的5行,再通过SMALL从小到大取得最后的行号。如果需要返回的数据行数发生变化,仅需要在K部分输入自己数据,不过缺点是年龄数字为文本类型数据
返回最后5行的数据.rar
2楼
Zaezhong
1楼针对的是包括重复数据记录的情况,如果需要去除重复,可以
借用悟空师弟的解法,提取不重复之的方法较多,可以在社区搜索
  1. =IFERROR(INDEX(A:A,SMALL(LARGE((MATCH(表1[工号],表1[工号],)=ROW($1:$19))*ROW($2:$20),ROW($1:$5)),ROW(M1)))&"","")

返回最后5行的数据(去重).rar
3楼
wjc2090742
ROW()>6
4楼
wise
  1. Sub test()
  2. Dim i As Long, CRow As Long
  3. i = Cells(Rows.Count, 1).End(xlUp).Row
  4. CRow = InputBox("请输入需要返回最后第几行的数据:")
  5. Range("A" & i - CRow + 1 & ":E" & i).Copy Range("M2")
  6. [M1:Q1] = Array("工号", "姓名", "年龄", "性别", "车间")
  7. End Sub

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap