excel函数读取某非空行的A列单元格内容

首先我取得了表1内B列非空单元格的内容:INDEX(Sheet1!B:B,SMALL(IF(Sheet1!$B$1:$B$999<>"",ROW($1:$999),4^8... 首先我取得了表1内B列非空单元格的内容:
INDEX(Sheet1!B:B,SMALL(IF(Sheet1!$B$1:$B$999<>"",ROW($1:$999),4^8),ROW(B1)))
现在我想取B列非空单元格的A列内容怎么做?
话说上面那条也是知道里面回答的答案.
顺便问下那公式的讲解.(有加分喔~)
展开
 我来答
wykcorp
2013-07-09 · TA获得超过1.4万个赞
知道大有可为答主
回答量:5839
采纳率:85%
帮助的人:3403万
展开全部

题目要求是:“现在我想取B列非空单元格的A列内容怎么做” 所以应该是要先判断B列不为空的情况下再取A列的数据,因为B列不为空,A列为空时,取A列的内容也是没意义的,所以就是判断A和B列同时不为空的情况下,再取A列的值。



公式应该改为这样:

=INDEX(Sheet1!A:A,SMALL(IF((Sheet1!$A$1:$A$999<>"")*(Sheet1!$B$1:$B$999<>""),ROW($1:$999),4^8),ROW(A1)))&""


如果坚持只要B列为不空,不理会A列时否为空,就取A列内容,公式改为这样:

=INDEX(Sheet1!A:A,SMALL(IF(Sheet1!$B$1:$B$999<>"",ROW($1:$999),4^8),ROW(A1)))&""


公式的意思就是:

IF(Sheet1!$B$1:$B$999<>"",ROW($1:$999),4^8)

用IF函数判断sheet1!B1:B999这个区域是不是空值,如果不是就返回当前的行号,如果是就返回最后一行4^8=65536(这是EXCEL 2003支持最大的行数)。


SMALL(IF(....),ROW(A1))

然后在外面套个SMALL从小到大排序的函数。把以上IF函数得到的结果按顺序排序出来。如本例子中因为B列第1、3、5、9共四行不为空白,返回的结果则就是1、3、5、9,余下的就是返回65536。


INDEX(Sheet1!B:B,SMALL(....))

最后在外面套个INDEX函数,就是要根据前面SMALL函数返回的1、3、5、9依次读取Sheet1!B:B中的1、3、5、9行内容并且返回该行的内容。公式中最后的 &"" 作用是当读到那行本身也为空白时,如65536一般都是用不到的,这时公式也返回空白值(这样比较好看点),如果不加 &"" ,则返回0值。所以题目中列出来的公式不知是本身就没有&"",还是楼主你抄少了? ^_^


最后来说,为什么要用到4^8,4的8次方就是65536,这是EXCEL 2003支持最大的行数,所以写公式时也是为了考虑提问的朋友可能用的是EXCEL 2003才这样写的,如果这个数大于65536,在EXCEL 2003上运行,公式是会出错的。


我把文件传上来,请点击这回答右下角绿色的“点击下载”按钮,下载文件看看效果。


JEGDIHTDJ
2013-07-09 · TA获得超过1175个赞
知道小有建树答主
回答量:949
采纳率:0%
帮助的人:703万
展开全部
把你的公式修改为这样就可以了
INDEX(Sheet1!A:A,SMALL(IF(Sheet1!$B$1:$B$999<>"",ROW($1:$999),4^8),ROW(B1)))

下面是解释
INDEX(Sheet1!A:A,数字)是返回A列中第 “数字” 行的单元格
如INDEX(Sheet1!A:A,10)的意思就是返回A列中第10行,即A10

IF(Sheet1!$B$1:$B$999<>"",ROW($1:$999),4^8) 在这里是创建一个数组(不知道你有没有听过数组)

small(数组或区域,数字),返回 数字 指定的的按从小到大排序的数组区域 的值
如small({10,30,40,20},2),就是会返回20,因为20 在数组{10,30,40,20}中排倒数第二,
small({10,30,40,20},3)便回30
等等
SMALL(IF(Sheet1!$B$1:$B$999<>"",ROW($1:$999),4^8),ROW(B1)))这句下拉后,在单元格便组成一个新的数组,这个数组是从小到大排序其中的4^8是对应B列的空单元格,其它数字则是B列中单元格不为空的对应的行序号
综合上面,便可以返回出B列非空的对应任意其它列的数据
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式