有一个用Excel表格表示的赛事分组图,从C1:V13,每6列表示四个选手的一桌比赛,1-16表示16位选手的编号。
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | |
1 | 1 | 8 | 14 | 11 | 12 | 2 | 1 | 4 | 3 | 13 | 10 | 15 | 16 | 6 | 5 | |||||||
2 | 2 | 3 | 1 | 5 | 7 | 9 | 11 | 13 | 15 | 2 | 4 | 6 | 8 | 10 | 12 | |||||||
3 | 3 | 11 | 8 | 14 | 15 | 3 | 6 | 9 | 12 | 13 | 16 | 5 | 2 | 1 | 4 | |||||||
4 | 4 | 9 | 13 | 1 | 5 | 4 | 8 | 12 | 16 | 3 | 7 | 10 | 14 | 2 | 6 | |||||||
5 | 5 | 3 | 2 | 11 | 16 | 14 | 7 | 10 | 15 | 1 | 6 | 12 | 13 | 8 | 5 | |||||||
6 | 6 | 2 | 14 | 3 | 9 | 7 | 1 | 13 | 8 | 5 | 11 | 6 | 4 | 15 | 12 | |||||||
7 | 7 | 12 | 6 | 13 | 7 | 4 | 5 | 12 | 11 | 1 | 8 | 15 | 9 | 2 | 16 | |||||||
8 | 8 | 1 | 9 | 2 | 10 | 7 | 15 | 8 | 16 | 3 | 11 | 4 | 12 | 5 | 13 |
请计算出任意两名选手在同一桌的次数,用矩阵图表示。
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | |
11 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | ||
12 | 1 | |||||||||||||||||
13 | 2 | 2 | ||||||||||||||||
14 | 3 | 2 | 3 | |||||||||||||||
15 | 4 | 2 | 2 | 2 | ||||||||||||||
16 | 5 | 2 | 1 | 1 | 2 | |||||||||||||
17 | 6 | 1 | 2 | 1 | 2 | 2 | ||||||||||||
18 | 7 | 2 | 0 | 2 | 0 | 1 | 1 | |||||||||||
19 | 8 | 2 | 1 | 0 | 2 | 1 | 1 | 2 | ||||||||||
20 | 9 | 3 | 2 | 2 | 0 | 1 | 1 | 0 | 1 | |||||||||
21 | 10 | 1 | 1 | 1 | 0 | 0 | 0 | 2 | 0 | 1 | ||||||||
22 | 11 | 0 | 1 | 2 | 3 | 2 | 1 | 0 | 2 | 1 | 0 | |||||||
23 | 12 | 1 | 0 | 2 | 3 | 1 | 3 | 1 | 2 | 1 | 1 | 3 | ||||||
24 | 13 | 3 | 1 | 0 | 0 | 3 | 2 | 2 | 1 | 2 | 1 | 1 | 2 | |||||
25 | 14 | 0 | 1 | 2 | 0 | 0 | 0 | 2 | 2 | 1 | 2 | 2 | 1 | 0 | ||||
26 | 15 | 1 | 0 | 0 | 0 | 0 | 0 | 2 | 3 | 2 | 2 | 2 | 1 | 2 | 2 | |||
27 | 16 | 0 | 3 | 1 | 1 | 1 | 0 | 1 | 2 | 0 | 1 | 1 | 1 | 2 | 0 | 2 |
使用 SPL XLL,在C13输入公式:
````
=spl("=?1.conj(~.group((#-1)\6)).count( ~.contain( ?2,?3) )",$C$1:$V$8,$B13,C$11)
````
上面公式只算出了一格,需要通过拖拽算出其他格,并避开对角线(自己和自己同桌无意义)。注意整个矩阵会重复算两遍,所以只要拖拽出三角形区域就可以了。
函数 group 用于分组,# 表示当前成员的序号,~ 表示当前成员,函数 contain 计算指定的多个项目是否都是某个序列的成员。
免费课程、免费软件下载