如何在Google Sheets中将表格对角线转置为交替垂直列表
用公式实现表格的对角线交替转置(生成垂直列表)
需求是将表格数据转置为垂直列表,按对角线交替取值的方式排列,避免连续引用同一行或列,优先用公式实现,不使用Google脚本。
适用场景(Google Sheets)
假设原始数据区域为A1:D4(可根据实际表格范围修改),使用以下公式即可生成目标垂直列表:
=LET( data, A1:D4, rows, ROWS(data), cols, COLUMNS(data), total, rows*cols, seq, SEQUENCE(total), diag_num, CEILING(seq/(rows+cols-1),1), is_odd, MOD(diag_num,2)=1, row_idx, IF(is_odd, seq-(diag_num-1)*(rows+cols-1), rows+cols-diag_num - (seq-(diag_num-1)*(rows+cols-1)) +1), col_idx, IF(is_odd, diag_num - row_idx +1, row_idx + diag_num - (rows+cols)), INDEX(data, row_idx, col_idx) )
公式说明
LET函数用于定义变量,简化公式结构:data:指定原始数据的单元格区域rows/cols:自动获取数据区域的行数和列数total:计算数据总个数,用于生成序列
- 通过
SEQUENCE生成连续序列,配合CEILING计算每个元素所属的对角线编号 - 用
MOD判断对角线编号的奇偶性,决定当前对角线的遍历方向(奇数对角线从左上到右下,偶数对角线从右下到左上) - 计算每个序列位置对应的行/列索引,最后用
INDEX提取对应单元格的值
如果你的表格是矩形(非正方形),只需修改data变量对应的区域即可,公式会自动适配。
内容的提问来源于stack exchange,提问作者jonbstrong
相关产品推荐
相关产品推荐

