当前位置: 首页 > Excel > Excel常用函数 > ExcelExcel技巧 > INDEX+SMALL乾坤大挪移 满足条件的数据自动“跑到”其它

INDEX+SMALL乾坤大挪移 满足条件的数据自动“跑到”其它

发布时间:2020年09月27日 08:18:00 来源: 点击量:483

【摘要】问题来源学习群里,有朋友提出的问题:如下两个数据表,一个是全部工作表,一个是已对(已经核对)工作表,如何使得全部工作中,每核对一条

问题来源

学习群里,有朋友提出的问题:

如下两个数据表,一个是“全部”工作表,一个是“已对”(已经核对)工作表,如何使得“全部”工作中,每核对一条,数据会自动从“全部”工作表“自动”跑到“已对”工作表,即:

INDEX+SMALL乾坤大挪移 满足条件的数据自动“跑到”其它工作表

结果如下动图:

INDEX+SMALL乾坤大挪移 满足条件的数据自动“跑到”其它工作表

公式实现

在A2单元格输入公式:

=INDEX(全部!A:A,SMALL(IF(全部!$F:$F="已对",ROW(全部!A:A),ROWS(A:A)),ROW(A1)))&"",以<Ctrl+Shift+Enter>三键组合结束;

公式向下填充,填充到和“全部”数据表中的行数一致。

INDEX+SMALL乾坤大挪移 满足条件的数据自动“跑到”其它工作表

公式解析

ROWS(A:A):

整个工作表的行数,EXCEL2016默认工作表行数为1048576。此处用工作表最大行数,使得不管数据有多少行,公式都能使用。

IF(全部!$F:$F="已对",ROW(全部!A:A),ROWS(A:A)):

用IF函数,建立一新的数组,这一新的数组建立的规则是:

如果“全部”工作表中F列单元格内容等于“已对”,则返回该单元格所在的行,否则返回整个工作表的行数。

所以:

如果“全部”工作表中第二行数据已经核对(标题行为第一行),“已对”工作表中A2单元格的公式,此部分返回的数组是:

{1048576;2;1048576;1048576;1048576;1048576;1048576;1048576;1048576;1048576;……}

如果“全部”工作表中第五行数据已经核对(标题行为第一行),“已对”工作表中A2单元格的公式,此部分返回的数组是:A3单元格的公式,此部分返回的数组是:

{1048576;1048576;1048576;1048576;5;1048576;1048576;1048576;1048576;1048576;……}

SMALL(IF(全部!$F:$F="已对",ROW(全部!A:A),ROWS(A:A)),ROW(A1)):

从上一步数组中取出的ROW(A1)小的数值。

ROW(A1)是一个动态的数值,公式往下填充一行,行数加1,即当公式在A3单元格时,是ROW(A2),当公式填充到A4单元格是,是ROW(A3),当到A5单元格时,是ROW(A3)……

这样,就在A2、A3、A4、A5……的数组中找到了第1、2、3、4小的值,即第一条、第二条、第三条、第四条……已经核对的数值。

$F:$F,F列绝对引用,因为不管公式向下、向右填充,是否核对都在F列。

INDEX(全部!A:A,SMALL(IF(全部!$F:$F="已对",ROW(全部!A:A),ROWS(A:A)),ROW(A1))):

当公式在A2单元格时,返回第一条“已对”数据的A列的值,当公式在A3单元格时,返回第二条“已对”数据的A列的值……

因为公式中IF部分是数组计算,所以公式以<Ctrl+Shift+Enter>三键组合结束。

公式向右填充,得到“已对”数据B列值……

INDEX(全部!A:A,SMALL(IF(全部!$F:$F="已对",ROW(全部!A:A),ROWS(A:A)),ROW(A1)))&"":

在最后加上&"",这一步是容错处理。用空单元格与空文本合并返回空文本的特性,将超出结果数量的部分不显示出来。

分享到: 编辑:wangmin

就业培训申请领取
您的姓名
您的电话
意向课程
点击领取

环球青藤

官方QQ

扫描上方二维码或点击一键加群,免费领取大礼包,加群暗号:青藤。 一键加群

绑定手机号

应《中华人民共和国网络安全法》加强实名认证机制要求,同时为更加全面的体验产品服务,烦请您绑定手机号.

预约成功

本直播为付费学员的直播课节

请您购买课程后再预约

环球青藤移动课堂APP 直播、听课。职达未来!

安卓版

下载

iPhone版

下载
环球青藤官方微信服务平台

刷题看课 APP下载

免费直播 一键购课

代报名等人工服务

课程咨询 学员服务 公众号

扫描关注微信公众号

APP

扫描下载APP

返回顶部