在工作中有遇到这样一个问题,将一张多维的表格按照月份转换为二维表格。如图所示原始图
1501575072696770.jpg
结果图
1501575085109520.jpg
由于实际的数据量比较多,如果采取剪切、粘贴的方法,操作相当繁琐。这里我们介绍使用VBA代码实现上述要求.
1501575786587125.jpg
详细源码:Sub test() Application.ScreenUpdating = False a = 2 For j = 2 To Sheets(1).Cells(Rows.Count, 1).End(3).Row Sheets(1).Cells(j, 1).Resize(1, 6).copy Cells(a, 1) For i = 7 To 18 If Len(Sheets(1).Cells(j, i)) > 0 Then Sheets(1).Cells(j, 1).Resize(1, 6).copy Cells(a, 1) Cells(a, 7) = Sheets(1).Cells(1, i) Cells(a, 8) = Sheets(1).Cells(j, i) a = a + 1 End If Next i Next j Application.ScreenUpdating = True End Sub
代码检查无误之后,依次选择“文件→关闭并返回到Microsoft Excel”命令,返回Excel主界面,按下“Alt+F8”组合键,打开“宏”对话框,选择并运行宏。效果图
1501575786439655.jpg
使用公式法:选择F2单元格,在编辑栏输入公式“=OFFSET(原表!A$2,MOD(ROW(A11),11),)”,向右、向下拖拽填充柄至F2单元格;选择G2单元格,在编辑栏输入公式“=OFFSET(原表!$G$1,(COLUMN(A1)>1)*(MOD(ROW(A1)-1,11)+1),INT((ROW(A1)-1)/11))”,向右拖拽填充柄至H2单元格,公式执行之后向下拖拽填充柄,即可看到图5所示的转换效果。
1501575828844713.jpg
|