分解年份并分配值Visual Basic

时间:2014-10-13 23:02:32

标签: excel vba excel-vba

我的数据是根据跨越一段时间内购买的商品数量汇总的。我的数据如下所示:

  

客户编号已售出的产品数量开始日期结束日期

     

1523 6 2006 2008

因此,我想要做的是分析数据,以便分配在该人是客户的整个时间段内销售的产品数量。基本上我试图反向汇总数据以获得单个数据点(我知道它们实际购买产品的时间并不完全准确)。所以在上面的例子中,客户1523在2006年,2007年和2008年都是客户。我想在excel中创建一个Visual Basic宏,它将这些数据删除并重新格式化为以下内容:

  

客户编号销售年份数

     

1523 2 2006

     

1523 2 2007

     

1523 2 2008

1 个答案:

答案 0 :(得分:0)

Sub Tester()

    Dim rw As Range, yrStart As Long, yrEnd As Long
    Dim num, numYr, yr, cust
    Dim rngDest As Range

    Set rngDest = Sheets("sheet2").Range("A2")

    For Each rw In Sheets("Sheet1").Range("A2:D11").Rows
        cust = rw.Cells(1).Value
        num = rw.Cells(2).Value
        yrStart = rw.Cells(3).Value
        yrEnd = rw.Cells(4).Value
        numYr = num / ((yrEnd - yrStart) + 1)

        For yr = yrStart To yrEnd
            rngDest.Resize(1, 3).Value = Array(cust, numYr, yr)
            Set rngDest = rngDest.Offset(1, 0)
        Next yr

    Next rw

End Sub