请教一个数据提取排序的问题
左边3列是举例的数据,真实数据有2000行,能否用函数实现:把前面三列的数据按顺序设定的顺序排列到另一个表吗?比如我顺序设定为一年级、二年级、三年级,那我需要在数据列循环查找一年级并且后面是100的,把一年级排列完后,又查找二年级。。。。。。麻烦大佬列个函数,前三列的数据和顺序设定可能随时发生变化首先汉字排序是不识别一二三的,会默认按拼音排,所以你得手动给每个项写个排序先后。如上图我手动在表一用123标注了每个年级的排序先后。
然后就很简单了,用filter函数筛选掉含空值的行后,用sortby排序数组,排序使用的数组为对应年级匹配表1的排序优先级列后得到的结果。
=SORTBY(FILTER(A3:C30,(B3:B30<>"")*(C3:C30<>"")),INDEX(表1,MATCH(FILTER(B3:B30,(B3:B30<>"")*(C3:C30<>"")),表1[名称],0),2)) 如你所愿:
=IFERROR(INDIRECT("r"&RIGHT(SMALL(IFNA(IF($C$3:$C$30=100,MATCH($B$3:$B$30,$E$1:$G$1,)/1%%+$A$3:$A$30),""),ROW(A1)),4)+2&"c"&COLUMN(A1),),"")
数组三键,右拉下拉
=IFERROR(INDEX(A:A,MOD(SMALL(IF($B$3:$B$2000&$C$3:$C$2000=$E$1:$G$1&100,{1,2,3}/1%%+ROW($3:$2000)),ROW(A1)),10^4)),"") 谢谢,万分感谢! 谢谢了,只是我是2016版,filter函数用不起! 非数组,F5:=LOOKUP(1,0/FREQUENCY(1%,(COUNTIF($F$4:$F4,$A$3:$A2000)=0)*($C$3:$C2000=100)*MATCH($B$3:$B2000&"",$E$1:$H$1&"",)),A$3:A2000)
右拉下拉。
页:
[1]