论文部分内容阅读
通过函数快速完成转换
从图1中可以看出,左半部分每个员工的数据结构是一致的,所以我们只要在右侧的单元格中通过函数对原始数据进行引用就能完成转换。步骤如下:
1将F列设为辅助列,定位到F2单元格并输入公式“=OFFSET(A$2,INT((ROW(A1)-1) /4),MOD(ROW(A1)-1, 4))”,下拉填充到F49单元格(即直到最后一直出现“0,0,0,0”数据为止)。这样就会从F2单元格开始以A 2单元格中的数据作为第一个填充数据,按照从左到右再向下的顺序将表格左半部分中的内容依次引用到F列中(图2)。
公式解释:
这里先将A $ 2(对行的绝对引用)作为OFFSET函数引用的基准,接着使用INT函数向下取整的数值作为OF FS E T函数向下偏移的行数,比如在F3单元格中取整部分的公式为“INT((ROW(A 2)-1)/4)”,计算结果是“0”,即向下偏移0行(取第二行的值)。再使用MOD函数求得的余数作为OFFSET函数向右偏移的列数,同样在F3单元格中求余数的结果为M O D(ROW(A1)-1,4)=1,这样会向右偏移1列,即最终数值为“张三”。
2定位到H2单元格并输入公式“=INDEX($F$2:$F$49,IF(MOD(ROW($F2)*12,12)=0,COLUMN(A$1)+ROW($A1)*12-12))”,向下和向右填充到H5和O5单元格,这样F列中的数据就会转换成每个员工信息为一行的格式(图3)。
公式解释:
这里先将$F$2:$F$49(对数据区域的绝对引用)作为INDEX函数引用的区域,接着使用IF函数引用的数据作为引用的单元格,填充公式后即可实现从H列到O列依次引用F列中的数据。
接下来隐藏F列。通过这样的转换,我们再对员工信息进行排序和筛选就方便多了。
使用Word协助完成转换
很多时候我们需要转换的表格数据结构并不一致,比如下图的左侧是某班组的原始加班数据,现在需要转换成右侧的按照“带班班长”顺序进行排列的格式(图4)。由于每个班组的加班人数不同,使用上述的方法无法完成转换。
这时我们可以先为每个带班班长添加标记,然后在Word中通过对这个标记进行分段排列的方法来完成转换。步骤如下:
1先在Excel中插入一个A列作为标记列,定位到A2单元格并输入公式“=IF(C2="带班班长","a","b")”(表示使用IF函数对C列中的内容进行判断,如果单元格值为“带班班长”就标记为“a”,否则标记为“b”),下拉填充到A19单元格。
2在F2单元格中输入公式“= OFFSET(A$2,INT((ROW(B1)-1) /4),MOD(ROW(B1)-1,4))”,下拉填充到F73单元格;在H2单元格中输入公式“=INDEX($F$2:$F$73,IF(MOD(ROW($F2)*12,12)=0,COLUMN(A$1)+ROW($A1)*12-12))”,向右填充到CA2单元格。这样原始数据就会全部填充到H2:CA2区域中了(图5)。
3复制H2:CA 2区域,将数据以文本的方式粘贴到Word 2019的新建文档中。接着在Word中按下“Ctrl+H”快捷键打开“查找和替换”窗口,在“查找内容”处输入“a”、“替换为”处输入“^p”,然后点击“全部替换”按钮(图6)。
4再次打开“查找和替换”窗口,在“查找内容”處输入“b ”(字母后有一个制表符,可在记事本的任意两个字符之间按下Tab键,然后复制出现的空白字符并粘贴到此)、“替换为”处留空,点击“全部替换”按钮。完成替换后每个段落中的内容就会全部以“xx 带班班长”开头,每个班组为一个独立的段落进行显示了(图7)。
5复制整理后的所有数据,再将其粘贴到Excel文档中,即可实现如图所示的效果(图8)。