EXCEL-VBA带合并单元格的数据转置

数据:


EXCEL-VBA带合并单元格的数据转置_第1张图片
数据

转置后结果:

EXCEL-VBA带合并单元格的数据转置_第2张图片
结果

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

你可能感兴趣的:(EXCEL-VBA带合并单元格的数据转置)