还可以用dateserial判断。- Sub Test()
- Dim arr, tmp, rg As Range, csrq
- Dim i As Integer
- For Each rg In Range("d2", [d2].End(4).Address)
- arr = Split(rg.Value, Chr(10))
- For i = 0 To UBound(arr)
- arr(i) = Replace(arr(i), ".", "-")
- tmp = Split(arr(i), " ")
- csrq = CDate(tmp(2)) '出生日期
- tmp(2) = DateDiff("yyyy", csrq, Date)
- If DateSerial(Year(Date), Month(csrq), Day(csrq)) > Date Then tmp(2) = tmp(2) - 1
- arr(i) = Join(tmp, " ")
- Next
- rg.Offset(0, 2) = Join(arr, Chr(10))
- Next
- End Sub
复制代码 |