找回密码
 立即注册
搜索

请教一个数据提取排序的问题

6
回复
1228
查看
[复制链接]

2

主题

4

帖子

3

幻币

初入江湖

Rank: 1

积分
10
2021-11-11 22:55:00 显示全部楼层 |阅读模式
左边3列是举例的数据,真实数据有2000行,能否用函数实现:把前面三列的数据按顺序设定的顺序排列到另一个表吗?比如我顺序设定为一年级、二年级、三年级,那我需要在数据列循环查找一年级并且后面是100的,把一年级排列完后,又查找二年级。。。。。。麻烦大佬列个函数,前三列的数据和顺序设定可能随时发生变化

排序问题.rar (8.3 KB, 下载次数: 10)
PPT学习论坛
回复

使用道具 举报

0

主题

2

帖子

-1

幻币

初入江湖

Rank: 1

积分
0
2021-11-27 15:06:04 显示全部楼层
13947608df655383e95348aa661746c7.png
首先汉字排序是不识别一二三的,会默认按拼音排,所以你得手动给每个项写个排序先后。如上图我手动在表一用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))
PPT学习论坛
回复 支持 反对

使用道具 举报

1

主题

8

帖子

1

幻币

初入江湖

Rank: 1

积分
10
2021-12-13 19:25:05 显示全部楼层
如你所愿:
=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),),"")

a5a8fd34d8eb62409bf495b9100a159a.png
PPT学习论坛
回复 支持 反对

使用道具 举报

1

主题

7

帖子

1

幻币

初入江湖

Rank: 1

积分
9
2022-1-2 22:08:27 显示全部楼层
数组三键,右拉下拉

=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)),"")
PPT学习论坛
回复 支持 反对

使用道具 举报

0

主题

4

帖子

-1

幻币

初入江湖

Rank: 1

积分
2
2022-2-2 16:18:58 显示全部楼层
谢谢,万分感谢!
PPT学习论坛
回复 支持 反对

使用道具 举报

1

主题

6

帖子

1

幻币

初入江湖

Rank: 1

积分
8
2022-2-10 03:37:04 显示全部楼层
谢谢了,只是我是2016版,filter函数用不起!
PPT学习论坛
回复 支持 反对

使用道具 举报

1

主题

6

帖子

1

幻币

初入江湖

Rank: 1

积分
8
2022-2-18 07:05:07 显示全部楼层
非数组,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)

右拉下拉。
PPT学习论坛
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册