对不起,如果标题令人困惑,但视觉效果应该会有所帮助:
这是我的工作表的样子:
A B C D
1 x y z t
2 q w e r
3 y u i o
我需要生成一个单独的表格,其中:
A B C
1 x y t
2 x z t
3 q w r
4 q e r
...
基本上,我需要转换原始工作表的中间两列,并将相邻的列拉入我的新工作表(作为重复行)。
我让转置工作正常,当我拉出相邻的列时也是如此。问题是,我无法自动填写表格。当我试图拖延时自动填充,而不是使用原始工作表中的第2行自动填充,新工作表将使用第3行(在新工作表中与#行相同)自动填充。
如果这没有意义,请告诉我,我会尝试更好地解释!我不太熟悉Google Spreadsheets脚本 - 我之前尝试过,但它们看起来相当麻烦。但我也很乐意尝试这一点。
答案 0 :(得分:3)
我不确定转置操作会在哪里发挥,但是有点条件数学和INDEX function¹就足够了。
=INDEX($A$1:$D$3,(ROW(1:1)-1)/2+1,IF(COLUMN(A:A)=3,4,IF(AND(ISEVEN(ROW(1:1)),COLUMN(A:A)=2),3,COLUMN(A:A))))
我链接到的文档是Excel,但语法对于这些目的是相同的。
更多专栏的附录
通过调整第三列之后的偏移条件,可以很容易地考虑更多的列。
=INDEX($A$1:$J$3,(ROW(1:1)-1)/2+1,IF(COLUMN(A:A)>=3,COLUMN(A:A)+1,IF(AND(ISEVEN(ROW(1:1)),COLUMN(A:A)=2),3,COLUMN(A:A))))
以上从源矩阵中收集了10列,但应该对几乎任意数量的列进行自动调整。
¹ INDEX function接受行号和列号的参数。虽然通常只使用其中一种,但对于2D系列细胞的供应没有限制。
将row_number计算,=(ROW(1:1)-1)/2+1
放入单元格并填写。您将收到1,1,2,2,3,3等。这将提供A1:D3范围内的重复行号。
将column_number计算,=IF(COLUMN(A:A)=3,4,IF(AND(ISEVEN(ROW(1:1)),COLUMN(A:A)=2),3,COLUMN(A:A)))
左列入单元格并向右和向下填充。第一行将获得1,2,4,第二行将获得1,3,4。此模式为后续行重复,并提供A1:D3范围内的偏移列号。
答案 1 :(得分:0)