我有一个访问列,其值包括May,May-June,November,January-February等。
要求就是这样 1)如果只有一个月,我应该创建一个转换,其日期列指向该月的最后一个日期,年份将是当前年份。 例如,5月将是2015年5月30日,1月将是2015年1月31日 2)如果有两个月,则必须采用第二个月,并应实施与第1点相同的逻辑。 例如,5月至6月将是2015年6月31日,1月至2月将是2015年2月28日。
我的第一个偏好是不使用VBA代码。
请帮忙。
答案 0 :(得分:1)
您可以在函数中使用单行代码:
Public Function GetDateFromMonth(ByVal Months As String) As Date
Dim Ultimo As Date
Ultimo = DateAdd("d", -1, DateAdd("m", 1 + UBound(Split(Months, "-")), CDate(Split(Months, "-")(0) & "/1")))
GetDateFromMonth = Ultimo
End Function
答案 1 :(得分:0)
将字符串拆分为" - ",使用第二个月,在该月添加一个以获得下个月,然后在该月的第一天从中减去一个月。例如Jan-Feb:build 3/1/2015然后减去1天以获得2月的最后一天
答案 2 :(得分:0)
制作一个包含月份列表的表格:
MonthName MonthNumber
January 1
February 2
March 3
April 4
May 5
June 6
July 7
August 8
September 9
October 10
November 11
December 12
创建此查询:
SELECT InputData.Months, DateSerial(Year(Date()),[MonthNumber]+1,0) AS ReqdDate
FROM InputData, Months
WHERE (((IIf(InStr([Months],'-')=0,[Months],Mid([Months],InStr([Months],'-')+1)))=[MonthName]));
那就是它。输出如下:
Months ReqdDate
May 31/05/2015
May-June 30/06/2015
November 30/11/2015
January-February 28/02/2015
March 31/03/2015
April-September 30/09/2015
抱歉格式化 - 菜鸟。我在欧盟,所以我的日期对你来说很奇怪,但你明白了。你可以在我确定的时刻让他们成为美国约会对象。您可以在两秒内在代码中使用所需的位。
如果您不喜欢月份编号的查找表,我确定您可以使用某种格式功能将月份名称转换为月份编号。