这是我们想要复刻的效果图,我只复刻右边的矩阵排列图(名字随便起的)
图表解释:这是23年世界前top100的大学排名,左边条形图统计不同国家上榜的大学数量,右边展示各个学校的排名。如图选中美国,右边展示对应美国的学校的排名。
思路:
1. 根据排名,建立 1-99 排序
2. 建立一个9 * 10 的矩阵,人为限制每行展示10个数
然后我们来新建一个虚拟数据集实验一下:
1. 新建内置数据集,输入数据1-11
我们想要实现的效果:
11个数字,如果一行展示5个数,那就是 3 * 5 ,是一个3行5列的矩阵。
D3是行序号,C4是列序号,B4是辅助列
D3 = RANGE(1,5,1)
C4 = RANGE(0,B4,1) -----------------B4 = 2
D3公式:使用range函数,1到5,递进+1,得到:1,2,3,4,5 (5列,列序号)
C4公式: 使用range函数,0到2,递进+1,得到:0,1,2(3行,行序号)
B4公式解析:在数据集Embedded1里找rank字段,取最大值11,/ 5向下取整,得到 :2
现在我们行(5)和列(3)都有了
拖拽字段rank到D4单元格,左父格C4,上父格D3,设置过滤条件。
D4公式解析:
同时满足两个条件:(一个整除一个求余数,就这俩结合)
1. IF(D3 <> 5,FLOOR($$$ / 5) = C4,FLOOR($$$ / 5) = C4 + 1)
2. IF(D3 <> 5,$$$ % 5 = D3,$$$ % 5 = 0)
假设$$$ = 8,
1. 当D3不等于5时,8/5向下取整 = 1,在第一行
2.当D3不等于5时,8整除5,余3,在第三列
所以8在1行3列
假设$$$ = 5,
1. 当D3<>5时,5/5向下取整 = C4,1 = C4, FALSE; 当D3=5时,5/5向下取整 = C4+1,1 = C4 +1 ,在第0行
2.当D3<>5时,5整除5 = D3, 0 = D3, FALSE; 当D3=5时,5整除5 =0,在第五列
所以5在0行5列
假设$$$ = 10,
1. 当D3<>5时,10/5向下取整 = C4,2 = C4, FALSE; 当D3=5时,10/5向下取整 = 2,2 = C4 +1 在第1行
2.当D3<>5时,10整除5 = D3, 0 = D3, FALSE; 当D3=5时,10整除5,余0,在第五列
所以10在1行5列
这个讲起来略有点复杂,实验一下吧。