一列转多列 轻松制作Excel表彰名单

CFan 电脑爱好者 2019-01-25 08:55应用 标签:名单 制作 Excel

摄影大赛的比赛结果存放在一个Excel工作表中,有名次和姓名两列,现在需要将获奖名单中的前50名获奖者写入单位的通报中。通报是用Word编写的,如何才能将这些数据以多列格式编排到Word文档中?若将一列数据直接复制到Word文档中,然后再进行编排比较费事。如果在Excel中将一列转换成多列,再复制粘贴到Word文档中,就会省事不少。

1. 公式法

在原有数据工作表的D2单元格中输入公式“=OFFSET($B$1,(ROW(A1)-1)*8+COLUMN(A1),)&""”,向右、向下拖动填充,这样就将单列名单数据转换成8列数据。

1802A-LZH-1

上述公式的意思是以B1单元格为基点,行偏移量为(ROW(A1)-1)*8+COLUMN(A1),这样公式每向右复制一列,偏移量增加1,公式每向下复制一行,偏移量增加8。在公式最后加上&"",为的是屏蔽掉B列为空时出现的0值。而函数ROW()获取的是当前行号,COLUMN()获取的是当前列号。

当然,也可以将公式替换为“=INDEX($B:$B,(ROW(B1)-1)*8+COLUMN(B1))”。INDEX函数在B列根据ROW(B1)-1)*8+COLUMN(B1)的值返回单元格的值。

上面公式数据源是B列数据,从B1开始,ROW(B1)-1=0,COLUMN(B1)=2,第一个单元格的值就会取自B2;右拉,就变成(ROW(C1)-1)*8+COLUMN(C1) =3,第二单元格的值就会取自B3;再右拉,变成(ROW (D1)-1)*8+ COLUMN (D1)=4,第三单元格的值就会取自B4,依此类推。再下拉一排,上面函数的值应该是(ROW (B2)-1)*8+ COLUMN(B2) =10,所以第二行第一个单元格的值就会取自B10,依此类推。

1802A-LZH-2

2. 替代法

在D2单元格输入“B2&""”,向右拖动填充到K2;在D3单元格输入“B10&""”,向右拖动填充到K3;同时选中D2:K3,向下拖动填充到第8行;删除多余的单元格内容,即50名以后的单元格。

1802A-LZH-3

接下来,调出替换对话框:查找内容输入“B”,替换为输入“=B”,点击全部替换就可以了。

小提示:这里的“B”,是数据所在列的列号。