Excel 按组拆分每行文字后求交集
A列是分组列,对应B列里多行逗号分隔的文字:
A |
B |
|
1 |
1 |
4,9,3,1,7 |
2 |
1 |
7,5,2,9,4, |
3 |
1 |
8,5,7,9 |
4 |
1 |
4,1,3,8,9,7 |
5 |
2 |
4,8,2 |
6 |
2 |
1,2,7,8 |
7 |
2 |
3,1,8,6 |
8 |
2 |
6,3,4,9,2,5,8 |
9 |
2 |
0,4,8,6,9 |
10 |
3 |
8,3,4,7,2 |
11 |
3 |
2,4,6,9,3 |
12 |
4 |
1,8,2,5 |
要求按组拆分每行的文字,再对组内各行求交集,用逗号合并结果,填入每组的第1行里。如下D列:
A |
B |
C |
D |
|
1 |
1 |
4,9,3,1,7 |
9,7 |
|
2 |
1 |
7,5,2,9,4, |
||
3 |
1 |
8,5,7,9 |
||
4 |
1 |
4,1,3,8,9,7 |
||
5 |
2 |
4,8,2 |
8 |
|
6 |
2 |
1,2,7,8 |
||
7 |
2 |
3,1,8,6 |
||
8 |
2 |
6,3,4,9,2,5,8 |
||
9 |
2 |
0,4,8,6,9 |
||
10 |
3 |
8,3,4,7,2 |
3,4,2 |
|
11 |
3 |
2,4,6,9,3 |
||
12 |
4 |
1,8,2,5 |
1,8,2,5 |
使用 SPL XLL,输入公式:
=spl("=?.group(~(1)).conj([~.isect(~(2).split@c()).concat@c()].pad(null,~.len()))",A1:B12)
group(~(1))按第 1 列分组,split 拆分各组的第 2 列,isect 求交集,用 concat 拼出串,pad 这补齐空白与 A 列对齐。
https://stackoverflow.com/questions/78400799/how-to-apply-a-formula-to-only-certain-functions
英文版