|
|

楼主 |
发表于 2016-1-17 11:38
|
显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
本帖最后由 weiyingde 于 2016-1-17 13:10 编辑
自行解决,代码如下:
Sub 获取当前日所处学期周次()
Dim zc, rq As Date, rq1 As Date, rq2 As Date, rq3 As Date, rq4 As Date, rq5 As Date, rq6 As Date, rq7 As Date
'附学期起始:
' 期别 学期开头日 学期结束日
' 上学期 阳历9月1 阴历腊月15
' 下学期 阴历正月12 阳历7月1
' 注:阴阳历换算函数见附件: lunar,solar都是自定义函数。
' 阳历转阴历函数lunar,阴历转阳历函数solar
rq = Format(Date, "yyyy-mm-dd")
rq1 = lunar(Date) '阳历对应的阴历日
rq2 = Format(Year(Date) & "/1/12", "yyyy-m-d") '阴历日,下学期的开头第一天
rq3 = Format(Year(Date) & "/7/1", "yyyy-mm-dd") ' 阳历日,下学期的结束的一天
rq4 = CDate(Format(Year(Date) & "/9/1", "yyyy-mm-dd")) ' 阳历日,上学期的开头第一天
rq5 = Format(Year(Date) & "/12/31", "yyyy-mm-dd") '阳历十二月31日
rq6 = Format(Year(Date) & "/1/1", "yyyy-mm-dd") '阳历元旦
rq7 = Format(Year(Date) & "/12/15", "yyyy-m-d") '阴历日,上学期的结束的一天
With WorksheetFunction
If rq >= rq4 And rq <= rq5 Then
zc = .RoundUp(Date / 7, 0) - .RoundUp(rq4 / 7, 0) + 1
ElseIf rq >= rq6 And CDate(rq1) <= CDate(lunar(rq7)) Then
rq4 = CDate(Format(Year(Date) - 1 & "/9/1", "yyyy-mm-dd"))
zc = .RoundUp(Date / 7, 0) - .RoundUp(rq4 / 7, 0) + 1
ElseIf CDate(rq1) >= CDate(lunar(rq2)) And rq <= rq3 Then
zc = .RoundUp(Date / 7, 0) - .RoundUp(Val(solar(Format(Year(Date) & "/1/12", "yyyy-m-d"))) / 7, 0) + 1
End If
End With
End Sub
|
|