基于另一个列日期的新列值

时间:2015-02-11 07:32:39

标签: excel vba excel-vba

我需要一些指导。我有一组数据。在A栏中,有一些日期是2015年1月1日至2015年12月31日。我想要实现的是创建一个新列并根据日期填充它。

例如,如果列A行1的日期为01/16/2015,则新列的值为" Jan-15" 。基本上,如果日期介于2015年1月16日和2015年2月15日之间,那么它将具有" Jan-15"的值。如果它介于2015年2月16日和2015年3月15日之间,它将具有" 2月15日和#34 ;.

这就是我现在所拥有的。问题是;新列中没有值输入。只是一个带标题的空白列。

Sub Month() 
    Dim Found As Range 
    Dim LR As Long 
    Dim ws As Worksheet 
    Dim cell As Range 
    Dim a As Variant, v As Variant, num 
    Set ws = Sheets("PAYABLES - OUTFLOWS") 
    Set Found = ws.Rows(1).Find(What:="Due Date", _ 
    LookIn:=xlValues, lookat:=xlWhole) 
    If Found Is Nothing Then Exit Sub 
    a = [{"#01/18/2015", Jan; "#01/19/2015", Jan; "#01/20/2015", Jan}] 
    LR = ws.Cells(ws.Rows.Count, Found.Column).End(xlUp).Row 
    Found.Offset(0, 2).EntireColumn.Insert 
    ws.Cells(1, Found.Column + 2).Value = "Month" 


    For Each cell In ws.Range(ws.Range("A2"), ws.Cells(LR, 3)) 

        v = Application.VLookup(cell.Value, a, 2, False) 
        cell.EntireRow.Cells(Found.Column + 2).Value = IIf(IsError(v), "", v) 
    Next cell 

End Sub 

1 个答案:

答案 0 :(得分:0)

假设您的日期位于A1:A3,这可能对您有用:

Sub GetMonth()
    Dim dates As Range, dt As Range

    Set dates = Range("A1:A3")

    For Each dt In dates

        If VBA.DatePart("d", dt) < 16 Then
            dt.Offset(0, 1) = dt
        Else
            dt.Offset(0, 1) = VBA.DateAdd("m", 1, dt)
        End If

        dt.Offset(0, 1).NumberFormat = "mmm-yy"

    Next dt
End Sub