加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

转:获取某列最后一个包含数据的单元格所在行的行号或值

(2012-06-30 07:31:51)
标签:

杂谈

分类: 转载文章

【6月7号是个重要的日子】

要获取某列最后一个包含数据的单元格所在行的行号,可以用下面的几个数组公式(注意是数组哦,Shift+Ctrl+Enter),以A列为例:

方法一:

=MAX(NOT(ISBLANK(A1:A65535))*ROW(1:65535))

公式输入完毕按Ctrl+Shift+Enter结束(下同),该公式对A列中每个包含数据的单元格指定其行号,对空单元格返回“0”,并用MAX函数得到最后一行的行号。

 

方法二:

=LOOKUP(2,1/NOT(ISBLANK(A1:A65535)),ROW(A1:A65535))

 “1/NOT(ISBLANK(A1:A65535))”返回一个由“1”和错误值组成的数组(false=0,true=0,1除以1等于1,1除以0当然是错误喽),其中非空单元格返回“1”,空单元格返回错误,LOOKUP函数的第一个参数为“2”,由于在上述数组中找不到,会返回第三个参数“ROW(A1:A65535)”中最后一个“1”对应的值,即最后一行的行号。

 

方法三:

=MATCH(2,1/NOT(ISBLANK(A1:A65535)))

MATCH函数的第三参数省略,将查找小于或等于“2”的最大值,返回最后一个“1”的位置,即最后一行的行号。

 

方法四:

如果A列中包含数值,下面的数组公式返回最后一个数值所在的行号,而忽略最后一个数值后面的文本、错误值等:

=MATCH(9E+307,A:A)

 

类似的方法还可以得到最后一行的值:

方法一:    =LOOKUP(2,1/(A3:A65536<>""),A3:A65536)

方法二:    =LOOKUP(2,1/(NOT(ISBLANK(A3:A65536))),A3:A65536)

方法三:    =OFFSET(A1,MAX((A3:A65536<>"")*ROW(A3:A65536))-1,)

【晚安地球人】

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有