将多行转置为Libre Office中的单个列

时间:2015-03-24 09:15:57

标签: libreoffice-calc

我有一组245行深28列宽的数据。我想将每行数据移动到一个列中,然后将每行数据垂直堆叠在下面的行上方。我不能只使用复制,粘贴,转置,因为它让我有很多手动工作将245列合并为一列。

e.g。来自:
A B C D
1 2 3
4 5 6
7 8 9

于:
一个
1
2
3
4
5
6
7
8
9

对此的任何帮助都会非常值得赞赏!

1 个答案:

答案 0 :(得分:1)

假设您的数据位于Sheet1中,而您的结果应位于Sheet2中。在Sheet2.A1中输入以下公式并根据需要填写。

=INDEX($Sheet1.$A$1:$AMJ$1000,INT((ROW(A1)-1)/COUNTA($Sheet1.$A$1:$AMJ$1))+1,MOD((ROW(A1)-1),COUNTA($Sheet1.$A$1:$AMJ$1))+1)

也许您必须使用分号代替逗号作为公式分隔符:

=INDEX($Sheet1.$A$1:$AMJ$1000;INT((ROW(A1)-1)/COUNTA($Sheet1.$A$1:$AMJ$1))+1;MOD((ROW(A1)-1);COUNTA($Sheet1.$A$1:$AMJ$1))+1)

工作原理:

基本上这是正常的INDEX(range,row,column)

row部分为INT((ROW(A1)-1)/COUNTA($Sheet1.$A$1:$AMJ$1))+1。假设您在A1:J1的第1行填充了10个单元格。然后COUNTA部分得到10.然后它计算0 / 10,1 / 10,2 / 10,......,10 / 10,11 / 10的整数部分......取决于多少下来填写公式是因为A1中的ROW(A1)更改为A2A3,...这是10倍0,然后10倍1,然后10倍2 ,...然后它添加1.所以我们有10次第1行,然后10次第2行,...

column部分为MOD((ROW(A1)-1);COUNTA($Sheet1.$A$1:$AMJ$1))+1。再次假设,COUNTA部分得到10.然后它计算0 / 10,1 / 10,2 / 10,......,9 / 10,10 / 10,11 / 10,...的残差。取决于你填写配方的程度。所以,加上1,我们有1,2,3,... 10,1,2,3,...... 10,......