Pages

Wednesday, February 11, 2015

EXCEL 返回非空最后一行的行号

转:http://www.360doc.com/content/13/1017/09/8249701_322042700.shtml

A1-A9:数字/字母/汉字
 A10-A12:空格
A13:汉字  
如何返回A13的行数13  
就是说一列数,中间不定单元格有空格 要返回最后个有数据的行数    
 =LOOKUP(1,0/(A1:A65535<>""),ROW(1:65535))  
或者数组公式:  =MAX((A1:A65535<>"")*ROW(A1:A65535))
输入后要按Ctrl+Shift+Enter 
 
 
LOOKUP()函数采用“二分法”进行查数,因此,要求源数据必须进行升序排序。但是,世事无绝对,总有一些牛人能想出各种办法,在不排序的情况下用LOOKUP()!!
公式:=LOOKUP(1,0/($A$2:A$696=F2),$C$2:C$696)
公式释义:$A$2:A$696=F2得到的是False、True的序列,在Excel中,涉及到数学运算时,False=0,True=1,因此用0除后,得到的是#DIV/0!、0序列。注意:在Excel中,所有错误值不参与排序,不参与字符串的比较,或者说:错误值比所有的数值、字符串都要“大”。而公式的作用是在生成的#DIV/0!、0序列中找到小于或等于1的最大值,因为错误值不参与排序,因此只能找到0(也就是$A$2:$A$696=F2成立的地方!!!!并且只有一个!!!),然后返回相对应的$C$2:$C$696中的数值。

另 外,因为“二分法”的缘故,如果源数据中有好几个符合条件的值(这些值肯定是相等的!!),那么LOOKUP()总会返回排在最后面的一个(而 VLOOKUP()总会返回第一次!!)。因此,假设A列有许多数据,并且里面还有空格,想找到最后一个单元格的位置,怎么办?如果没有空格,可以用公 式:
=COUNTA(A1:A65535)
现在有空单元格,可以用公式:
=LOOKUP(1,0/(A1:A65535<>""),ROW(A1:A65535))
与上面的公式原理相同。

0 comments: