基于另一列日期的新列值
问题描述:
我需要一些指导。我有一组数据。在A列中,有从2015年1月1日至2015年12月31日的日期。我想要实现的是创建一个新列,并根据日期填充值。基于另一列日期的新列值
例如,如果列A行1的日期为01/16/2015,则新列的值将为“Jan-15”。基本上,如果日期在2015年1月16日至2015年2月15日之间,则将具有“1月15日”的值。如果在2015年2月16日至2015年3月15日之间,价格将为“2月15日”。
这就是我现在所拥有的。问题是;没有值输入到新列中。只是一个带有标题的空白列。
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
答
假设你的日期是在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
嘿!非常感谢。它像一个魅力。但是,如果我希望它是“2015年2月15日”而不是2015年2月15日? – 2015-02-11 08:21:50
可以使用格式化单元格>自定义> mmm-yy格式化整列或使用VBA中的格式化功能。 – 2015-02-11 10:38:16
更新后的代码 - 看看现在是否适合您 – 2015-02-11 11:00:16