数据:
数据
转置后结果:
结果
Sub 数据转置()
Dim arr, LastRow&, LastCol&, brr(1 To 66666, 1 To 5)
Dim k&, Zone$, City$, i&, j&
With Sheets("销量")
LastRow = .Cells(Rows.Count, 4).End(xlUp).Row
LastCol = .Cells(14, Columns.Count).End(xlToLeft).Column
arr = .Range(.Cells(13, 2), .Cells(LastRow, LastCol)).Value '原始数据
End With
For i = 3 To UBound(arr) '遍历原始数据(行方向)
If arr(i, 1) <> "" Then Zone = arr(i, 1) '区域
If arr(i, 2) <> "" Then City = arr(i, 2) '城市
For j = 4 To UBound(arr, 2) '遍历每个日期
k = k + 1 '计数
brr(k, 1) = Zone
brr(k, 2) = City
brr(k, 3) = arr(i, 3) '门店
brr(k, 4) = arr(2, j) '日期
brr(k, 5) = arr(i, j) '日申请量
Next
Next
With Sheets("转置数据") '//输出数据
.UsedRange.Offset(1, 0).ClearContents '//清空工作表
.Range("a2").Resize(k, 5) = brr
End With
End Sub
对于合并单元格的处理,只需要将合并单元格区域中的第一个单元格(也就是有数据的)放入一个变量当中,同时余下的单元格如果是空,就读取变量即可。
示例文件下载:
链接: http://pan.baidu.com/s/1c1HVIzY 密码: dpd3