easyuidatagrid最后一行index_在Excel表格中按一定条件进行归类整理,index+small+if,offset+small+if...

假设一下情况:

左侧是我们的原始数据,有姓名,以及每个人对应所在的班级,但可能存在比较乱的情况(一年级,二年级,三年级杂乱排列的)

要求:

把不同的年级进行一下整理,整理成右侧的格式。

各个年级的分别显示到对应的一行当中。

e6688d5d070a87ba6ea853f0bddb5b55.png

方法/步骤1:

在E2单元格输入:

=INDEX($A$1:$A$9,SMALL(IF($B$1:$B$9=$D2,ROW($B$1:$B$9),4^8),COLUMN(A1)))&""

按Ctrl+shift+回车,向右拖拽公式,向下拖拽公式,即可实现一二三年级对应的人员姓名。

0e795a19b0a8704517fbb1717f96357a.png

=INDEX($A$1:$A$9,SMALL(IF($B$1:$B$9=$D2,ROW($B$1:$B$9),4^8),COLUMN(A1)))&""

要显示的内容区域,并加以锁定$,可以通过按F4进行添加锁定符$。

在这里,我们要显示的是姓名,所以,要选择姓名部分。

=INDEX($A$1:$A$9,SMALL(IF($B$1:$B$9=$D2,ROW($B$1:$B$9),4^8),COLUMN(A1)))&""

条件区域中要求的条件。

年级区域所对应的一年级,二年级,三年级等,$D2在这里,只锁定列,是因为下拉的时候,要自动变成二年级,三年级。

=INDEX($A$1:$A$9,SMALL(IF($B$1:$B$9=$D2,ROW($B$1:$B$9),4^8),COLUMN(A1)))&""

这一节可以变成ROW($a$1:$a$9),ROW($c$1:$c$9),都是可以的。

=INDEX($A$1:$A$9,SMALL(IF($B$1:$B$9=$D2,ROW($B$1:$B$9),4^8),COLUMN(A1)))&""

是4的8次方,也就是一个很大的数,根据实际,只要是比你原数据还要大的行数就行,比如,你的原数据有2000行,你输入一个3000也行。

=INDEX($A$1:$A$9,SMALL(IF($B$1:$B$9=$D2,ROW($B$1:$B$9),4^8),COLUMN(A1)))&""

这一个参数,是右拉的时候,会自动调取符合条件的第几个值。

比如,符合条件为一年级的,区域在姓名列中,找到第一个姓名,右拉再找到第二个,再右拉找到第3个。依次……

=INDEX($A$1:$A9,SMALL(IF($B$1:$B9=$D2,ROW($B$1:$B9),4^8),COLUMN(A1)))&""

上面和下面的2种写法都可以

=INDEX($A$1:$A$9,SMALL(IF($B$1:$B9=$D2,ROW($B$1:$B$9),4^8),COLUMN(A1)))&""

方法/步骤2:

下面分层介绍,if返回一个一维数组,if(条件,为真则返回,为假则返回),IF($B$1:$B9=$D2,ROW($B$1:$B9),4^8),如果与D2单元格值相同则反馈B列单元格的行号,如果为假,则返回4^8即65536(97-03版excel单元格个数),所以if函数最终返回值要么是指定单元格对于行号,要么是65536(数据量较大时需具体分析)

77e1c24d5a74395ae55fc44cd9b659c3.png

方法/步骤3:

small返回数组中第K个最小值,small(array,k),此处将if函数返回的数组作为small的第一参数,返回数组中第COLUMN(A1)个最小值,E列为COLUMN(A1)=1,即第一个最小值,F 列为第二个最小值,以此类推,SMALL(IF($B$1:$B9=$D2,ROW($B$1:$B9),4^8),COLUMN(A1)),所以small函数最终返回的是if函数里的行号

方法/步骤4:

最后是index函数,返回行列交叉单元格的值,index(array,row_num,[column_num]),small函数作为index的第二个参数,与array即$A$1:$A9交叉处即为需要返回的值。

方法/步骤5:

&""是为了避免0值得出现,在右拉后,如果结果已全部查询完毕,可能会出现错误提示,可将公式嵌套到iferror中,=IFERROR(INDEX($A$1:$A9,SMALL(IF($B$1:$B9=$D2,ROW($B$1:$B9),4^8),COLUMN(A1)))&"","") 完成后三键齐按(ctrl+shift+回车)即可。

除了使用index配合small和if使用外,也可以使用offset配合small和if来进行使用。


下面为部分历史Excel精彩教程

Excel表格中如何把行转成列或者说把多列转多行,Excel置换

让excel自动生成录入数据的时间

学生在学校的总排名以及在各班排名

bdfbdc9e1eec7682e53ced526ccfc3b7.gif制作表格有难题扫码来帮你 e248b14fe2a7ae829724582ab79e37e0.png长按咨询客服

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值