【菁培函高班PK】按条件数据转置

尹俊超
尹俊超

创作者俱乐部成员

📢

要求:请使用函数公式作答,将表AB两列的学生以宿舍为单位进行转置,使每个宿舍的学生横向排列。

PS:目前动态数组还未正式发布,为增加案例受益面,答题时请不要使用动态数组功能

题目:

结果示例:

欢迎各位大佬解答!让我看看谁的思路最好理解,谁最卷字符🤩

💡

案例源文件:按条件数据转置案例源数据

河南省
浏览 739
收藏
7
分享
7 +1
8
+1
全部评论 8
 
张俊
张俊

WPS函数专家

更新了11个函数后,再来做超哥的题目,争取一口气,一个公式做出来,具体公式如下: =TEXTSPLIT(TEXTJOIN(",",,HSTACK(";"&SORT(UNIQUE(B2:B39)),IF(TRANSPOSE(B2:B39)=SORT(UNIQUE(B2:B39)),TRANSPOSE(A2:A39),""))),",",";",1,,"无") 具体效果如图所示:
· 上海
1
回复
尹俊超
尹俊超

创作者俱乐部成员

俊哥太迅速了,新函数也太猛了
· 河南省
1
回复
 
尹俊超
尹俊超

创作者俱乐部成员

说一下我的想法: 解法1:通过一个公式根据宿舍号升序提取并转置数据 函数公式(用CSE键后向右填充和向下填充:):=IFERROR(INDEX(FILTER($A:$A,$B:$B=INDEX(SORT(UNIQUE($B$2:$B$39),,1),ROW(A1))),COLUMN(A1)),"无") PS:该解法没有完全符合参照答案的结果示例故仅供参考。 解法2:不使用数组公式: 第一步:跟航哥的第一步一样先使用UNIQUE函数将B列的房间号去重,然后按照宿舍号升序排序,在区域内使用CSE键: =SORT(UNIQUE(B2:B39),1) 第二步:通过Filter和index函数取值函数公式(直接右拉下拉公式即可):=IFERROR(INDEX(FILTER($A:$A,$B:$B=$E2),COLUMN(A1)),"无")
· 河南省
1
回复
 
刘航
刘航

创作者俱乐部成员

我是这样做的: 首先用UNIQUE函数将B列的房间号去重,然后按照宿舍号升序排序,在区域内使用CSE键: =SORT(UNIQUE(B2:B39),1) 在对应的室友查询部分,我使用的是这种方式,同样需要用CSE键后向右填充和向下填充: =IFERROR(INDEX($A$1:$A$39,SMALL(IF($B$2:$B$39=$E2,ROW($2:$39),2^10),COLUMN(A1)),),"无") 等待更好的方法~
· 北京
2
回复
尹俊超
尹俊超

创作者俱乐部成员

航哥加鸡腿
· 河南省
回复