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

数据:


数据

转置后结果:

结果

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容