Google Sheets中如何按列对交替合并表格数据?
解决Google Sheets中按行内列组堆叠数据的问题
原始数据
| A | B | C | D |
|---|---|---|---|
| 1 | 2 | 3 | 4 |
| 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 |
当前公式及结果
使用公式 ={A1:B3;C1:D3} 会先堆叠A1:B3的所有行,再堆叠C1:D3的所有行,得到如下结果:
| E | F |
|---|---|
| 1 | 2 |
| 5 | 6 |
| 9 | 10 |
| 3 | 4 |
| 7 | 8 |
| 11 | 12 |
期望结果
需要按行内分组堆叠,即先显示第1行的A:B,再显示第1行的C:D,接着第2行的A:B、C:D,以此类推:
| E | F |
|---|---|
| 1 | 2 |
| 3 | 4 |
| 5 | 6 |
| 7 | 8 |
| 9 | 10 |
| 11 | 12 |
可行解决方案
方法1:使用REDUCE遍历行合并
=LET( row_range, A1:A3, combined, REDUCE("", row_range, LAMBDA(acc, current_row, {acc; OFFSET(current_row, 0, 0, 1, 2); OFFSET(current_row, 0, 2, 1, 2)})), DROP(combined, 1) )
- 原理:用
REDUCE遍历每一行,依次将当前行的A:B和C:D区域添加到结果中,最后用DROP移除初始的空行。
方法2:使用INDEX和SEQUENCE定位单元格
=INDEX(A1:D3, ROUNDUP(SEQUENCE(6)/2, 0), IF(MOD(SEQUENCE(6), 2)=1, {1,2}, {3,4}))
- 原理:
SEQUENCE(6)生成1-6的序列,ROUNDUP(SEQUENCE(6)/2,0)将序列转换为1,1,2,2,3,3,对应原始数据的行号;IF(MOD(...)控制列的选择,奇数行选A:B(列1-2),偶数行选C:D(列3-4)。
内容的提问来源于stack exchange,提问作者Digital Farmer
相关产品推荐
相关产品推荐

