将1个长单列转换为2列,以便在Excel中进行打印

时间:2017-09-21 16:36:43

标签: excel

基本上我有一个需要打印的超过100,000个名字的列表。为了节省空间,我希望它们显示为2列,并且似乎无法找到一种简单的方法。

目前:

1. A
2. B
3. C
4. D
5. E
6. F
7. G
8. H
9. I
10. J

我想做的是:

1. A    6. F
2. B    7. G
3. C    8. H
4. D    9. I
5. E    10. J

我也可以:

1. A    2. B
3. C    4. D
5. E    6. F
7. G    8. H
9. I    10. J

2 个答案:

答案 0 :(得分:4)

如果您的数据位于A列和B列,请在C列第一行输入以下公式,将其拖到右侧然后向下,

=IF(ISODD(COLUMN()),INDEX($A:$A,ROW()*2-1,0),INDEX($A:$A,ROW()*2,0))

enter image description here

答案 1 :(得分:0)

我想知道我是否可以为此制定一个相当普遍的解决方案。

以下是两列的公式

=IF(ROW()<=(COUNTA($A:$A)+3-COLUMNS($B:C))/2,INDEX($A:$A,COUNTIFS($B:B,"<>",$B:B,"<> ")+ROW())," ")

从C栏开始

enter image description here

通过更改常量

可以将其更改为3列
=IF(ROW()<=(COUNTA($A:$A)+4-COLUMNS($B:C))/3,INDEX($A:$A,COUNTIFS($B:B,"<>",$B:B,"<> ")+ROW())," ")

enter image description here

修改

如果COUNTIFS有点慢,则公式为

=IF(ROW()<=(COUNTA($A:$A)+2-COLUMNS($B:B))/2,INDEX($A:$A,(COUNTA($A:$A)+3-COLUMNS($B:B))*(COLUMNS($B:B)-1)/2+ROW()),"")

=IF(ROW()<=(COUNTA($A:$A)+3-COLUMNS($B:B))/3,INDEX($A:$A,(COUNTA($A:$A)+4-COLUMNS($B:B))*(COLUMNS($B:B)-1)/3+ROW()),"")